Foros del Web » Programando para Internet » PHP »

Sistema de referidos

Estas en el tema de Sistema de referidos en el foro de PHP en Foros del Web. Buenas compañeros, Me gustaria crear en mi sitio web un sistema de referidos. Es decir, que a traves de un formulario en mi web, quien ...
  #1 (permalink)  
Antiguo 28/02/2008, 08:09
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Sistema de referidos

Buenas compañeros,

Me gustaria crear en mi sitio web un sistema de referidos.

Es decir, que a traves de un formulario en mi web, quien quisiera se puediera "afiliar" y poner el vinculo que yo le proporcionase en su web.

Y yo desde mi web saber si recibo visitas a traves el link que yo le he proporcionado. Y así recompensarle de alguna forma.

Como podría hacer este sistema?

Se que existe el HTTP_REFERER pero como puedo hacerlo?

Se agradecen las sugerencias

Saludos
  #2 (permalink)  
Antiguo 28/02/2008, 08:59
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Sistema de referidos

Haber, si usamos un poco los buscadores...

http://www.forosdelweb.com/f18/ayuda...eridos-535780/

Saludos!
  #3 (permalink)  
Antiguo 28/02/2008, 10:31
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: Sistema de referidos

Cita:
Iniciado por okram Ver Mensaje
Haber, si usamos un poco los buscadores...

http://www.forosdelweb.com/f18/ayuda...eridos-535780/

Saludos!
Si vengo de ese hilo, pero aun no he conseguido que sea lo suficientemente "robusta".

Código PHP:
<?php
//conexion
$ref $_SERVER['HTTP_REFERER'] ;
$web str_replace("http://",""$ref); 
$web str_replace("www.",""$web); 
$tmp explode('/'$web);
$tmp2 $tmp[0];

$result mysql_query("SELECT * FROM ref WHERE web like '$tmp2'");
if(
mysql_num_rows($result)==0)
      {
mysql_query("INSERT INTO ref (web, visitas) VALUES ('$tmp2', '1')");
      }else{
mysql_query("UPDATE ref SET visitas = visitas+1 WHERE web like '$tmp2'") ;  }
  
?>
Ya que haciendo pruebas si le pongo esta dirección
http://www.midominiowww.com/company/04/56/

El resultado es 'midominiocom' cuando deberia ser 'midominiowww.com'

Gracias
  #4 (permalink)  
Antiguo 28/02/2008, 10:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Sistema de referidos

Yo lo usaría así:
Código PHP:
$ref parse_url$_SERVER['HTTP_REFERER'] ):
$dominio $ref['host'];

$result mysql_query("SELECT * FROM ref WHERE web like '$dominio'");
if(
mysql_num_rows($result)==0)
      {
mysql_query("INSERT INTO ref (web, visitas) VALUES ('$dominio', '1')");
      }else{
mysql_query("UPDATE ref SET visitas = visitas+1 WHERE web like '$dominio'") ;  }
  
?> 
Saludos.
  #5 (permalink)  
Antiguo 28/02/2008, 10:52
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: Sistema de referidos

Cita:
Iniciado por GatorV Ver Mensaje
Yo lo usaría así:
Código PHP:
$ref parse_url$_SERVER['HTTP_REFERER'] ):
$dominio $ref['host'];

$result mysql_query("SELECT * FROM ref WHERE web like '$dominio'");
if(
mysql_num_rows($result)==0)
      {
mysql_query("INSERT INTO ref (web, visitas) VALUES ('$dominio', '1')");
      }else{
mysql_query("UPDATE ref SET visitas = visitas+1 WHERE web like '$dominio'") ;  }
  
?> 
Saludos.
Esta muy bien, pero te coge las www. del principio.

Imagina que un afiliado tuyo en su pagina no tiene www.afiliado.com, sino que es http://afiliado.com
En ese caso te cogeria afiliado.com, y tendrias 2 distintas.

La solucion pasa por una vez conseguida el host de esa forma que expones, tratar el host y si empiza por www. quitarselas, pero teniendo cuidado y que no estropee una direccion del tipo...

http://www.midominiowww.com/company/04/56/

Deberia quedar bien: 'midominiowww.com'
  #6 (permalink)  
Antiguo 28/02/2008, 10:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Sistema de referidos

Código PHP:
$dominio $ref['host'];
if( 
stripos$dominio"www." ) === ) {
        
$dominio substr$dominio);

Saludos.
  #7 (permalink)  
Antiguo 28/02/2008, 11:17
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: Sistema de referidos

Cita:
Iniciado por GatorV Ver Mensaje
Código PHP:
$dominio $ref['host'];
if( 
stripos$dominio"www." ) === ) {
        
$dominio substr$dominio);

Saludos.
Que crack!

Supongo que seran dos == en lugar de 3 aunque funciona igual.

Y en lugar de susbstraer 3, son 4 caracteres, para que desaparezca el punto.

Pero síiiiiiiii era eso lo que estaba buscando weeeeeeeeeeeee :D:D:D

Muchas gracias de nuevo GartorV!
  #8 (permalink)  
Antiguo 28/02/2008, 11:35
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Sistema de referidos

Cita:
Iniciado por neodani Ver Mensaje
Supongo que seran dos == en lugar de 3 aunque funciona igual.
No, debes usar 3 [===]. Verás, el operador == sirve para evaluar si dos variables tienen el mismo valor. El operador === verifica además el tipo. Prueba esto:

Código PHP:
echo '<pre>';
 
if ( 
false == ) {
    echo 
"La condición ( false == 0 ) devuelve <b>true</b>";
} else {
    echo 
"La condición ( false == 0 ) devuelve <b>false</b>";
}
 
echo 
"\n";
 
if ( 
false === ) {
    echo 
"La condición ( false === 0 ) devuelve <b>true</b>";
} else {
    echo 
"La condición ( false === 0 ) devuelve <b>false</b>";
}
 
echo 
'</pre>'
Esto imprime:
Cita:
La condición ( false == 0 ) devuelve true
La condición ( false === 0 ) devuelve false
La función stripos() devolverá false si no encuentra el caracter o caracteres buscado(s). Y en este caso la función devolverá 0, que significa "si encontré lo que buscas, y está en la posición inicial 0". Para diferenciarlos debes usar el operador === y no ==
Cita:
Iniciado por PHP.net/stripos
Si aguja no se encuentra, stripos() devolverá el valor boolean FALSE.

Warning

Esta función puede devolver FALSE, pero también puede devolver un valor no-booleano que será evaluado FALSE, como por ejemplo 0 o "". Por favor, lea la sección Booleans para más información. Utilice el operador === para comprobar el valor devuelto por esta función.
Léete estos links:

PHP: Tipos
PHP: Operadores de Comparación
PHP: stripos

Saludos,

Última edición por okram; 28/02/2008 a las 11:51
  #9 (permalink)  
Antiguo 28/02/2008, 11:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Sistema de referidos

No, deben forzosamente ser 3 signos de =, ya que stripos puede devolver false, con lo que si comparas con 0 (puede evaluar a false), con 3 signos de igual evaluamos que sean igual y del mismo tipo.

En substr, el segundo parámetro es el lugar de inicio para la extracción, y debe de ser el 4 para que no te regrese el string con un punto inicial.

Saludos.
  #10 (permalink)  
Antiguo 28/02/2008, 11:37
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: Sistema de referidos

Cita:
Iniciado por okram Ver Mensaje
No, debes usar false. Verás, el operador == sirve para evaluar si dos variables tienen el mismo valor. El operador === verifica además el tipo. Prueba esto:

Código PHP:
echo '<pre>';
 
if ( 
false == ) {
    echo 
"La condición ( false == 0 ) devuelve <b>true</b>";
} else {
    echo 
"La condición ( false == 0 ) devuelve <b>false</b>";
}
 
echo 
"\n";
 
if ( 
false === ) {
    echo 
"La condición ( false === 0 ) devuelve <b>true</b>";
} else {
    echo 
"La condición ( false === 0 ) devuelve <b>false</b>";
}
 
echo 
'</pre>'
Esto imprime:

La función stripos() devolverá false si no encuentra el caracter o caracteres buscado(s). Y en este caso la función devolverá 0, que significa "si encontré lo que buscas, y está en la posición inicial 0". Para diferenciarlos debes usar el operador === y no ==


Léete estos links:

PHP: Tipos
PHP: Operadores de Comparación
PHP: stripos

Saludos,
Ostras!!, gracias okram

Si es que es muy grande el mundo de PHP!! cada día se aprende cosas nuevas!
  #11 (permalink)  
Antiguo 28/02/2008, 13:54
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: Sistema de referidos

Una pregunta más,

Puedo saber de alguna forma el tiempo que pasa el usuario referido en mi pagina?

Porque es muy facil "falsear" esas visitas, ya que pueden venir 100 seguidas. En cambio... si pasase mas de 5 min, en la pagina pues ya es algo... aunque de todas formas hacer un script de este tipo es muy facil de romper...

Que sistema utilizaríais para controlar ese "falseo" de paginas referidas?

A mi se me ocurre, guardar la fecha y la hora del acceso... pero tampoco gano mucho con eso.

Alguna sugerencia?

PD: Quizá guardar la IP?

Gracias de nuevo
  #12 (permalink)  
Antiguo 28/02/2008, 14:00
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Sistema de referidos

Guardar la ip junto con la fecha y hora. Así, periódica y manualmente, evaluas las visitas de cada sitio. Como tú lo has dicho, no hay sistema no vulnerable, así que tu raciocinio será el mejor juez.
  #13 (permalink)  
Antiguo 28/02/2008, 15:32
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: Sistema de referidos

Cita:
Iniciado por okram Ver Mensaje
Guardar la ip junto con la fecha y hora. Así, periódica y manualmente, evaluas las visitas de cada sitio. Como tú lo has dicho, no hay sistema no vulnerable, así que tu raciocinio será el mejor juez.
Pero estaba pensando... entonces ya no es un registro por cada afiliado...

Si no que sería un registro por cada solicitud a la pagina!

Esto podría tener una magnitud enorme si existen 10 afiliados y cada afiliado me envia mas de 1.000 enlaces por dia... seria 10.000 registros diarios, al cabo del mes mas de 300.000 registros...

No hay otra solucion no? un registro por cada vez que se conecten... y como mucho pienso que se podria ir haciendo unas estadisticas globales por ejemplo de cada mes, y que se acumulen en un solo registro por afiliado, y asi tener via libre para borrar los demás y liberar espacio...

Es muy rebuscado? o creeis que seria lo mas correcto?

Entonces como se las arreglan la gente que tiene el sistema de afiliados...????

Saludos
  #14 (permalink)  
Antiguo 28/02/2008, 19:29
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Sistema de referidos

Es que así funcionan los sistemas de afiliados. Si sólo fuera un registro único, no quedaría constancia de con qué frecuencia ni de donde se realizaron las referencias, no se podría hacer estadísticas de ningún tipo, ni nada.

Ahora, si no deseas sobrecargar tu servidor MySQL con tantos registros, también puedes usar archivos de texto para guardar cada visita. Un archivo por cada afiliado. Depende de lo que tu servidor te ofrezca

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:43.