Foros del Web » Programando para Internet » PHP »

Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Estas en el tema de Problemas con session_start(); al iniciar los servicios con WAMP 2.0 en el foro de PHP en Foros del Web. Hola a todos: Actualmente estoy trabajando con WAMP Server 2.0 y tengo un problema con la función session_start(). En concreto sólo me ocurre cuando inicio ...
  #1 (permalink)  
Antiguo 09/12/2008, 11:48
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 16 años
Puntos: 8
Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Hola a todos:

Actualmente estoy trabajando con WAMP Server 2.0 y tengo un problema con la función session_start().

En concreto sólo me ocurre cuando inicio los servicios de la aplicación. Tengo una página session.php en donde lee una serie de variables que voy a utilizar durante la sesión del usuario:

?>php
session_start();
$_SESSION["bd_dir"] = "mi_base";
$_SESSION["img_dir"] = "img";
$_SESSION["cnn_server"] = "localhost";
$_SESSION["cnn_user"] = "root";
$_SESSION["cnn_password"] = "";
?>

Bueno, hay más líneas pero no vienen al caso ...

En fin, la cosa sucede que esta página no recoge adecuadamente las variables que defino cuando abro por vez primera la página PHP con cualquier navegador tras iniciar los servicios de servidor.

De hecho, la variable $bd_dir la utilizo para las consultas a la base de datos y se queda vacía (?).

Lo más curioso sucede cuando recargo la página con F5. Entonces, todo funciona a las mil maravillas.

Para más información para las posibles respuestas, el parámetro Registers_Globals está en "On", y no sé si he que configurar algo más en el php.ini.

Se agradece cualquier cosa que pueda aportar luz a este entuerto.

Saludos desde Madrid (España),

--
Alberto Uttranadhie
  #2 (permalink)  
Antiguo 09/12/2008, 14:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Muy raro si es que solo te sale tras iniciar los servicios, prueba usar XAMPP y ve si te ocasiona los mismos problemas.

Saludos
  #3 (permalink)  
Antiguo 09/12/2008, 14:53
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 16 años
Puntos: 8
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Hola, GatorV:

Lo primero, gracias por tu sugerencia. La verdad es que es más raro que un perro verde, pero tiene que ser algo del código porque pasa lo mismo cuando lo ejecuto en un MacBook con MAMP instalado.

Por otro lado, tengo un fichero que hace consultas a una base de datos de pruebas pero los parámetros no se las dan las variables sino que están escritas como tal y funciona desde el inicio.

De todas formas, el manual de PHP no explica en extensión el uso de session_start() junto con variables globales $_SESSION. Sé que puede resultar un poco pesado, pero se agradecería que alguien nos ilustrara debidamente.

Muchas gracias a todos por adelantado.

--
Alberto Uttranadhie
  #4 (permalink)  
Antiguo 09/12/2008, 16:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

El problema es usando register_globals, puedes estar reemplazando variables, por eso es mejor usar register_globals en Off, y mejor usar $_SESSION solito sin session_register.

Saludos.
  #5 (permalink)  
Antiguo 10/12/2008, 01:59
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 16 años
Puntos: 8
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Hola, de nuevo, GatorV:

He probado a desactivar Register_Globals pero, obviamente, las variables generadas con $_SESSION no se mantienen de un fichero PHP a otro.

A mí lo que me extraña es que funcione bien después. He comprobado que cuando se abre el fichero por primera vez y lee las variables, éstas están vacías. Lo que no entiendo es porqué luego sí se ejecuta correctamente.

Un saludo.

--
Alberto Uttranadhie
  #6 (permalink)  
Antiguo 10/12/2008, 10:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Mmm quieres decir que si haces esto:
Código php:
Ver original
  1. <?php
  2. $_SESSION["bd_dir"] = "mi_base";
  3. $_SESSION["img_dir"] = "img";
  4. $_SESSION["cnn_server"] = "localhost";
  5. $_SESSION["cnn_user"] = "root";
  6. $_SESSION["cnn_password"] = "";
  7.  
  8. var_dump($_SESSION);
  9. ?>

Te da vacio?? (sin usar register_globals).

Recuerda que usar register_globals es muy peligroso -> referencia.

Saludos.
  #7 (permalink)  
Antiguo 10/12/2008, 12:13
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 16 años
Puntos: 8
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Hola, GatorV:

Teniendo Register_Globals en "Off" no funciona nada de nada, sólo se ejecuta correctamente con el estado "On".

He hecho el volcado que me has pedido y en efecto muestra los valores de las variables $_SESSION, pero por si acaso introduje un "echo" para que mostrara una de ellas después del volcado y no la muestra a la primera, pero sí en el resto de las ocasiones.

Un hecho curioso: no creo que el problema tenga que ver con el estado del servidor. No lo sé, sois más expertos que yo y probablemente lo que os cuente sirva de algo: el problema realmente se dan cuando limpio el historial del navegador (cookies, archivos, etc.) y abro la página; si detengo el servidor y no limpio el historial no ocurre.

He probado con varios navegadores: de hecho, la aplicación tiene como condicionante poderse usar con al menos los siguientes: IE, Firefox (Windows y OSX), Safari (Windows y OSX) y Opera (también Windows y OSX) --Amaya no, puesto que no acepta muy bien ciertos javascripts. En cada uno pasa una cosa diferente una vez abierto y borro los historiales; ahora bien, en todos los casos cuando se ejecutan por primera vez y se abre el fichero PHP el problema surge de nuevo.

Gracias por tu atención y un saludo.

--
Alberto Uttranadhie (Madrid, España)
  #8 (permalink)  
Antiguo 10/12/2008, 12:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Mmm muy raro que ese código no te sirva usando register_globals en Off, comprueba una prueba sencilla usando register_globals en Off:

pagina1.php:
Código php:
Ver original
  1. <?php
  2. $_SESSION['hola'] = "hola!";
  3. ?>
  4. <a href="pagina2.php">Ir a pagina2.php</a>

pagina2.php
Código php:
Ver original
  1. <?php
  2. echo $_SESSION['hola'];
  3. var_dump($_SESSION);

Y muestra tus resultados.

Saludos.
  #9 (permalink)  
Antiguo 10/12/2008, 13:16
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 16 años
Puntos: 8
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Hola, GatorV:

Tu prueba ha funcionado perfectamente.

Estaba pensando en que quizá el problema se deba a lo siguiente:

1. La primera página que se abre es un index.php conteniendo un session_start() y en la línea siguiente un include() a una página session.php

2. La página session.php contiene un session_start() y en las siguientes líneas todas las variables $_SESSION[]

3. El motivo por que lo hago así es debido a que cualquier página del sitio podrá enlazada desde fuera por otros servicios mediante indicación de la URL y siempre que se abrá desde dichos servicios externos deberá tener definidas ciertas variables globales.

De todas formas, cuando abro la página session.php tras limpiar los historiales también genera los mismos problemas.

Un saludo.

--
Alberto Uttranadhie
  #10 (permalink)  
Antiguo 10/12/2008, 14:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Pues una teoria es que la sesión cambie, prueba imprimir el valor de session_id() después de cada session_start() y ve si es el mismo.

Por otro lado puedes condicionar que si session_id te devuelve falso o en blanco iniciar la sesión usando session_start().

Saludos.
  #11 (permalink)  
Antiguo 11/12/2008, 12:10
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 16 años
Puntos: 8
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Hola, de nuevo, GatorV:

Lo primero, es disculparme por responderte tan atrasadamente pero me imagino que tú debes de estar en América mientras que yo estoy en España y la diferencia horaria en ocasiones ralentiza la comunicación.

He realizado lo que me has pedido y sesion_id() es idéntico en las páginas de pruebas, tanto las que he generado bajo tu petición como las mías.

De hecho, he insertado un include() en la primera página que llama a la siguiente en mis ficheros y, en efecto, se ejecuta.

El problema en sí radica en que las variables están vacías cuando elimino los historiales o no ha habido accesos a la página.

Gracias y un saludo.

--
Alberto Uttranadhie (Madrid, España)
  #12 (permalink)  
Antiguo 11/12/2008, 12:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Bueno eso es de esperarse, recuerda que las sesiones solamente sirven cuando la cookie esta setteada, por lo que la idea por ejemplo si esos datos estan fijos y los compartes en tus scripts, mejor dejalos como variables fijas e incluyelas con un include().

Saludos.
  #13 (permalink)  
Antiguo 11/12/2008, 15:03
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 16 años
Puntos: 8
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Hola, de nuevo, GatorV:

He estado mirando más y si sólo elimino las "cookies" guardadas y abro la página es entonces cuando se produce el error. La "cookie" siempre se identifica como PHPSESSID y su valor no varía ni cuando falla ni cuando se ejecuta correctamente.

La página session.php pretende ser lo que me aconsejas: un repositorio en donde tengo una serie de variables fijas que voy a utilizar a lo largo de toda la sesión.

Un saludo.

--
Alberto Uttranadhie (Madrid, España)
  #14 (permalink)  
Antiguo 11/12/2008, 16:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Por eso si la vas a incluir, no es necesario que las mantengas en la sesión, recuerda que al tu hacer include("session.php"); pasas las variables del script, por ejemplo prueba esto:

config.php:
Código php:
Ver original
  1. <?php
  2. $dbUser = "root";
  3. $dbPass = "";
  4. $dbName = "test";
  5. $dbHost = "localhost";
  6. // mas variables

pagina1.php:
Código php:
Ver original
  1. <?php
  2. include("config.php");
  3. echo $dbUser;
  4. echo $dbName;

pagina2.php
Código php:
Ver original
  1. <?php
  2. include("config.php");
  3. echo $dbHost;

Veras que las variables siempre permanecen en su mismo valor.

Saludos.
  #15 (permalink)  
Antiguo 12/12/2008, 12:51
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 16 años
Puntos: 8
Respuesta: Problemas con session_start(); al iniciar los servicios con WAMP 2.0

Hola, GatorV:

Por fin se ha solucionado el problema. En efecto, la solución que has dado es la correcta. En verdad que esto era de locos.

Muchísimas gracias por tu ayuda y tu paciencia.

Saludos desde España,

--
Alberto Uttranadhie
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:53.