Foros del Web » Programando para Internet » PHP »

Problema con sesiones

Estas en el tema de Problema con sesiones en el foro de PHP en Foros del Web. Siempre me he resistido a usar las sesiones, así que hoy me he propuesto empezar con ellas, y he intentado hacer un ejemplo que posteriormente ...
  #1 (permalink)  
Antiguo 11/10/2008, 03:40
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Problema con sesiones

Siempre me he resistido a usar las sesiones, así que hoy me he propuesto empezar con ellas, y he intentado hacer un ejemplo que posteriormente añadiría a mi página web. El problema es que siempre me redirecciona a index.php.

index.php
Código HTML:
Ver original
  1. <form action="sesion.php" method="post" />
  2. Nombre <input type="text" name="nombre" /><br />
  3. Password <input type="password" name="password" /><br />
  4. <input type="submit" value="Procesar" />
  5. </form>

sesion.php
Código PHP:
Ver original
  1. <?php
  2. require('bd.php'); // conecto con la bd
  3. $nombre = $_POST['nombre'];
  4. $password = $_POST['password'];
  5. $consultar = mysql_query("SELECT * FROM sesiones_tb WHERE nombre LIKE '".$nombre."' AND password LIKE '".$password."'",$link) or die(mysql_error());
  6. if(mysql_num_rows($consultar) == 1){
  7.     $_SESSION['nombre'] = $nombre;
  8.     $_SESSION['password'] = $password;
  9.     header("location:panel.php");
  10. }
  11. else{
  12.     echo "registrate!";
  13. }
  14. ?>

panel.php
Código PHP:
Ver original
  1. <?php
  2. if(isset($_SESSION['nombre']) && isset($_SESSION['password'])){
  3.     echo "Este es tu panel de control";
  4. }
  5. else{
  6.     header("location:index.php");
  7. }
  8. ?>
  #2 (permalink)  
Antiguo 11/10/2008, 03:42
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Problema con sesiones

Solucionado!

Un fallo tan tonto como que olvidé poner session_start() en panel.php ... que vergüenza

Bueno, pues aprovecho este post para hacer otra pregunta:

Es necesario cerrar la sesión como con mysql: mysql_close() ?
  #3 (permalink)  
Antiguo 11/10/2008, 03:51
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema con sesiones

Hola

mysql_close(); es para cerrar conexiones a la BBDD

para cerrar una sesion se usa

session_start();
unset ($_SESSION["nombre"]); //eliminas la sesion nombre
header ("Location: index.php"); //rediriges donde quieras




es esos links dode dice salir lo mandas a una pagina aparte cierras las sesiones abiertas y rediriges al index.php por ejemplo.

Un saludo
  #4 (permalink)  
Antiguo 11/10/2008, 03:53
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Problema con sesiones

Muchas gracias. Vamos, la típica página de logout.

Aunque yo me refería a si tengo que hacer algo así:

MySQL:

<?php
mysql_connect();
... SENTENCIAS ...
mysql_close();
?>

SESSION:

<?php
session_start();
... SENTENCIAS ...
session_close(); // aquí es donde tengo la duda. Hace falta poner un comando de ese tipo?
?>
  #5 (permalink)  
Antiguo 11/10/2008, 03:55
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema con sesiones

No si no quieres que termine la sesion en ese momento
si lo haces asi el user se tendra que volver a logear
es mejor el tipico enlace de logout como tu dices

pero esa funcion

session_close();

creo que no existe

seria mas bien

session_unset() pero con esta funcion cierras todas las sesiones abiertas, si hay mas usuarios logeados en ese momento les cerraras a todos las sesion y se tendran que volver a logear
  #6 (permalink)  
Antiguo 11/10/2008, 04:06
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Problema con sesiones

Comprendo. Muchas gracias
  #7 (permalink)  
Antiguo 11/10/2008, 08:28
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con sesiones

Siempre es bueno leer el manual de PHP, incluyendo los comentarios que otros usuarios publican en cada función (mysql_close()).

El único caso en el que se hace recomendable terminar una conexión a la base de datos es cuando ya se han hecho todas las consultas a la base de datos (y se tenga la seguridad de eso), pero con los datos que ahora se tiene hay que hacer un gran procesamiento (del lado del script). La conexión a la base de datos se hace innecesaria y el cerrarla alivia un poco el tráfico en el servidor MySQL y libera en parte la memoria que PHP usa en el servidor. Si no se tiene la seguridad de que ya no se va a usar una conexión a la base de datos, entonces es mejor dejar la conexión abierta durante todo el script, pues el hecho de cerrar y abrir conexiones repetidamente congestiona el servidor más que si se deja la primera conexión abierta.

Saludos,
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




La zona horaria es GMT -6. Ahora son las 01:00.