Foros del Web » Programando para Internet » PHP »

Redireccion y conteo...

Estas en el tema de Redireccion y conteo... en el foro de PHP en Foros del Web. Saludos amigos: Tengo un problema. Quiero hacer una página de redirección, pero que me guarde las estadisticas de paso (de donde proviene). Esto se lo ...
  #1 (permalink)  
Antiguo 01/06/2005, 02:31
 
Fecha de Ingreso: enero-2005
Mensajes: 14
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta Redireccion y conteo...

Saludos amigos:

Tengo un problema. Quiero hacer una página de redirección, pero que me guarde las estadisticas de paso (de donde proviene). Esto se lo paso mediante la dirección. Tengo la página redirect.php y a esta le paso el parametro "from=userX". Tengo una base de datos en la que no existen los usuarios ( campo "user_stat" ), los debe crear la primera vez que entra alguien, y en la que además se guardan las veces que pasa cada uno ( campo "clicks_stat" ).

El problema viene, que al meter código antes del redireccionador, la página se me queda en blanco y no redirecciona. solo tengo codigo php en la página.

Os paso el código a ver que me decis:

Código PHP:
$redirecciona="http://hosting.conexionfutura.com/";

$servidor="XXX";
$usuario="XXX";
$passwd="XXX";
$connect1=@mysql_connect($servidor,$usuario,$passwd);
@
mysql_select_db("mibase",$connect1);
if ( !
$connect1 )
    echo 
"no se puede conectar";

$cons_sent="select * from mibase where user_stat = '".$_GET['from']."' limit 1";
$cons_res=mysql_query($cons_sent) or die(mysql_error());
$cons=mysql_fetch_array($cons_res) or die(mysql_error());
if ( ! 
$cons['user_stat'] )
{
    
$crear_sent="insert into mibase ( user_stat ) values ( '".$_GET['from']."' ) ";
    
mysql_query($crear_sent) or die(mysql_error());
    
$visitas=1;
}
else
{
    
$visitas=$cons['clicks_stat']+1;
}

$aum_sent="update mibase set clicks_stat = ".$visitas." where user_stat = '".$_GET['from']."' limit 1";
mysql_query($aum_sent) or die(mysql_error());

header ("Location: ".$redirecciona); 

Cuando ejecuto por ejemplo "redirect.php?from=user2" la página se me queda en blanco y no redirecciona. Solo me funciona (y no siempre) con el primer usuario que metí que es user1, se creó y eso bien en la base, pero los demás nada...

Tampoco es por el header, ya que si pongo en vez de eso un simple echo "hola"; no me lo imprime tampoco.

A ver si me pueden ayudar

Saludos

Miguel M.
  #2 (permalink)  
Antiguo 01/06/2005, 06:51
Avatar de gustavoang  
Fecha de Ingreso: julio-2003
Ubicación: Valencia - Venezuela
Mensajes: 253
Antigüedad: 20 años, 8 meses
Puntos: 1
Hola.

Lo primero que te puedo decir es que nunca debes hacer una consulta SQL incluyendo datos que han venido directamente de la computadora de un usuario porque una persona malintencionada podría obtener acceso a tu base de datos. Me explico:

No debes hacer ésto:
Código PHP:
$cons_sent="select * from mibase where user_stat = '".$_GET['from']."' limit 1"
Pero si puedes hacer esto:
Código PHP:
$cons_sent="select * from mibase where user_stat = '".AddSlashes($_GET['from'])."' limit 1"


Lo único que tienes que hacer es colocarle la función AddSlashes() al dato que vayas a usar en la consulta SQL. Si quieres más información acerca de la función AddSlashes(), te recomiendo www.php.net/AddSlashes

-----------------------------------------------

Ahora sí, respondiendo tu pregunta:

Me parece que el problema es que, en las consultas SQL, no haces referencia a ninguna tabla en la base de datos... Fíjate que sólo nombras a la base de datos y luego al campo. Me explico:

Código PHP:
$cons_sent="select * from mibase where user_stat = '".$_GET['from']."' limit 1"

¿De qué tabla estás seleccionando las filas?

Saludos.
__________________
Gustavo Narea.
Venezuela.
  #3 (permalink)  
Antiguo 01/06/2005, 07:31
 
Fecha de Ingreso: enero-2005
Mensajes: 14
Antigüedad: 19 años, 2 meses
Puntos: 0
Perdon, es que con las prisas, no me di cuenta:

"mibase" es la base de datos. Donde pone "mibase" en las consultas sql, queria poner "mitabla". El problema no es ese.


Ahhh, y muchas gracias por lo de Addslashes, no habia caido, se me olvidó.


Un saludo y a ver si me pueden decir por que puede ser

La verdad es que es raro, porque si fuese problema de las sentencias mysql saldria el mensaje de error, pero lo que pasa es que no hace nada, ni redireccionar ni nada.


Miguel M.
  #4 (permalink)  
Antiguo 01/06/2005, 07:42
Avatar de gustavoang  
Fecha de Ingreso: julio-2003
Ubicación: Valencia - Venezuela
Mensajes: 253
Antigüedad: 20 años, 8 meses
Puntos: 1
Hola.

De verdad revisé varias veces el script y no le encontré el error... Seguro otra persona del foro te podrá ayudar.

Por cierto, te recomiendo que despues de usar la función header() para redireccionar, uses inmediatamente la función exit() para que te asegures de que el script no se sigue ejecutando. Es una buena práctica.

Saludos.
__________________
Gustavo Narea.
Venezuela.
  #5 (permalink)  
Antiguo 01/06/2005, 07:43
 
Fecha de Ingreso: enero-2005
Mensajes: 14
Antigüedad: 19 años, 2 meses
Puntos: 0
Gracias por el nuevo consejo y gracias de nuevo por tu ayuda.

Llevo tiempo en esto del php y la verdad que no le veo nada. Es raro


A ver si alguien más me puede ayudar.


Saludos

Miguel M.
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 05:56.