Foros del Web » Programando para Internet » PHP »

Referers y SID

Estas en el tema de Referers y SID en el foro de PHP en Foros del Web. basandome en un script de php y mysql que lo que hace es guardar los referers que tengo en mi web quiero hacer lo siguiente ...
  #1 (permalink)  
Antiguo 03/04/2004, 19:23
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
Referers y SID

basandome en un script de php y mysql que lo que hace es guardar los referers que tengo en mi web quiero hacer lo siguiente

Código PHP:
<? 
$dbhost 
"localhost"//host de MySQL 
$dbuser "php"//usuario de MySQL 
$dbpass "xxx"//contraseña de MySQL 
$dbdb "midb"//nombre de la base de datos  
$conx mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db($dbdb,$conx); 

if (!
eregi($HTTP_HOST,$HTTP_REFERER)) { //esto es para que no cuente como referer nuestra propia pagina, cuando navegamos por ella 
    
if ($HTTP_REFERER) { //si hay algun referer... 
        //buscamos algun referer como el que nos ha llegado 
        
$query "select * from referers where referer='$HTTP_REFERER'"$resp mysql_query($query); $datos mysql_fetch_array($resp); 
        
//si no hay ninguno, si es la primera vez que llega... lo insertamos 
        
if (mysql_num_rows($resp) == 0) { $query "insert into referers (referer, veces) values ('$HTTP_REFERER', '1')"mysql_query($query); } 
        
//si ya existe, actualizamos los datos, incrementando en 1 el valor que ya habia 
        
else { $query "UPDATE referers SET veces=$datos[veces]+1 WHERE referer='$HTTP_REFERER'"mysql_query($query); } 
    } 

?>
Quiero que evitar que se guarde el SID

pues los referers me los guarda asi

http://www.iznetworks.com/~tagboard/TribunaLibre/tag.php?id=&PHPSESSID=b5b9d3c80674b9753c433203a361 6d72
como haria para que solo me guarde

http://www.iznetworks.com/~tagboard/TribunaLibre/tag.php
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #2 (permalink)  
Antiguo 04/04/2004, 15:30
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
Alguna idea que funcion debo usar o que me sugieren :S
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #3 (permalink)  
Antiguo 04/04/2004, 15:49
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 22 años, 3 meses
Puntos: 1
Revisa sobre el uso de explode() para separar el url del query string.
Eso te deberia servir.
  #4 (permalink)  
Antiguo 04/04/2004, 19:45
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
Código PHP:
<? 
$dbhost 
"localhost"//host de MySQL 
$dbuser "php"//usuario de MySQL 
$dbpass "xxx"//contraseña de MySQL 
$dbdb "xxxx"//nombre de la base de datos 
$titulo "xxxxx"
$conx mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db($dbdb,$conx); 

if (!
eregi($HTTP_HOST,$HTTP_REFERER)) { //esto es para que no cuente como referer nuestra propia pagina, cuando navegamos por ella 
    
if ($HTTP_REFERER) { //si hay algun referer... 
        //buscamos algun referer como el que nos ha llegado 
    
$trozar explode("id=&PHPSESSID="$HTTP_REFERER);
    
$nuevo_referer $HTTP_REFERER[0];
        
$query "select * from referers where referer='$nuevo_referer'"$resp mysql_query($query); $datos mysql_fetch_array($resp); 
        
//si no hay ninguno, si es la primera vez que llega... lo insertamos 
        
if (mysql_num_rows($resp) == 0) { $query "insert into referers (referer, veces) values ('$nuevo_referer', '1')"mysql_query($query); } 
        
//si ya existe, actualizamos los datos, incrementando en 1 el valor que ya habia 
        
else { $query "UPDATE referers SET veces=$datos[veces]+1 WHERE referer='$nuevo_referer'"mysql_query($query); } 
    } 

?>
ahora solo me muestra h en mi tabla de referers que estoy haciendo mal ?
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 11/04/2004 a las 18:35
  #5 (permalink)  
Antiguo 04/04/2004, 20:45
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Hombre... haz esto.

Explota la cadena que contiene a la URL con la función explode(). Si ninguna de las URL que vas a almacenar contiene variables entonces puedes explotarla por los ?:

Código PHP:
$str explode('?',$_SERVER['HTTP_REFERER']);
$sinSID $str[0]; 
Saludos!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #6 (permalink)  
Antiguo 04/04/2004, 20:47
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Se me olvidada, luego haces el INSERT asi:

Código PHP:
INSERT into referers (referervecesvalues ('$sinSID''1'........ 
Saludos!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #7 (permalink)  
Antiguo 04/04/2004, 21:04
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
No quiero usar el explode a partir del ? porque me sale error usando id=&PHPSESSID=

a que se debe?
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #8 (permalink)  
Antiguo 04/04/2004, 21:13
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Error...?

Hombre, si yo lo probé y corta la cadena perfectamente después del ?. El code te queda asi:

Código PHP:
<? 
$dbhost 
"localhost"//host de MySQL 
$dbuser "php"//usuario de MySQL 
$dbpass "ciber"//contraseña de MySQL 
$dbdb "gerald"//nombre de la base de datos 
$titulo "G2project"
$conx mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db($dbdb,$conx); 

if (!
eregi($HTTP_HOST,$HTTP_REFERER)) { //esto es para que no cuente como referer nuestra propia pagina, cuando navegamos por ella 
    
if ($HTTP_REFERER) { //si hay algun referer... 
        //buscamos algun referer como el que nos ha llegado 
      
$str explode('?',$_SERVER[HTTP_REFERER]);
      
$sinSID $str[0];
        
$query "SELECT * FROM referers WHERE referer='$nuevo_referer'"$resp mysql_query($query); $datos mysql_fetch_array($resp); 
        
//si no hay ninguno, si es la primera vez que llega... lo insertamos 
        
if (mysql_num_rows($resp) == 0) { $query "INSERT INTO referers (referer, veces) VALUES ('$sinSID', '1')"mysql_query($query); } 
        
//si ya existe, actualizamos los datos, incrementando en 1 el valor que ya habia 
        
else { $query "UPDATE referers SET veces=$datos[veces]+1 WHERE referer='$sinSID"mysql_query($query); } 
    } 

?>
Eso es todo. Pruébalo.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #9 (permalink)  
Antiguo 04/04/2004, 21:18
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
Si ya funciono gracias...

Creo que me entendiste mal, yo quiero en vez de usar el ?, usar el id=&PHPSESSID= , ya que hay referers asi www.web.com?pag=blabla ...

Algunas vienen con el SID y eso es lo que quiero evitar

antes me guardaba en la BD h

pero bueno son los misterios seguire probando y te contare como me va!!
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #10 (permalink)  
Antiguo 04/04/2004, 21:30
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
Código PHP:
<? 
$dbhost 
"localhost"//host de MySQL 
$dbuser "php"//usuario de MySQL 
$dbpass "xxx"//contraseña de MySQL 
$dbdb "xxxx"//nombre de la base de datos 
$titulo "xxxx"
$conx mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db($dbdb,$conx); 

if (!
eregi($HTTP_HOST,$HTTP_REFERER)) { //esto es para que no cuente como referer nuestra propia pagina, cuando navegamos por ella 
    
if ($HTTP_REFERER) { //si hay algun referer... 
        //buscamos algun referer como el que nos ha llegado 
    
$trozar explode('id=&PHPSESSID='$HTTP_REFERER); //lo cambia ya que antes la tenia asi "id=&PHPSESSID=" 
    
$nuevo_referer $HTTP_REFERER[0];
        
$query "select * from referers where referer='$nuevo_referer'"$resp mysql_query($query); $datos mysql_fetch_array($resp); 
        
//si no hay ninguno, si es la primera vez que llega... lo insertamos 
        
if (mysql_num_rows($resp) == 0) { $query "insert into referers (referer, veces) values ('$nuevo_referer', '1')"mysql_query($query); } 
        
//si ya existe, actualizamos los datos, incrementando en 1 el valor que ya habia 
        
else { $query "UPDATE referers SET veces=$datos[veces]+1 WHERE referer='$nuevo_referer'"mysql_query($query); } 
    } 

?>
el problema estaba que en que yo usaba " y es '
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 11/04/2004 a las 18:37
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 11:36.