Foros del Web » Programando para Internet » PHP »

Saber de Donde "Viene" la Pagina ???

Estas en el tema de Saber de Donde "Viene" la Pagina ??? en el foro de PHP en Foros del Web. Que tal Maestros, Tengo varias páginas que luego de que ejecutan sus formularios (Inserción, Actualización de Ragistros) van por ejemplo a otra página, llamada acciones.php ...
  #1 (permalink)  
Antiguo 21/12/2005, 08:30
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 11 meses
Puntos: 4
Saber de Donde "Viene" la Pagina ???

Que tal Maestros,

Tengo varias páginas que luego de que ejecutan sus formularios (Inserción, Actualización de Ragistros) van por ejemplo a otra página, llamada acciones.php


Y lo hago así:

Código PHP:
header("acciones.php"); 
Lo que quiero hacer es colocar un código en acciones con condicionales, que ejecute una u otras instrucciones si acciones.php es llamado por insercion.php ó actualización.php

Se puede hacer esto?

Es decir una página puede "reconocer el nombre" de donde es llamada?

Gracias de antemano.
__________________
EL LIMITE ES EL UNIVERSO
  #2 (permalink)  
Antiguo 21/12/2005, 08:46
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
No se si sea lo que entiendo que es (Ok, doy mi respuesta y no me disculpo mas:P).
Podes en cada page que quieras "marcar" hacer algo como:
$_SESSION['history'] = $_SERVER['PHP_SELF'] ;
O con su Query String:
$_SESSION['history'] = $_SERVER['PHP_SELF'] . ( isset($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : '' ) ;

Y luego tendrás en esa session donde fue que estuvo antes de las pages marcadas por ultima vez.
Para esto deberás iniciar session (session_start() y sus configs). Sino puede usar una cookie.
Luego haces la computación que quieras en acciones.php sobre esta session/cookie. Espero que sea de ayuda.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 21/12/2005, 08:46
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
Haciendo

$url=$_SERVER['REFERER'];

$url toma el valor de la página de origen de la petición al script.

Lo puedes consultar en:
http://es.php.net/reserved.variables

Saludos
  #4 (permalink)  
Antiguo 21/12/2005, 08:55
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
El tema es que REFERER le puede dar la page que guarda y no la que el quiere...si no tiene page intermedia si le servira ;)
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 21/12/2005, 08:55
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 11 meses
Puntos: 4
Que tal, sobre esto último..........Tomará el valor de la ruta? o del nombre de la página................en el link no encuentro lo que refieres...


Gracias.
__________________
EL LIMITE ES EL UNIVERSO
  #6 (permalink)  
Antiguo 21/12/2005, 09:00
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
PHP:
Cita:
'HTTP_REFERER'
La dirección de la página (si la hay) la cual refirió al agente de usuario a la página actual. Este valor es definido por el agente de usuario. No todos los agentes de usuario lo definen, y algunos proveen la capacidad de modificar HTTP_REFERER como una característica del software. En resumen, no se puede confiar realmente en este valor.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 21/12/2005, 09:48
 
Fecha de Ingreso: agosto-2005
Mensajes: 109
Antigüedad: 19 años, 2 meses
Puntos: 0
Código PHP:
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
    
$refer strtolower$_SERVER['HTTP_REFERER'] );
    switch( 
$refer ) {
        case 
'uno.com':
            ;        
// hacer algo
            
break;
        case 
'dos.com':
            ;        
// hacer algo
            
break;
        case 
'tres.com':
            ;        
// hacer algo
            
break;
        default:
            ;        
// hacer algo
            
break
    }
}
else {
    ;        
// hacer algo

  #8 (permalink)  
Antiguo 21/12/2005, 10:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Al igual que nicolaspar, por mi parte también insisto en el tema de que HTTP_REFERER no es un dato válido para fiarse e implementar sistemas de seguridad o útilidad a la aplicación basado en el.

Vale la pena tomar el valor de PHP_SELF .. dejarlo en una cookie o sesión (y a malas propagarlo por el URL si se trata sólo de una funcionalidad para la aplicación . .no algo de seguridad crítica) y leerlo en el script de proceso que tenga que devolver el proceso a ese punto de inicio que ya registramos en una cookie, sesión o fuimos propagando por el URL.

Un saludo,
  #9 (permalink)  
Antiguo 21/12/2005, 11:31
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola:

No había prestado demasiada atención a la posibilidad de que el 'agente de usuario' no defina o modifique HTTP_REFERER.
Una aclaración sobre esto: El 'agente usuario' imagino que debe ser quien utiliza el script, con su máquina y su configuración. ¿Es así?.

Otra cuestión: Entiendo que utilizar $_SERVER['PHP_SELF'] ; debe ser en todos los casos seguro ya que es una construcción propia e interna del script y por tanto independiente de quien y cómo se solicite. ¿Es así?.

Gracias por vuestras aclaraciones. El tema me interesa porque estoy usando REFERER para un script de recomendación de página. Realmente, la solución que indica Cluster es más segura. (Perdona NICOLASPAR, pero la tuya no la comento porque realmente no acabo de entenderla, pero seguro que es buena)

Saludos.
  #10 (permalink)  
Antiguo 21/12/2005, 11:54
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Es la misma. Lo único, que yo pongo como opción el caso de que tengas valores de variables propagados por GET (no se, por decir una web modular), entonces, si tenes:
mipagina.php?var=1&var2=2 leyendo esto usando PHP_SELF obtendrás únicamente mipagina.php perdiendo var=1&var2=2.
La validación luego en acciones.php puede ser con distintas funciones que te ofrece php, depende todo de como implementes primero la variable que propongo "history".

PD: Es la mejor manera a mi entender de mantener eso, un history de donde ha estado el usuario, es mas, yo he implementado esto con niveles de historial ($_SESSION["histpry"][0], $_SESSION["histpry"][1], etc) con excelentes resultados. No obstante, muchas veces usar el simple window.back() de js basta y sobra...todo depende de que necesites realmente, eso deberás evaluarlo vos ;)
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #11 (permalink)  
Antiguo 21/12/2005, 11:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Una aclaración sobre esto: El 'agente usuario' imagino que debe ser quien utiliza el script, con su máquina y su configuración. ¿Es así?.
El "agente" es el programa/aplicación que se conecta a tu servidor HTTP y pide tu script PHP en consecuencia. (Es PHP quien obtiene el dato tras "preguntar" por dicha cabecera HTTP al servidor HTTP).

Un "agente" puede ser un navegador común .. también un gestor de descargas actua como "agente" y son estos por ejemplo los que más juegan con ese dato para "hacerse pasar" por cierto tipo de navegador ...

En otros casos, muchos proxys eliminan la referencia de donde viene referido o que cliente es sutituyendo por cosas como "publicidad" de cierto proxy he visto en log's de "referidos". En este caso es tu "proxy" el que hace de "Agente" en última instancia el cual pasa o no "trasnparente" la información del "agente" de tu navegador de origen.

Por otro lado .. un "script" PHP puede usar funciones de conexión por sockets usando el protocolo HTTP y por ende "hacerse" pasar por cualquier "agente" siempre que se respete el standar del HTTP en la comunicación.

Cita:
Otra cuestión: Entiendo que utilizar $_SERVER['PHP_SELF'] ; debe ser en todos los casos seguro ya que es una construcción propia e interna del script y por tanto independiente de quien y cómo se solicite. ¿Es así?.
Si, .. esa información es PHP quien "pregunta" al sistema (ahí no sé si lo hace al servidor HTTP o no . .pues no sé como se comporta en modo CGI) en que "URI" está ubicado el script que se está ejecutando.

Cita:
Gracias por vuestras aclaraciones. El tema me interesa porque estoy usando REFERER para un script de recomendación de página. Realmente, la solución que indica Cluster es más segura. (Perdona NICOLASPAR, pero la tuya no la comento porque realmente no acabo de entenderla, pero seguro que es buena)
Tan sólo "expliqué" en palabras el ejemplo que puso en código Nicolaspar:
http://www.forosdelweb.com/showpost....18&postcount=2

Él enfocó la solución a uso de sesiones (lo cual es lo más seguro) ..pero la base de esta técnica es lo que comenté y para desarrollarla se pueden usar várias soluciones: sesiones, cookies .. propagación en el URL ..


Un saludo,
  #12 (permalink)  
Antiguo 21/12/2005, 13:15
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
Gracias a todos por vuestras aclaraciones. Como siempre, muy útiles.

Saludos
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:16.