Foros del Web » Programando para Internet » PHP »

Duda con Register_Globals y variables globales...

Estas en el tema de Duda con Register_Globals y variables globales... en el foro de PHP en Foros del Web. A ver si entendí. Recomiendan desactivar la directiva "register_globals" en "off" para no tener inconvenientes con las web hechas en php. Cierto? Ok, si declaro ...
  #1 (permalink)  
Antiguo 02/10/2006, 09:40
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Duda con Register_Globals y variables globales...

A ver si entendí. Recomiendan desactivar la directiva "register_globals" en "off" para no tener inconvenientes con las web hechas en php. Cierto?

Ok, si declaro una variable como global, y la directiva desactivada :
global $privilegio;

...entonces dicha variable al pasar a otro script .php, no sería reconocida como tal sino como otra variable definida, Cierto?

Si estoy en lo correcto, entonces debo activar la directiva?

Si no estoy en lo correcto, pues sigo teniendo problemas con el manejo de variables como globales según indiqué arriba, pues al ir a otro scrip pierde el valor asignado :

Ejemplo :
scrip1.php :
global $privilegio;
$privilegio = $reg_actual['privilegios'];
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.misitiophp.org/script2.php'>";

La variable obtiene el valor : $privilegio = "0"

script2.php :
echo "Privilegio del usuario : ".$privilegio;

La variable $privilegio no recibe o pierde el valor asignado anteriormente, osea en blanco " ".

Como corregir esto adecuadamente?
  #2 (permalink)  
Antiguo 02/10/2006, 10:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
"Global" sólo tiene ambito en la ejecución de tu script .. no a otros. Al terminar la ejecución de tu script .. se mueren todas tus variabels definidas y se cierran conexiones a archivos, BBDD, etc ...

Global lo usas o debes usarlo en funciones por ejemplo para hacer referencia a una variable definida antes de llamar a tu función (esto es el "ambito de las variables" o scope que llaman en ingles).

El uso que tu le das a la definición de una variable "global" sería con el uso de SESIONES: www.php.net/session manejado con el array superglobal: $_SESSION (podría ser también una cookie). Esas dos opciones son las únicas de PHP (por defecto) para que puedas definir una variable y que esta no "muera" al terminar tu script y la puedas tomar en sub-siguientes (que estén dentro de la vida/duración de la sesión ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 02/10/2006, 13:52
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Ok, utilizo la función SESSION_START() y $_SESSION["variable"] asi :

script1.php :
<?php
SESSION_START();
$_SESSION["privilegio"] = $reg_actual['privilegios'];

echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.zcojedes.me.gob.ve/tramite.php'>";

script2.php :
<?php
SESSION_START();
echo "Privilegio del usuario en script TRAMITE.php : ".$_SESSION["privilegio"];

Luego aparece un error. Que significa este error con la funcion SESSION_START(); :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/zcojedes/nuke/tramite.php:3) in /var/www/zcojedes/nuke/tramite.php on line 11

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/zcojedes/nuke/tramite.php:3) in /var/www/zcojedes/nuke/tramite.php on line 11
Privilegio del usuario en script TRAMITE.php : 1
  #4 (permalink)  
Antiguo 02/10/2006, 14:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Deberías mostrar el código que usas COMPLETO!

El mensaje de error te dice que en:
/var/www/zcojedes/nuke/tramite.php línea 3 tienes algo de "salida" originada al cliente: algo de HTML, un echo "algo" .. etc. session_start() debe estar antes de tu salida que puedas generar en tu script. Se considera "salida" también a un simple espacio o salto de línea antes de <? ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 03/10/2006, 08:47
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Ok, si es verdad. Era un comentario que estaba en esa linea. Lo borré y ya no aparece dicho mensaje. Gracias forista
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 12:00.