Foros del Web » Programando para Internet » PHP »

HTTP_REFERER por sesiones

Estas en el tema de HTTP_REFERER por sesiones en el foro de PHP en Foros del Web. Buenas amigos, releyendo el manual de PHP, ví que decía que la variable HTTP_REFERER podía ser alterada por algunos navegadores y que no era de ...
  #1 (permalink)  
Antiguo 14/12/2003, 16:52
 
Fecha de Ingreso: marzo-2003
Ubicación: Argentina
Mensajes: 49
Antigüedad: 14 años, 8 meses
Puntos: 0
HTTP_REFERER por sesiones

Buenas amigos, releyendo el manual de PHP, ví que decía que la variable HTTP_REFERER podía ser alterada por algunos navegadores y que no era de mucho fiar, así que contruí este código para que, vía sesiones, devuelva la página anterior de la página actual.
No se si alguien lo habrá hecho ya, si ése es el caso, que un Moderador o Administrador se encargue de borrar el mensaje.

Código PHP:
//>>> HTTP_REFERER >>>
if (!session_is_registered("reff"))
{
    
session_register("reff");
    
$reff[is] = 0;
}

if (
$reff[is] === 0)
{
    
$reff[url1] = $PHP_SELF;
    
$reff[url] = $reff[url2];
    
$reff[is] = 1;
}
else
{
    
$reff[url2] = $PHP_SELF;
    
$reff[url] = $reff[url1];
    
$reff[is] = 0;
}

if (
$reff[url])
    
$reff[url] = $path[web]."/".basename($reff[url]);
else
    
$reff[url] = "index.php"
Explico un poco:
Lo que hace es primero crear la variable de sesión $reff. Luego le asigna el valor de 0 a su key 'is'. Despues en las comprobaciones, comprueba si $reff[is] es un entero 0, y si ese es el caso, pone en $reff[url1] la pagina actual, copia el valor de $reff[url2] en $reff[url] (como recien se crea la sesion, es NULL) y pone $reff[is] a 1 (para que realize luego el proceso inverso).
Cuando se va a otra página, $reff[is] va a estar en 1 y $reff[url1] va a contener la pagina anterior. Lo que se hace ahora es copiar PHP_SELF en $reff[url2], luego se pone en $reff[url] el valor de $reff[url1] (que es la pagina anterior), y se vuelve a poner $reff[is] en 0.
Cuando se ejecute de nuevo el paso para "$reff[is] === 0", ésta vez $reff[url2] no va a ser NULL, sino que va a tener como valor la página anterior.

Despues viene unas cosas que son cuestiones estéticas mas que nada, y se pueden obviar. Lo que hace es que si existe $reff[url] (si hay una pagina anterior) en vez de salirnos "/web/news.php", salga "news.php", y en caso contrario (si es la primera pagina vista en el sitio) que el valor de la página anterior se "index.php".

Espero que les haya servido, camaradas!!

PD: me olvide de aclarar que el código tiene que estar en todas las páginas para que funcione!! es por eso que yo lo pongo en mi .inc
PD2: el código por ahora solo funciona con paginas de la misma carpeta, asi que van a tener que meter todos sus PHPs en la misma carpeta.

Última edición por Abc7; 14/12/2003 a las 16:57
  #2 (permalink)  
Antiguo 14/12/2003, 18:41
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 6 meses
Puntos: 2
sabes lo que podias hacer,..,,. meterlo en una funcion para que su uso sea mas correcto... y practico.,.. ademas le puedes añadir unas cuantas funciones mas.., para que devuelva datos impresos...

pd: es muy interesante la construccion del script.
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 14/12/2003 a las 18:43
  #3 (permalink)  
Antiguo 14/12/2003, 18:48
 
Fecha de Ingreso: marzo-2003
Ubicación: Argentina
Mensajes: 49
Antigüedad: 14 años, 8 meses
Puntos: 0
Ajam bueno, lo hize hoy porque tenía un tiempito. Cuando lo vuelva a tener, lo pongo en una funcion.

No entiendo a que te referis con datos impresos.

Saludos y gracias
  #4 (permalink)  
Antiguo 14/12/2003, 18:53
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 6 meses
Puntos: 2
na dejalo... ni yo se lo que digo aveces
__________________
3w.valenciadjs.com
3w.laislatv.com
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 20:20.