Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/09/2008, 19:24
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Limpiar el valor de una variable de sesion

@masterojitos, esas funciones son para destruir una sesión. Lo que juandedios pregunta es como eliminar UNA sola variable.

@Genetix, al darle un valor de vacío a la variable, la función isset() aplicada sobre ella seguirá devolviendo true. Examinen este código y vean todas las posibles formas de eliminar una variable y de pseudoeliminarla:

Código PHP:
<?php
 
session_start
();
 
echo 
'<pre>';
 
// Esto crea una variable
$_SESSION['variable'] = 'valor';
 
echo 
"<b>Estado de la variable original</b> \n";
 
echo 
"isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime true porque la variable si existe
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime false porque la variable tiene un contenido
 
echo "var_dump(): ";
var_dump$_SESSION['variable'] );
 
echo 
"\n";
 
// Esto no elimina la variable
$_SESSION['variable'] = '';
 
echo 
"<b>Estado de la variable asignandole un valor vacío ''</b> \n";
 
echo 
"isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime true porque la variable si existe
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime true porque la variable está vacía, pero eso no significa que ya no existe
 
echo "var_dump(): ";
var_dump$_SESSION['variable'] );
 
echo 
"\n";
 
// tampoco la elimina
$_SESSION['variable'] = false;
 
echo 
"<b>Estado de la variable asignandole un valor de falso false</b> \n";
 
echo 
"isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime true, pues la variable existe y tiene asignado el valor booleano false
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime true, pues la variable no tiene un contenido, tiene un valor booleano
 
echo "var_dump(): ";
var_dump$_SESSION['variable'] );
 
echo 
"\n";
 
// Esto no la elimina
$_SESSION['variable'] = 0;
 
echo 
"<b>Estado de la variable asignandole un valor de 0</b> \n";
 
echo 
"isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime true, porque la variable existe
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime true, porque la variable no tiene un contenido de texto, sino es un entero
 
echo "var_dump(): ";
var_dump$_SESSION['variable'] );
 
echo 
"\n";
 
// Esto sí la elimina
unset($_SESSION['variable']);
 
echo 
"<b>Estado de la variable pasándole la función unset()</b> \n";
 
echo 
"isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); // Imprime false, porque la variable ya no existe
echo "empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); // Imprime true, porque la variable no tiene un contenido (no existe)
 
echo "var_dump(): ";
var_dump$_SESSION['variable'] );
 
echo 
"\n";
 
// Esto tambien la elimina
$_SESSION['variable'] = null;
 
echo 
"<b>Estado de la variable asignandole un valor de NULL</b> \n";
 
echo 
"isset(): ";
var_dump( isset( $_SESSION['variable'] ) ); 
echo 
"empty(): ";
var_dump( empty( $_SESSION['variable'] ) ); 
 
echo 
"var_dump(): ";
var_dump$_SESSION['variable'] );
 
?>
Imprime:
Código:
Estado de la variable original 
isset(): bool(true)
empty(): bool(false)
var_dump(): string(5) "valor"

Estado de la variable asignandole un valor vacío '' 
isset(): bool(true)
empty(): bool(true)
var_dump(): string(0) ""

Estado de la variable asignandole un valor de falso false 
isset(): bool(true)
empty(): bool(true)
var_dump(): bool(false)

Estado de la variable asignandole un valor de 0 
isset(): bool(true)
empty(): bool(true)
var_dump(): int(0)

Estado de la variable pasándole la función unset() 
isset(): bool(false)
empty(): bool(true)
var_dump(): NULL

Estado de la variable asignandole un valor de NULL 
isset(): bool(false)
empty(): bool(true)
var_dump(): NULL
Con esto vemos que sólo asignándole un valor NULL o aplicando la función unset() podremos eliminar realmente una variable.

Saludos,

EDITO: var_dump() se usa para imprimir el valor de una variable y el tipo de elemento que representa. Muy útil a la hora de programar y usar diversos tipos de variables.

Última edición por okram; 01/09/2008 a las 19:31