Primero que nada, un caluroso saludo a quien sea que lea este mensaje y se compadezca de un usuario con un problema más. Mi agradecimiento con este tipo de foros de ayuda, son geniales! Bueno al grano.
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
if ( isset ($_SESSION['cont'])) { 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
if ( isset ($nombreant) ) { 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
if (ini_get("session.use_cookies")) { $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
if (isset($_POST['nombre'])) {
$nom = $_POST['nombre'];
header("Location: practica24.php"); }
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?