Foros del Web » Programando para Internet » PHP »

log out no me cierra session

Estas en el tema de log out no me cierra session en el foro de PHP en Foros del Web. Hola, trabajo con Dreamweaver y tengo mi web, la cual esta compuesta por 2 plantillas, una es la de los usuarios no registrados y la ...
  #1 (permalink)  
Antiguo 24/10/2008, 08:16
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 17 años, 1 mes
Puntos: 4
log out no me cierra session

Hola, trabajo con Dreamweaver y tengo mi web, la cual esta compuesta por 2 plantillas, una es la de los usuarios no registrados y la otra es la de los usuarios registrados.El problema esta en la de los usuarios registrados, en la cual tengo el " hola !!! <?php echo $_SESSION['MM_Username']; ?> " y tambien el "cerrar session".Cuando de doy a cerrar session, me redirige a la pagina la cual yo le habia indicado que fuera, oero si el usuario vuelve a entrar en una pagina con restriccion por usuario que necesite login, pues entra directamente si logearse, como si no se hubiera cerrado la session.

Espero haberme explicado bien..

Sabeis porque ocurreo eso ???

Os dejo el codigo del logout:

<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}

// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);

$logoutGoTo = "../index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>

Gracias.


Posteé este tama en Dreamweaver, pero creo que este es el foro adecuado..
  #2 (permalink)  
Antiguo 24/10/2008, 08:22
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: log out no me cierra session ... ayuda!!!

Yo tengo este código en mi archivo logout.php y funciona a la perfección:

  #3 (permalink)  
Antiguo 24/10/2008, 08:30
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 21 años, 2 meses
Puntos: 2
Respuesta: log out no me cierra session ... ayuda!!!

Mm ponle session_start(); en el if de logout...

Cita:
Iniciado por jonysi_d Ver Mensaje
el usuario vuelve a entrar en una pagina con restriccion por usuario que necesite login, pues entra directamente si logearse, como si no se hubiera cerrado la session.
En esa página, tienes la confirmacion que es SOLO para usuarios registrados comprobados si existe o no la session?
__________________
Kame Kame AH
  #4 (permalink)  
Antiguo 24/10/2008, 08:51
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: log out no me cierra session ... ayuda!!!

GoKu te refieres a esto ??

<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "0,3";
$MM_donotCheckaccess = "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;

// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}

$MM_restrictGoTo = "../login_incorrecto.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
$MM_referrer .= "?" . $QUERY_STRING;
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
  #5 (permalink)  
Antiguo 24/10/2008, 09:01
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: log out no me cierra session ... ayuda!!!

Ok...

Sólo a manera de sugerencia, se debería usar
Código PHP:
    session_start();
    
$_SESSION=array();
    
session_destroy(); 
$_SESSION=array(), algunas veces, no hacen lo que quisiéramos session_unset(); y session_destroy();

Referencia:
http://www.php.net/manual/es/function.session-unset.php

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #6 (permalink)  
Antiguo 24/10/2008, 09:33
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: log out no me cierra session ... ayuda!!!

te refieres a dejarlo asi ???

<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
$_SESSION=array();
session_destroy();
}

// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);

$logoutGoTo = "../index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "0,3";
$MM_donotCheckaccess = "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;

// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}

$MM_restrictGoTo = "../login_incorrecto.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
$MM_referrer .= "?" . $QUERY_STRING;
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
  #7 (permalink)  
Antiguo 24/10/2008, 09:41
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: log out no me cierra session ... ayuda!!!

Válgame!!!!

Hola jonysi_d, cómo vas??

1. Esto no lo tienes por que hacer, por que ya con $_SESSION=array(), las "borras", entonces eso sería código innecesario.
Código PHP:
$_SESSION['MM_Username'] = NULL;
  
$_SESSION['MM_UserGroup'] = NULL;
  
$_SESSION['PrevUrl'] = NULL;
  unset(
$_SESSION['MM_Username']);
  unset(
$_SESSION['MM_UserGroup']);
  unset(
$_SESSION['PrevUrl']); 
2. Un logout consta simplemente de las instrucciones que te comenté mas arriba... veo que inicias dependiendo de ciertas condiciones "session_start" muchas veces, por que no dejas solo una??? Creo que cuando te cierran la sesión quieres redireccionar a una página, ok, eso se cumple simplemente con "header("location:pagina.php")" Qué es el resto de código????

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #8 (permalink)  
Antiguo 24/10/2008, 10:07
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: log out no me cierra session ... ayuda!!!

De hecho, como dige trabajo con Dreamweaver y ya sabras que te lo va codificando todo al aplicar una funcion del programa como por ejemplo "desconectar usuario" genera este codigo:

<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}

// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);

$logoutGoTo = "../index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>


el resto del codigo es para restriccion a la pagina por niveles de usuarios.
  #9 (permalink)  
Antiguo 24/10/2008, 10:12
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 16 años, 4 meses
Puntos: 105
Respuesta: log out no me cierra session ... ayuda!!!

amigo, como dice Legoltaz y Carxl.

para finalizar la session, solo llamas a un archivo y que contenga:
Código PHP:
<?php
session_start
();
session_unset();
session_destroy();
?>
y te borra todo el contenido de las sessiones.

SUERTE.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #10 (permalink)  
Antiguo 24/10/2008, 10:56
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: log out no me cierra session ... ayuda!!!

Ok jonysi_d...

Una sugerencia mas...

No dejes que un editor te coloque código que no necesites, porque precisamente se evitan este tipo de problemas.

Intenta programar tú "a mano" Y para eso no necesitas Dreamweaver, inclusive, solo con bloc de notas, o notepad.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #11 (permalink)  
Antiguo 27/10/2008, 04:17
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: log out no me cierra session

lo intento, pero me faltan muchos conocimientos ahun, voy poquito a poco, pero el otro problema que tengo, es que vosotros, los entendidos en programacion, explicais que tengo que poner el
<?php
session_start();
session_unset();
session_destroy();
?>

pero yo para averiguar donde lo debo colocar, me paso semanas,
no quiero que malinterpreteis mis palabras, ya que agradezco mucho vuestra ayuda, creo que no hubiera conseguido lo que tengo ahora son vosotros.
Muchas gracias..
  #12 (permalink)  
Antiguo 27/10/2008, 04:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: log out no me cierra session

deberia quedar asi ???


if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);


$logoutGoTo = "../index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}


?>
<?php
session_start();
session_unset();
session_destroy();
?>
  #13 (permalink)  
Antiguo 27/10/2008, 05:16
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 21 años, 2 meses
Puntos: 2
Respuesta: log out no me cierra session

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
session_start();
session_unset();
session_destroy();


$logoutGoTo = "../index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}


?>
__________________
Kame Kame AH
  #14 (permalink)  
Antiguo 27/10/2008, 05:56
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: log out no me cierra session

Muchas gracias ...solucionado
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 14:12.