Foros del Web » Programando para Internet » PHP »

Problema con las sesiones

Estas en el tema de Problema con las sesiones en el foro de PHP en Foros del Web. Hola mi problema es q cuando intento ejecutar un archivo php donde se crean sesiones me da el siguiente error: "Warning: Unknown(): Your script possibly ...
  #1 (permalink)  
Antiguo 08/06/2004, 12:22
 
Fecha de Ingreso: junio-2004
Mensajes: 232
Antigüedad: 13 años, 6 meses
Puntos: 0
Problema con las sesiones

Hola mi problema es q cuando intento ejecutar un archivo php donde se crean sesiones me da el siguiente error:

"Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0."

A continuacion os pongo el ejercicio q intentaba ejecutar en mi servidor local:

<?
session_register('contador');
?>
<HTML>
<HEAD>
<TITLE>contador.php</TITLE>
</HEAD>
<BODY>
<?
If (isset($contador)==0)
{$contador=0;}
++$contador;
echo "<a href=\"contador.php\">Has recargado esta página $contador veces</a>";
?>
</BODY>
</HTML>

Espero q me podais ayudar con este problema porq no se como tratarlo ni porq me sale ese mensaje.
Gracias
  #2 (permalink)  
Antiguo 08/06/2004, 13:08
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 15 años, 9 meses
Puntos: 8
Viene a querer decir que ahora (a partir de la 4.2.3) las variables de sesión ya no son globales por defecto, es decir, que $contador no está definido aunque sea una variable de sesión. Para cambiar ese comportamiento hayq ue modificar el fichero de configuración y activar la directiva 'session_globals'.
Si no lo puedes/quieres modificar puedes usar la alternativa:

session_is_registered('contador') //Para saber si existe
$HTTP_SESSION_VARS['contador']++; //Para sumarle uno
__________________
Kelpie
  #3 (permalink)  
Antiguo 08/06/2004, 13:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Preferentemente usen los arrays superglobales:

contador.php
Código PHP:
<?
session_start
();
if (isset(
$_SESSION['contador'])){
    ++
$_SESSION['contador'];
} else {
    
$_SESSION['contador']=0;
}

echo 
"<a href=\"contador.php\">Has recargado esta página $_SESSION['contador'] veces</a>";
?>
De que funcine .. dependerá de como se propage el SID (Identificador único de sesión). Si no se usa:

session.use_trans_sid =1 ... no funcionará .. pues el SID no se propagará y la sesión siempre se creará nueva.

A su vez .. podría usarse:

session.use_use_cookies = 1 (para evitar problemas y ganar en seguridad en la propagación del SID en redireccionamientos tipo header() .. o javascript (incluido window.open .. y cosas similares) ademas de <meta> de refresh ..)

Todo esto . .en su php.ini (ver también por phpinfo())

Un saludo,
  #4 (permalink)  
Antiguo 08/06/2004, 13:39
 
Fecha de Ingreso: junio-2004
Mensajes: 232
Antigüedad: 13 años, 6 meses
Puntos: 0
Este ultimo ejemplo q me ha puesto Cluster funciona perfectamente. Sabeis de algun manual (q no sea en desarrolloweb, porq aunq es una Web q me ha ayudado mucho, pero parece ser q la explicacion de las sesiones es algo antigua y no habla nada de utilizar "&_SESSION". De hecho el ejemplo q he puesto arriba pertenece a esa web) en el q me explique el uso de las sesiones con ese tipo de arrays?
Muchas Gracias.
  #5 (permalink)  
Antiguo 08/06/2004, 14:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Ya sé que no es un tutorial .. pero ....

www.php.net/session

Intenta leer la documentación oficial al respecto sobre sesiones .. y si tienes dudas .. las consultas por aquí.

Un saludo,
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 13:10.