Foros del Web » Programando para Internet » PHP »

Problemas con HTTP_REFERER en pop-up

Estas en el tema de Problemas con HTTP_REFERER en pop-up en el foro de PHP en Foros del Web. Hola a todos! Seré breve; tengo un problema que se puede simplificar con el siguiente ejemplo: tengo una página "invocadora.php" desde la cual se llama ...
  #1 (permalink)  
Antiguo 01/09/2003, 06:27
 
Fecha de Ingreso: agosto-2003
Mensajes: 12
Antigüedad: 20 años, 8 meses
Puntos: 0
Problemas con HTTP_REFERER en pop-up

Hola a todos!

Seré breve; tengo un problema que se puede simplificar con el siguiente ejemplo: tengo una página "invocadora.php" desde la cual se llama a otra "popup.php" a traves del siguiente código:

Código PHP:
<html>
<
head>
<
title>XXX</title>
<
meta http-equiv="" content="text/html; charset=iso-8859-1">
<
meta http-equiv="" content="text/html; charset=iso-8859-1">
<
link href="general.css" rel="stylesheet" type="text/css">
<
script language="JavaScript" type="text/JavaScript">
<!--
function 
MM_openBrWindow(theURL,winName,features) { //v2.0
  
window.open(theURL,winName,features);
}
//-->
</script>
</head>

<body>
<p><a href="#" target="_blank" onClick="MM_openBrWindow('popup.php','','width=520,height=400')">Popup</a></p>

</body>
</html> 
Es decir, abro popup por el método JavaScript de siempre . Entonces, en la ventana "popup.php" tengo el siguiente código:

Código PHP:
<html>
<head>
<title>Pop-up</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$archivo 
$HTTP_SERVER_VARS['HTTP_REFERER'];
echo 
"Vienes de: $archivo";
?>
</body>
</html>
Pues bien, al abrirse el pop-up muestra el siguiente error:

Notice: Undefined index: HTTP_REFERRER in blablabla...\popup.php on line N

Parece que no me recoge la ruta y $archivo está vacio, y no he logrado saber porqué, ya que si el enlace en lugar de llamar a "popup.htm" en un pop-up lo llama en otra ventana "normal" no da error.
¿Alguien sabe por qué?

Nota: uso variables $HTTP porque el server en el que me alojo tiene PHP versión 4.0.x (que digo yo que se podían actualizar....).

Salu2.
  #2 (permalink)  
Antiguo 01/09/2003, 06:37
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

O sea, dices que si en lugar de llamarla con un window.open, le pones un link y lo pinchas si funciona.

Pues la culpa la tiene el navegador. El HTTP_REFERER es una cabecera HTTP que envia el navegador al servidor web. Asi que si el navegador no manda esa cabecera cuando abre con window.open, pues el servidor no conoce ese valor, y esa variable no esta definida en PHP. Aparte del navegador, tambien los servidores proxies pueden quitar esa cabecera.

Para este caso, podrias usar javascript. Creo que window tiene una propiedad opener que apunta a la pagina que abrio la ventana. Pero claro, esto no te servira en caso de querer almacenar ese valor, ya que seria calcular el valor en el lado del cliente.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 01/09/2003, 06:44
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Por cierto, he hecho una pequeña prueba con este codigo:
Código PHP:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
       <title>Title here!</title>
</head>
<body>
<?php
echo $_SERVER['HTTP_REFERER'];
?>
<br><a href="referer.php">Con link</a>
<br><a href="#" onclick="javascript:window.open('referer.php');">Con javascript</a>

</body>
</html>
Usando el link siempre muestra el referrer. Pero con el javascript, IExplorer no lo muestra. Al hacer la prueba con Mozilla 1.4, si que me lo muestra. Asi que podemos concluir que cada navegador hace lo que le da la gana. Ahora solo falta saber si incluso se puede configurar el navegador para que lo envie o no.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 01/09/2003, 08:30
 
Fecha de Ingreso: agosto-2003
Mensajes: 12
Antigüedad: 20 años, 8 meses
Puntos: 0
Gracias Josemi por tus aclaraciones . Por si no tuviera suficiente con estar empezando en esto del PHP, ahora van y se me rebelan los navegadores .

En fin, seguiré investigando a ver si lo consigo de alguna forma, y si no tomaré una solución alternativa para conseguir lo mismo.

Salu2.
  #5 (permalink)  
Antiguo 01/09/2003, 09:06
 
Fecha de Ingreso: agosto-2003
Mensajes: 12
Antigüedad: 20 años, 8 meses
Puntos: 0
CONSEGUIDO!!!

Bueeeeno. Lo he encontrado antes de lo que esperaba.
Solución alternativa: en "invocadora.php" (por seguir el ej.) poner:

Código PHP:
<?php
session_start
();
$HTTP_SESSION_VARS['origen'] = $HTTP_SERVER_VARS['PHP_SELF'];
?>
Y en "popup.php":

Código PHP:
<?php
session_start
();
$archivo=$HTTP_SESSION_VARS['origen'];
?>
Y ya tengo el origen en forma de ruta como variable, y como lo que a mí me interesa es el nombre de la página invocadora "invocadora.php", con un substr ya lo tengo .

Salu2.
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 19:22.