Foros del Web » Programando para Internet » PHP »

variables predefinidas del APACHE

Estas en el tema de variables predefinidas del APACHE en el foro de PHP en Foros del Web. Hola: Por que las variables predefinidas del APACHE ($HTTP_REFERER, etc) no las puedo accesar desde una funcion php? function Example() { ... $Temp = $HTTP_REFERER; ...
  #1 (permalink)  
Antiguo 31/01/2003, 14:57
 
Fecha de Ingreso: noviembre-2002
Mensajes: 54
Antigüedad: 21 años, 5 meses
Puntos: 0
variables predefinidas del APACHE

Hola:

Por que las variables predefinidas del APACHE ($HTTP_REFERER, etc) no las puedo accesar desde una funcion php?

function Example()
{
...
$Temp = $HTTP_REFERER;
o
$Temp = $PHP_SELF;
...
}
  #2 (permalink)  
Antiguo 31/01/2003, 15:04
Avatar de Jano.cl  
Fecha de Ingreso: diciembre-2001
Ubicación: Chile
Mensajes: 258
Antigüedad: 22 años, 4 meses
Puntos: 0
$Temp = $_SERVER['PHP_SELF'];

$Temp = $_SERVER['HTTP_REFERER'];


De esa manera no habria problemas
  #3 (permalink)  
Antiguo 31/01/2003, 15:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Ademas de la solucion, vendria bien explicar el por que.

Las variables predefinidas solo estan accesibles en el ambito global, no dentro del ambito de dentro de la funcion, igual que las variables normales que defines. Los arrays $HTTP_xxx_VARS tambien sufren de esa restriccion. Los nuevos arrays 'superglobales' $_SERVER, $_POST, ... no tienen ese problema.

Como estos ultimos solo existen a partir de la version 4.1, si queremos usar esas variables o arrays dentro de una funcion, se puede usar la palabra clave 'global', asi:
Código PHP:
function Example()
{
global 
$HTTP_REFERER,$PHP_SELF,$HTTP_POST_VARS;
...
$Temp $HTTP_REFERER;
o
$Temp 
$PHP_SELF;
o
$Temp 
$HTTP_POST_VARS['variable'];
...

Mas info en el FAQ.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 21:35.