Foros del Web » Programando para Internet » PHP »

PHP OO unset() NO funciona, no se termina la Sesion

Estas en el tema de unset() NO funciona, no se termina la Sesion en el foro de PHP en Foros del Web. Muy buenos días a todos!!!! Tengo el siguiente código para terminar una sesión en php....... Código PHP: setcookie ( "status" ,  "" , time ()- ...
  #1 (permalink)  
Antiguo 17/08/2015, 10:47
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 16 años, 3 meses
Puntos: 10
unset() NO funciona, no se termina la Sesion

Muy buenos días a todos!!!!

Tengo el siguiente código para terminar una sesión en php.......

Código PHP:
setcookie("status""",time()-$g_cookietimeout);
setcookie("user"""time()-$g_cookietimeout);
setcookie("group"""time()-$g_cookietimeout);
setcookie("authentication""",time()-$g_cookietimeout);
setcookie("laston"""time()-$g_cookietimeout);

unset(
$status);
unset(
$user);
unset(
$authentication);
unset(
$laston);
unset(
$logout); 
Lo interesante de esto es que al darle clic al botón "Salir" del sistema, si me manda al archivo donde se encuentra el código mostrado, y posteriormente a la pagina en donde inicia sesión de nuevo el usuario; el punto es que al darle clic al botón de "Iniciar Sesión", esto sin introducir los datos del Usuario y Contraseña en los campos correspondientes,me manda directo al menú!!!! Por lo que supongo que el código de arriba NO termina la sesión anterior!!!!!

Alguna idea de lo que pueda estar mal!!!???????

De antemano agradezco la ayuda brindada!!!!!
Saludos
__________________
Solo se... que no se nada!!! 0_o
  #2 (permalink)  
Antiguo 17/08/2015, 12:24
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 10 meses
Puntos: 67
Respuesta: unset() NO funciona, no se termina la Sesion

Prueba con:
Código PHP:
Ver original
  1. unset($_COOKIE['Aqui_el_nombre']);
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net

Última edición por bookmaster; 17/08/2015 a las 12:39
  #3 (permalink)  
Antiguo 18/08/2015, 07:27
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: unset() NO funciona, no se termina la Sesion

Hola bookmaster!!!

Ya hice las pruebas pero aun me mantiene la sesión!!! Solo que con la diferencia de que ya no me manda a la pagina de "Inicio de Sesión", si no me la mantiene en la parte donde se muestra el menú del usuario.

Asi quedo el codigo, pero no lo hace!!!!

Código PHP:
unset($_COOKIE['status']);
unset(
$_COOKIE['user']);
unset(
$_COOKIE['group']);
unset(
$_COOKIE['authentication']);
unset(
$_COOKIE['laston']); 
Tendras alguna otra idea del por que no termina la sesión!!!???


De antemano muchas gracias por la ayuda!!!!!
__________________
Solo se... que no se nada!!! 0_o
  #4 (permalink)  
Antiguo 18/08/2015, 08:02
 
Fecha de Ingreso: agosto-2015
Ubicación: cochabamba
Mensajes: 1
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: unset() NO funciona, no se termina la Sesion

Saludos
Huacho12
Temo que estas haciendo un mal uso de las cookies q de hecho sirven para almacenar en el computador del cliente informacion de las preferencias del sitio para guardar de forma persistente, en cambio para manejar una session tendrias que usar session

Para iniciar una session PHP :


<?php
session_start();
//
?>


Para guardar valores en una variable Session:


<?php
session_start();
// Guardar datos de la session
$_SESSION['login_user']= $username; // iniciando session con una variable PHP


para leer una variable de session:


<?php
session_start();
//
$_SESSION['login_user']= $username; //iniciando session con una variable PHP
echo $_SESSION['login_user'];


Para terminar a PHP Session:


<?php
session_destroy(); // es usado para destruir todas las seciones
//O
if(isset($_SESSION['id']))
unset($_SESSION['id']); //para terminar una sesion especifica



y para terminar tus paginas tendrian q preguntar si hay una sesion abierta, como ejemplo el de abajo q en caso de que el valor sea nulo lo devuelve al index de modo que solo si esta iniciada la secion se podra entrar a esta pagina :)

if($_SESSION['id_cli']=='')
{
header('Location: index.php');
}
else
{


o tambien pues usar la siguiente linea que pregunta si hay una session abierta

if(isset($_SESSION))
{
  #5 (permalink)  
Antiguo 18/08/2015, 08:36
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: unset() NO funciona, no se termina la Sesion

Hola!! freeccboyte!!

Muchas gracias por la información!!!!

Ya he llegado a usar las variables de sesión, y se me hacen mas fáciles que estar usando las cookies; el detalle esta en que este sistema no yo lo desarrolle, y el programador que lo hizo utilizo las cookies para la sesiones de los usuarios..

Espero si tienes alguna idea de como terminar las sesiones mediante cookies, serán bien recibidas!!! Muchas gracias freeccboyte!!!

Otra seria que cambie las cookies por $_SESSION!!!!

Saludos!!!
__________________
Solo se... que no se nada!!! 0_o
  #6 (permalink)  
Antiguo 18/08/2015, 20:15
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Respuesta: unset() NO funciona, no se termina la Sesion

$_COOKIE es una variable superglobal que se autocompleta con los valores de la cookie, nada mas que eso.

unset solo libera la memoria ram asiganada una variable o referencia, por lo que unset($_COOCKIE) solo libera el espacio en la ram asigando a esa peticion en particular.

Lo que hay que hacer es cambiar el valor y setear la fecha de expiracion a la fecha actual o a cualquier otra anterior por ejemplo.

Código PHP:
Ver original
  1. setcookie("nombre", "", time()-3600);
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #7 (permalink)  
Antiguo 19/08/2015, 13:37
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años, 8 meses
Puntos: 11
Respuesta: unset() NO funciona, no se termina la Sesion

En realidad para crear la cookie hago esto:
Código PHP:
$object "Información que quieres guardar, generalmente guardo objetos JSON";
setcookie('usuario'$objecttime() + (86400 30), "/"); // 86400 = 1 día, en este caso * 30 un mes 
Y para terminarla hago esto:
Código PHP:
setcookie('usuario''', -1'/'); 

Al igual para las seciones:
Código PHP:
$object "Información que quieres guardar, generalmente guardo objetos JSON";
//Para abrirla:
$_SESSION['usuario'] = $object
Para destruirla:
Código PHP:
 session_destroy(); 

Éxitos!...
  #8 (permalink)  
Antiguo 19/08/2015, 20:10
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Respuesta: unset() NO funciona, no se termina la Sesion

@jhonjaider1000 por defecto las sesiones se propagan por cookies, por lo que destruir la sesion no destruye las cookies, es necesario destruir y expirar las coockies al mismo tiempo.
Personalmente uso este codigo:
Código PHP:
Ver original
  1. public function destroy() {
  2.        if(session_status() === PHP_SESSION_ACTIVE) {
  3.            if (ini_get("session.use_cookies")) {
  4.                $p = session_get_cookie_params();
  5.                setcookie(session_name(), "", time() - 42000, $p["path"], $p["domain"], $p["secure"], $p["httponly"]);
  6.            }
  7.            session_unset();
  8.            session_destroy();
  9.        }
  10.    }
Previo a llamar a este metodo se debe invocar a session_start en algun momento.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: unset
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 13:33.