Tengo la siguiente encomienda:
Crear una serie de páginas y scripts PHP que permitan:
- Mostrar session_ID, nombre de la sesión y cantidad de visitas.
- Permitir al usuario cerrar su sesión actual.
- Si no se detecta sesión, permitir al usuario crear una nueva con un nombre de sesión establecido por el usuario.
Tengo todo hecho (según yo) bien... en la siguiente cantidad de páginas:
practica24.php Actua como Index!: Aquí se localiza la tabla de datos de la sesión.
Imagen:
Código:
Código PHP:
Ver original
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Práctica 24</title> <style type="text/css"> #yellow { background-color: #FFFF00; } body { width: 320px; margin: 0 auto; margin-top: 20px; margin-bottom: 30px; } table, th, td { border: 1px white inset; } </style> </head> <body> <table> <tr> <td colspan="2" id="yellow"><center><b>Información de la sesión</b></center></td> </tr> <tr> <td id="yellow">ID</td> <td> <?php echo "No hay sesion activa <a href='crear.php'>Crear nueva</a>"; } ?> </td> </tr> <tr> <td id="yellow">Número de accesos</td> <td> <?php echo "Visitas: ".++$_SESSION['cont']; } else { $_SESSION['cont']=0; echo "Visitas: ".++$_SESSION['cont']; } } else { echo "No hay visitas."; } ?> </td> </tr> <tr> <td id="yellow">Nombre actual</td> <td> <?php else { echo "No existe"; } ?> </td> </tr> <tr> <td id="yellow">Nombre anterior</td> <td> <?php echo $nombreant; } else { echo "No existe"; } ?> </td> </tr> </table> <div> <center><a href="practica24.php">Actualizar</a> | <a href="cerrar.php">Cerrar sesión</a></center> </div> </body> </html>
cerrar.php: este archivo cierra la sesión actual.
Código
Código PHP:
Ver original
<html> <header> <title>Cerrar sesión</title> </header> <body> <?php $params["secure"], $params["httponly"]); } ?> <h1>Sesión cerrada con éxito</h2> <p>Su sesión anterior llamada como <?php echo $nombreant; ?> ha finalizado correctamente.</p> <a href="practica24.php">Regresar al inicio</a> </body> </html>
crear.php: este archivo permite al usuario crear una nueva sesión utilizando el nombre de su preferencia.
Imagen:
Código:
Código PHP:
Ver original
<html lang="es"> <head> <title>Crear sesión</title> </head> <body> <?php { $nom = $_POST['nombre']; } else { ?> <h1>Control de sesiones</h1> <table align="center"> <form action="crear.php" method="POST"/> <tr> <td>Nombre de sesión:</td> <td><input type="text" name="nombre"/></td> </tr> </form> <?php } ?> </body> </html>
El problema viene siendo cuando creo la sesión, el servidor y el navegador crean la sesión y su respectiva cookie, pero cuando me regresa a la página principal me sigue diciendo que no tengo sesión activa, porque no detecta la id de la sesión, cuando en realidad ya la tengo creada e incluso en el cookie me aparece la ID de la sesión, miren la imagen:
https://docs.google.com/file/d/0B1irOGZTeC4HNGQweDFoYmIybEE/edit?usp=sharing
1er caso: No tengo sesión activa, la página me avisa a crear una.
2do caso: Me pide un nombre de sesión para crear la sesión y llamarla de la misma manera. Se coloca el nombre y se presiona Enter.
3er caso: Regresa a la página principal, debe mostrar información de la sesión creada, no la muestra. Sin embargo, el navegador muestra que la cookie y la sesión ha sido creada y se le asoció un número de sesión (session_ID).
¿Qué puedo hacer? ¿Está mal el código? ¿Tengo entendido mal el concepto de sesión?