Sesiones PHP

blademan99

Buenas, estoy liado ahora intentando hacer las sesiones de la página web pero no acabo de aclararme.

Estoy en un punto que, cuando intenta hacer la sesión, valida con la BD correctamente a través de un formulario y accede a otra página PHP en la cual si hay una sesión activa de un usuario muestra su nombre, es decir, pone "Bienvenido/a $user". Aquí lo hace correctamente.

El problema viene cuando, desde esa página intento moverme a otra página de la WEB, los datos que había pasado por URL desaparecen y no detecta ninguna sesión, y vuelve a pedir de nuevo el formulario para loguearse en la web.

Alguien sabe como puedo hacer para mantener la sesión cuando se cambia de página?

Gracias

cabron

En la página donde quieres guardar el valor:

session_start();
$_SESSION['MiVariable'] = 5;

En la página donde queires recuperarlo:

session_start();
echo $_SESSION['MiVariable'] ;

blademan99

Si, eso esta claro, pero cuando cambio de página no me mantiene las variables. Me explicaré mejor...

Tengo un inicio.php con una condicion que dice: "if(!isset($_SESSION["user"]))". Si no hay ninguna sesion de usuario, muestra un formulario, sino hace una consulta a la BBDD y mira si existe.

Si la persona se logea, es decir, rellena el formulario, hace un action hacia otra página web, donde comprueba si hay sesion iniciada, consulta a la BBDD y muestra por pantalla "Bienvenido $user". Hasta aquí todo correcto.

Ahora viene, estando en la pagina protected.php en la que tiene la sesión iniciada, si intento ir de nuevo a inicio.php que tengo la condición de que si hay alguna sesion abierta siga mostrando "Bienvenido $user" esto ya no lo hace y no se el motivo. Es como si perdiera los valores que tenía en la página anterior y por eso no entre bien en el if.

No se si esta mejor explicado... Llevo varios días con esto y no doy con la solución.

cabron

¿Cómo tienes configuradas las sesiones?

Normalmente van con cookies, y si no tienes activadas las cookies en el navegador, va a perder la sesión en cuanto cambies de página.

blademan99

No utilizo las cookies para las sesiones. Paso las variables por URL con el get.

cabron

No sé que decirte, yo pondría al principio de cada página:

echo session_start();
echo $_SESSION['user'];

para hacerme una idea de que está pasando.

Si todo esta correcto, te debería mostrar true y lo que hayas guardado en user, y entonces es un problema de tu código que no tiene bien las condiciones. Yo primero intentaría descartar que es un problema de las sesiones que no están funcionando, para ver si el problema es mi código.

Por cierto cuando dices que no usas cookies y que pasas los datos de sesion por get, a que datos de sesión te referies? No es lo mismo los datos que tú guardas en la sesión, que los datos que identifican la sesión.

bLaKnI

Amen de que no es lo mismo trabajar con Requests que con Sessions. El scope es completamente diferente si no existe un foward que precipite los valores de los "GETs".

ZaO

mira haber si tienes el session_start dentro del "if(!isset($_SESSION["user"]))", mira las comillas dobles que tan mal en la variable. El session_start llamalo siempre al inicio sin ninguna condicion para poder utilizar los valores de las sesiones.

<?

session_start();
if(!isset($SESSION['user']))
{
$
SESSION['user']= "NO ESTAS LOGUEADO";
// AQUI SEGUIRIA EL FORMULARIO
}
else
{
echo $_SESSION['user']; // TE DEBE MOSTRAR EL USUARIO QUE SE LOGUEO
}

?>

blademan99

Buenas... sigo liado con esto.
Creo que lo tengo bien. Haber os pongo el codigo haber como lo veis.

spoiler

Entonces... despues de hacer esta comprobacion, si no hay sesion hace el action a protected.php, y hace la misma consulta y ahi es donde me imprime correctamente el bienvenido $user.
Es ahora cuando, intento volver a esta pagina que se llama indice.php, me vuelve a pedir de nuevo el formulario para que me haga el login de nuevo.

Es la primera vez que toco sesiones en php y no controlo demasiado. Haber si ahora con el ejemplo veis mejor donde tengo el fallo.

Ah, al principio de la página, en el head tngo el session_star()

psikotron

Tienes que tener el session_start() y la llamada al código de loguear en todas las páginas para que te funcione.

Saludos

blademan99

Eso ya lo tngo. El sesion_star() en todas las paginas y el mismo codigo pa loguear tambien. Por eso no se porque no funciona jeje

psikotron

Pues algo raro tendrás por ahí, yo también estoy empezando con las sesiones en php y a mi me funciona...

Saludos

blademan99

Ya esta solucionado. El problema es que yo estoy ejecutando la BD en local con el wamp, y debe haber alguna configuración que no guarda la sesión.
Lo he subido al host y funciona perfectamente. Llevo unos días así y sabía que era una tontería, pero no sabia el que.

Gracias de todos modos.

Usuarios habituales

  • blademan99
  • psikotron
  • ZaO
  • bLaKnI
  • cabron