Foros del Web » Programando para Internet » PHP »

como usar session_unset()

Estas en el tema de como usar session_unset() en el foro de PHP en Foros del Web. Hola, estoy desarrollando un sitio que consta de registro de usuario por medio de sessiones. todo bien. pero el problema que tengo es que necesito ...
  #1 (permalink)  
Antiguo 06/01/2005, 15:51
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
como usar session_unset()

Hola, estoy desarrollando un sitio que consta de registro de usuario por medio de sessiones. todo bien. pero el problema que tengo es que necesito "limpiar" o "vaciar" las variables de secion. (session.cache_expire=180, entiendo que mueren solas) En el foro vi como usar session_unset() que vacia estas variables y lo hace, pero no se por que cuando ingreso nuevamente ingresa al "segundo intento"?? Adjunto el codigo:

Pd: este es mi archivo de registro o ingreso de usuarios. Reemplase session_destroy() por session_unset(), ya que la primera "pega" el explorer?


<?php
session_start();
session_unset();
include("conexion.php");
$link=Conectarse();
$query="SELECT codcar, nombre FROM carteros WHERE nombre = '$nombre' AND codcar = '$codigo' ";
$consultar=mysql_query($query,$link);
if (mysql_num_rows($consultar)>0)
{
$_SESSION['id_sesion']=session_id();
$_SESSION['nombre']=mysql_result($consultar,0,"nombre");
$_SESSION['codigo']=mysql_result($consultar,0,"codcar");
$_SESSION['autentificado']="si";
header("Location: usuario.php");
}else{
header("Location: inicio.php?error=si");

exit();
}
?>
  #2 (permalink)  
Antiguo 07/01/2005, 06:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
session.cache_expire=180, entiendo que mueren solas

No, no es esa directiva no define la duración de una sesión .. en principio (y última instancia) lo defina la directiva: session.gc_maxtimelife (de tu php.ini). En combinación con session.cookie_expire (si es que propagas el SID en cookies vía session.use_cookies a ON).


Sobre el tema de "matar" una sesión .. debes usar session_destroy() ..

La función session_unset() no se usa si usas los arrays superglobales: $_SESSION

Fijate en la documentación oficial:
http://www.php.net/session_destroy

Ese "script" (código) ha de ser ejecutado como una petición nueva al servidor .. es decir .. no en el mismo script que posteriormente registras unas variables de sesión .. sino que sea un "logout.php" por ejemplo que llames y al final de este redirecione a donde corresponda (en tu caso a esa misma página) .. Las variables de sesión o "destrucciones" de una sesión no quedan habilitadas (disponibles) hasta que se hace una nueva petición al servidor (que se pida un link nuevo de un script o página .. que se recarge la página .. etc).

Para redireccionar puedes usar header("Location: dondesea.php") ..

Podrías hacer algo tipo:

Código PHP:
<?
session_start
();
if (isset (
$_SESSION['nombre'])){
// Si está una sesión activa -> mata sesion
// todo el código del link del manual oficial de PHP que te dejé .. +

// redireccionar aquí mismo .. 
header ("Location: $_SERVER['PHP_SELF']");
exit;


// resto de tu actual código (desde tu include() hacia abajo ..)

?>
También tienes la función session_regenerate_id() para regenerar el ID de sesión .. revisalo.

PD: .. un comentario: ¿para que usas una variable "autentificado" de sesión para decir "si" .. si ya registras otras variables como ese "ID" de usuario y otras varaibles? .. basate en la existencia de alguna de esas otras variables para ver que tu sesión está activa en lugar de usar una variable más extra para una cosa que ya tienes por otro lado implementado y lo usas.

Por otro lado .. no sé para que guardas tu "session_id()" en una variable de sesión .. ese dato lo tienes siempre bajo esa llamada de tu función session_id() .. no es necesario propagarlo en una variable de sesión .. es redundante.

Un saludo,
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 23:53.