Foros del Web » Programando para Internet » PHP »

Cierre de Sesion con PHP

Estas en el tema de Cierre de Sesion con PHP en el foro de PHP en Foros del Web. HOla a todos, espero esten bien, y les comento que he estado haciendo un pekeñito sistema, para un proyecto de la Universidad. Y he estado ...
  #1 (permalink)  
Antiguo 21/10/2012, 10:49
Avatar de kuriel  
Fecha de Ingreso: febrero-2009
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 4
Pregunta Cierre de Sesion con PHP

HOla a todos, espero esten bien, y les comento que he estado haciendo un pekeñito sistema, para un proyecto de la Universidad.

Y he estado utilizando sesiones con PHP, y al principio cuando puse la función me corria perfectamente pero ahora que le meti mas modificaciones al sistema, al hacer testeos notamos que requeria pedir como 5 veces el cierre de sesion y al 6to intento aproximadamente, cerraba sesion.

mi codigo para cerrar sesion es el siguiente:

Código PHP:
<?
// estos dos, requeridos para imprimir mensajes y conectar a la B de D (no tienen errores)
include("conecta.php");
include(
"funciones.php");

session_start(); // llamo las variables de sesion
$sentencia "SELECT * FROM `conectados` WHEREWHERE User='".$_SESSION["UsuarioU"]."'"// reviso si está  como "conectado"
$res_r mysql_query($sentencia,$conecta) or die(mysql_error());

if(
mysql_num_rows($res_r)>0// si esta como "conectado"
{

// lo borro de la tabla conectados
$sentencia="DELETE FROM conectados WHERE User='".$_SESSION["UsuarioU"]."'";
$res mysql_query($sentencia,$conecta) or die(mysql_error());
msj($txt_hecho,$txt_sesioncerrada); // metodo para imprimir mensajes
mysqli_free_result($res);

// fin de <si está como "conectado">

// libero la memoria de la B de D
mysqli_free_result($res_r);

// vaciamos los valores de la sesion
$_SESSION = array();
unset(
$_SESSION['UsuarioU']);
unset(
$_SESSION['Rol']);

// destruimos la sesion
session_unset();
session_destroy();
?>

No se si tenga que ver que lo mando a llamar con jQuery, pero deberia funcionar.

Saludos.
__________________
Si todas las URL's que tienes o visitas te parecen largas, visita www.korto.tk - También protege de rastros y con contraseñas tus páginas o URL's.

Última edición por kuriel; 21/10/2012 a las 10:56
  #2 (permalink)  
Antiguo 21/10/2012, 11:11
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Cierre de Sesion con PHP

Para comenzar tienes un error en la sentencia SQL, ahora, a que te refieres con que requiere pedir 5 o 6 veces el cierre de sesión?, al hacer un session_unset y session_destroy la sesión se cierra, aparte de eso, debes hacer una petición posterior al servidor para que esta destruya tambien la cookie en la que se guarda el ID de la sesión
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 21/10/2012, 11:47
Avatar de kuriel  
Fecha de Ingreso: febrero-2009
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Cierre de Sesion con PHP

Cita:
Iniciado por Nemutagk Ver Mensaje
Para comenzar tienes un error en la sentencia SQL, ahora, a que te refieres con que requiere pedir 5 o 6 veces el cierre de sesión?, al hacer un session_unset y session_destroy la sesión se cierra, aparte de eso, debes hacer una petición posterior al servidor para que esta destruya tambien la cookie en la que se guarda el ID de la sesión
hola, gracias x la respuesta, pero podrias ser más específico en que parte tengo el error en el código?

y como destruyo la cookie, hasta donde leí las sesiones no manejaban cookies sino que lo gestionaba el servidor, pero igual y estoy mal informado.

¿como quitaria las cookies de esa sesion?

gracias.


edito: tu dices en el WHERE WERE, no es que lo copie mal, si lo tengo con un solo WHERE, ya lo corrijo aki arriba.



está asi:

Código PHP:
Ver original
  1. <?
  2. // estos dos, requeridos para imprimir mensajes y conectar a la B de D (no tienen errores)
  3. include("conecta.php");
  4. include("funciones.php");
  5.  
  6. session_start(); // llamo las variables de sesion
  7. $sentencia = "SELECT * FROM `conectados` WHERE User='".$_SESSION["UsuarioU"]."'"; // reviso si está  como "conectado"
  8. $res_r = mysql_query($sentencia,$conecta) or die(mysql_error());
  9.  
  10. if(mysql_num_rows($res_r)>0) // si esta como "conectado"
  11. {
  12.  
  13. // lo borro de la tabla conectados
  14. $sentencia="DELETE FROM conectados WHERE User='".$_SESSION["UsuarioU"]."'";
  15. $res = mysql_query($sentencia,$conecta) or die(mysql_error());
  16. msj($txt_hecho,$txt_sesioncerrada); // metodo para imprimir mensajes
  17.  
  18. } // fin de <si está como "conectado">
  19.  
  20. // libero la memoria de la B de D
  21.  
  22. // vaciamos los valores de la sesion
  23. $_SESSION = array();
  24. unset($_SESSION['UsuarioU']);
  25. unset($_SESSION['Rol']);
  26.  
  27. // destruimos la sesion
  28. ?>

(cuando lo comenté el codigo, se me paso un WHERE, sorry.)
__________________
Si todas las URL's que tienes o visitas te parecen largas, visita www.korto.tk - También protege de rastros y con contraseñas tus páginas o URL's.
  #4 (permalink)  
Antiguo 21/10/2012, 11:55
Avatar de kuriel  
Fecha de Ingreso: febrero-2009
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Cierre de Sesion con PHP

intenté con

Código PHP:
Ver original
  1. setcookie('','',time()-315360000);

y no funcionó, hmm... esque no he manejado cookies en estas sesiones. Por eso no pense en que utilizaria setcookie() pero = no me cierra sesion
__________________
Si todas las URL's que tienes o visitas te parecen largas, visita www.korto.tk - También protege de rastros y con contraseñas tus páginas o URL's.
  #5 (permalink)  
Antiguo 21/10/2012, 12:45
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
Respuesta: Cierre de Sesion con PHP

Lo de setcookie no te va a servir de mucho, tú no estás utilizando cookies por lo que veo.
Con:
<?php session_unset(); session_destroy(); ?>
debería bastar, de veras no te funciona?
  #6 (permalink)  
Antiguo 21/10/2012, 14:56
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Cierre de Sesion con PHP

Hay que leer mas como funcionan las sesiones!, las sesiones se trabajan del lado del servidor tal cual comentas, PERO, para que el servidor asocie una sesión a un usuario este crea automaticamente una cookie donde se guarda la ID de sesión, la cual se llama SID, ahora, no necesariamente el SID se propaga via cookie, tambien se puede hacer via GET, pero es muy inseguro, en fin, después de la explicación...

Directamente no debes interactuar con la cookie que se crea de forma automatica, cuando tu haces un session_destroy(); PHP automaticamente le dice al navegador que destruya la cookie que propaga el SID, así, en la siguiente petición la cookie deja de existir, por lo tanto la sesión queda destruida, la razón por la que te comento, es porque dices que mandas a llamar el cierre de sesión via Ajax, por lo tanto después de enviar la petición deberás recargar la página para que los cambios surtan efecto....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 21/10/2012, 15:43
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Cierre de Sesion con PHP

Con respecto a lo que dice @Nemutagk,
http://www.php.net/manual/es/intro.session.php

ahí lo dice.
  #8 (permalink)  
Antiguo 21/10/2012, 19:18
Avatar de kuriel  
Fecha de Ingreso: febrero-2009
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Cierre de Sesion con PHP

Cita:
Iniciado por Nemutagk Ver Mensaje
Hay que lee...

...cuando tu haces un session_destroy(); PHP automaticamente le dice al navegador que destruya la cookie que propaga el SID, así, en la siguiente petición la cookie deja de existir, por lo tanto la sesión queda destruida, la razón por la que te comento, es porque dices que mandas a llamar el cierre de sesión via Ajax, por lo tanto después de enviar la petición deberás recargar la página para que los cambios surtan efecto....
si, bueno, hago la peticion via jQuery y lo mando a la pagina principal, osea, si existe el refrescado, por eso te digo ke me funciona el cierre como al 5 o 6to intento, puesto que al pedir el cierre, me actualiza, y luego no me saca, y a veces si.

De echo, afuera del codigo PHP puse esto:

Código Javascript:
Ver original
  1. <script>
  2. window.location= "<? echo $path; ?>";
  3. </script>

Me recomiendan hacer eso? cuando uso header, y uso el jQuery, me introduce la pagina principal dentro de la pagina actual... por eso no uso header, pero necesito la opinion de ustedes que son expertos :)

Cita:
Iniciado por zalito12 Ver Mensaje
Lo de setcookie no te va a servir de mucho, tú no estás utilizando cookies por lo que veo.
Con:
<?php session_unset(); session_destroy(); ?>
debería bastar, de veras no te funciona?
de verdad no me funciona hasta que le intento varias veces :( pero eso habla mal del sistema, estas de acuerdo? deberia hacerlo en 1 intento. :(
__________________
Si todas las URL's que tienes o visitas te parecen largas, visita www.korto.tk - También protege de rastros y con contraseñas tus páginas o URL's.

Última edición por kuriel; 21/10/2012 a las 19:34
  #9 (permalink)  
Antiguo 21/10/2012, 20:22
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Cierre de Sesion con PHP

Amigo la verdad es que no tiene logica tu problema, se me hace que tienes problemas pero con la cache, por descartar problemas deberías descartar usar Ajax hasta encontrar cual es el problema, al menos para cerrar la sesión, también deberías depurar la sesiones usando var_dump($_SESSION) antes y después de cerrar la sesión para ver que esa ocurriendo...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #10 (permalink)  
Antiguo 21/10/2012, 21:58
Avatar de kuriel  
Fecha de Ingreso: febrero-2009
Mensajes: 240
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Cierre de Sesion con PHP

Cita:
Iniciado por Nemutagk Ver Mensaje
Amigo la verdad es que no tiene logica tu problema, se me hace que tienes problemas pero con la cache, por descartar problemas deberías descartar usar Ajax hasta encontrar cual es el problema, al menos para cerrar la sesión, también deberías depurar la sesiones usando var_dump($_SESSION) antes y después de cerrar la sesión para ver que esa ocurriendo...
Concuerdo contigo, se supone ke debe cerrar sesion con esas lineas, no lo hace, lo de la cache suena mas logico. Esto no tiene sentido pero gracias por la ayuda.

vere que pasa con var_dump($_SESSION). gracias.
__________________
Si todas las URL's que tienes o visitas te parecen largas, visita www.korto.tk - También protege de rastros y con contraseñas tus páginas o URL's.

Etiquetas: cerrar, jquery, 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




La zona horaria es GMT -6. Ahora son las 12:51.