Foros del Web » Programando para Internet » PHP »

Sesiones no funcionan en PHP.

Estas en el tema de Sesiones no funcionan en PHP. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/03/2013, 19:02
 
Fecha de Ingreso: junio-2007
Mensajes: 12
Antigüedad: 16 años, 10 meses
Puntos: 0
Exclamación Sesiones no funcionan en PHP.

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
  1. <html>
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4.         <title>Práctica 24</title>
  5.         <style type="text/css">
  6.             #yellow { background-color: #FFFF00; }
  7.             body {
  8.                 width: 320px;
  9.                 margin: 0 auto;
  10.                 margin-top: 20px;
  11.                 margin-bottom: 30px;
  12.             }          
  13.             table, th, td {  border: 1px white inset; }
  14.         </style>
  15.     </head>
  16.    
  17.     <body>
  18.         <table>
  19.             <tr>
  20.                 <td colspan="2" id="yellow"><center><b>Información de la sesión</b></center></td>
  21.             </tr>
  22.             <tr>
  23.                 <td id="yellow">ID</td>
  24.                 <td>
  25.                     <?php
  26.                         $a = session_id();
  27.                         if(empty($a)) {
  28.                             echo "No hay sesion activa <a href='crear.php'>Crear nueva</a>";       
  29.                             }
  30.                         else { echo session_id(); }
  31.                     ?>
  32.                 </td>
  33.             </tr>
  34.             <tr>
  35.                 <td id="yellow">Número de accesos</td>
  36.                 <td>
  37.                     <?php
  38.                         if (!empty($a)) {
  39.                             if ( isset ($_SESSION['cont'])) {
  40.                                 echo "Visitas: ".++$_SESSION['cont']; }
  41.                             else {
  42.                                 $_SESSION['cont']=0;
  43.                                 echo "Visitas: ".++$_SESSION['cont']; }
  44.                         }
  45.                         else {
  46.                             echo "No hay visitas."; }
  47.                     ?>     
  48.                 </td>
  49.             </tr>
  50.             <tr>
  51.                 <td id="yellow">Nombre actual</td>
  52.                 <td>
  53.                     <?php
  54.                         if (!empty($a)) { echo session_name(); }
  55.                         else { echo "No existe"; }
  56.                        
  57.                            
  58.                     ?>
  59.                 </td>
  60.             </tr>
  61.             <tr>
  62.                 <td id="yellow">Nombre anterior</td>
  63.                 <td>
  64.                     <?php
  65.                         if ( isset ($nombreant) ) {
  66.                             echo $nombreant; }
  67.                         else {
  68.                             echo "No existe"; }
  69.                     ?>
  70.                 </td>
  71.             </tr>
  72.         </table>
  73.        
  74.         <div>
  75.             <center><a href="practica24.php">Actualizar</a> | <a href="cerrar.php">Cerrar sesión</a></center>
  76.         </div>
  77.     </body>
  78. </html>

cerrar.php: este archivo cierra la sesión actual.

Código
Código PHP:
Ver original
  1. <html>
  2.     <header>
  3.         <title>Cerrar sesión</title>
  4.     </header>
  5.  
  6.     <body>
  7.         <?php
  8.             session_start();
  9.             $nombreant = session_name();
  10.             if (ini_get("session.use_cookies")) {
  11.                 $params = session_get_cookie_params();
  12.                 setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"],
  13.                 $params["secure"], $params["httponly"]);
  14.             }
  15.             session_unset();
  16.             $_SESSION = array();
  17.             session_destroy();
  18.         ?>
  19.        
  20.         <h1>Sesión cerrada con éxito</h2>
  21.         <p>Su sesión anterior llamada como <?php echo $nombreant; ?> ha finalizado correctamente.</p>
  22.         <a href="practica24.php">Regresar al inicio</a>
  23.     </body>
  24. </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
  1. <html lang="es">
  2.     <head>
  3.         <title>Crear sesión</title>
  4.     </head>
  5.     <body>
  6.         <?php
  7.             if (isset($_POST['nombre']))
  8.                 {
  9.                     $nom = $_POST['nombre'];
  10.                     session_name($nom);
  11.                     session_start();
  12.                     header("Location: practica24.php");
  13.                 }
  14.             else
  15.                 {
  16.         ?>     
  17.             <h1>Control de sesiones</h1>
  18.             <table align="center">
  19.             <form action="crear.php" method="POST"/>
  20.             <tr>
  21.             <td>Nombre de sesión:</td>
  22.             <td><input type="text" name="nombre"/></td>
  23.             </tr>
  24.             </form>
  25.         <?php
  26.             } ?>
  27.     </body>
  28. </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?
  #2 (permalink)  
Antiguo 16/03/2013, 19:35
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Sesiones no funcionan en PHP.

Compañero!..en todo archivo el cual quieras propagar las variables de session debes de insertar antes de cualquier cosa dentro del archivo lo siguiente session_start() luego de eso si colocas todo el codigo html y/o PHP que quieras! claro el session_start() va entre los tags <?php ?> al principio de cada pagina, y como veo practica24.php no posees el session_start() y en los demas lugares no lo posees al principio de la pagina! cualquier cosa! solo escriba que aca estamos para ayudar
  #3 (permalink)  
Antiguo 16/03/2013, 19:48
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Sesiones no funcionan en PHP.

Cita:
Iniciado por edward18_1 Ver Mensaje
Compañero!..en todo archivo el cual quieras propagar las variables de session debes de insertar antes de cualquier cosa dentro del archivo lo siguiente session_start() luego de eso si colocas todo el codigo html y/o PHP que quieras! claro el session_start() va entre los tags <?php ?> al principio de cada pagina, y como veo practica24.php no posees el session_start() y en los demas lugares no lo posees al principio de la pagina! cualquier cosa! solo escriba que aca estamos para ayudar
Exactamente como dijo edward, en todos los archivos primero <?php session_start(); ?>, luego todo lo demas. Debería funcionar todo correctamente luego de esa modificación.
  #4 (permalink)  
Antiguo 16/03/2013, 22:29
 
Fecha de Ingreso: junio-2007
Mensajes: 12
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Sesiones no funcionan en PHP.

Pero entonces cuando cierre la sesión, me mande de nuevo al archivo practica24.php no me va a pedir que cree una nueva sesión, creará una nueva automáticamente y no podré elegir el nombre de la misma... ¿qué puedo hacer?

Gracias, de verdad gracias de antemano por interesarse en mi problema!
  #5 (permalink)  
Antiguo 16/03/2013, 22:51
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Sesiones no funcionan en PHP.

Cita:
Iniciado por Manimecker Ver Mensaje
Pero entonces cuando cierre la sesión, me mande de nuevo al archivo practica24.php no me va a pedir que cree una nueva sesión, creará una nueva automáticamente y no podré elegir el nombre de la misma... ¿qué puedo hacer?

Gracias, de verdad gracias de antemano por interesarse en mi problema!
Simple, hace un condicional en pagina24 que detecte si existe sesión, en caso negativo que lo redirija a crear.php, en caso positivo que inicie la misma.
  #6 (permalink)  
Antiguo 17/03/2013, 05:31
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Sesiones no funcionan en PHP.

No puedes verificar si existe un id de sesión si no has iniciado sesión (session_start();), en todo caso, tal vez te sirva session_name()
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 17/03/2013, 10:57
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Sesiones no funcionan en PHP.

Cita:
Iniciado por Triby Ver Mensaje
No puedes verificar si existe un id de sesión si no has iniciado sesión (session_start();), en todo caso, tal vez te sirva session_name()
Tenes razón triby, se ve que se me zafo un tornillo del sueño.
  #8 (permalink)  
Antiguo 15/05/2013, 08:50
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 10 meses
Puntos: 3
Respuesta: Sesiones no funcionan en PHP.

Cita:
Iniciado por cachusan Ver Mensaje
Tenes razón triby, se ve que se me zafo un tornillo del sueño.
Hola oye puedes postear la solucion del problema para tener en cuenta como solucionaste el problema,

Saludos

Etiquetas: cookies, navegador, post, sesión
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:52.