Ver Mensaje Individual
  #22 (permalink)  
Antiguo 22/08/2011, 05:55
Avatar de vgonga1986
vgonga1986
 
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Problemas con sistema de usuarios

No es por quitarte las ilusiones, pero si no lo entiendes es porque tienes lagunas grandes de base sobre el funcionamiento de PHP. Ya te he explicado por qué cuando vuelves a la página login.php se te cierra la sesión y no es porque caduque, es porque vuelves a ejecutar el código de esta página, pero con resultado diferentes. Por qué? Te explico los pasos, más claro no lo voy a poder poner:
1) El usuario accede a tu aplicación y va a login.html (o dónde sea que tienes el formulario de registro).
2) Rellena los campos del formulario con sus datos y pulsa el botón de envío.
3) Los datos rellenos se guardan en la variable $_POST y se envían a la página login.php que accede a ellos.
4) Con estos datos, hace una consulta a la base de datos, para ver si el usuario rellenó bien los datos.
5) Si los rellenó bien y la consulta devolvió algún registro, ejecuta el código que esté en el else de este if: if ($num_rows <= 0).

Ahora bien, qué sucede cuando vuelves a redirigir a esta página desde una página que no es el formulario, por ejemplo con un link (<a href="login.php">...</a>)? Pues sencillo, la variable $_POST no está rellena, porque el usuario no ha rellenado ningún formulario ni nada por el estilo. Se accede a login.php sin datos en el $_POST y, por consiguiente, la consulta a la base de datos no devuelve ningún resultado y se ejecuta el código del if de if ($num_rows <= 0). Es decir, la página reacciona como que el usuario no se ha podido loguear.

Soluciones? Hay miles, que creo que es otro fallo que tienes de concepto. El mismo problema lo vas a poder solucionar de varias formas. Una ya te la he dicho, pero no la has entendido, que sería controlar al inicio de login.php si la sesión ya ha sido creada y, si lo ha sido, no intentar volver a crearla. Otra solución es la que intuyes tú, que es sacar el código que has metido en login.php a otra página que sea perfil.php o como quieras llamarla y que en login.php sólo haya una redirección a dicha página. Pero hay más soluciones, sólo tienes que intentar entenderlo y buscar la que más te guste, pero mientras no lo entiendas tendrás estos líos.

No se puede empezar la casa por el tejado, si no entienes el funcionamiento básico de un formulario no vas a poder montar un sistema de usuarios. Y no es por echártelo en cara ni nada, sino un consejo, empieza leyendo algún manual y aclárate con esto antes de seguir, porque si no, vas a tener muchas más dudas.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?