Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/12/2003, 16:52
Abc7
 
Fecha de Ingreso: marzo-2003
Ubicación: Argentina
Mensajes: 49
Antigüedad: 21 años, 1 mes
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