Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/04/2004, 13:26
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Siempre que accedas a una variable de sesión tanto para leer su valor como para definirlo y/o usar alguna función referente a sesionse (salvo excepciones que se hace antes de...) se ha de usar la función:

Código PHP:
<?
session_start
();
//y luego tus accesos a tus variabels de sesión:
if ((!isset($_SESSION['logado'])) || ($_SESSION['logado']!=1)) 
// etc...
(En teoría con el isset() te sobra para validar la existencia de tu variable tipo "flag/bandera/estado" => "logado". Si existe es que la creastes .. esa es la virtud de los arrays superglobales. Para ese caso y como lo aplicas .. el valor de dicha variable importa poco cara a la validación. En tal caso guardate por ejemploa ahí el nombre de ese usuario que accede al sistema y le muestras un mensajito tipo "Usuario: ".$_SESSION['logado'] ...

También Fijate que...

Código PHP:
if(!session_id()){
session_start(); 
El session_id() en teoría no toma el valor de la sesión en curso hasta que no se hace un session_start() que inicia o continua con la sesión que venga propagado a dicho escript el SID .. sea por el URL (como parece que lo quieres hacer) o venga en una cookie (otra opción y más segura de propagar el SID).

Otro detalle ..

El SID se compone del nombre de la sesión y el ID de la sesión. El nombre de la sesión puede ser variable dependiendo de que si definistes un nombre de sesión con: sesson_name() o de la configuración de PHP (php.ini). Por defecto tiene el nombre de sesión que usas: PHPSESSID pero como te comento puede variar .. así que es altamente recomendable que uses el SID como constante o bien lo compongas a mano con la función session_name() + session_id()

Ejemplo:
Código PHP:
header("Location: index.php?" SID); 
ó
Código PHP:
header("Location: index.php?" session_name()."=".session_id()); 
Y .. cuando redireccionas por Header() de "Location" (cabecera HTTP) .. le indicas al navegador que cambie de página pero el flujo del código PHP sigue ejecutandose hasta el final. Dependiendo de los condicionales que uses y en general del flujo del mismo podrás experimentar problemas vários .. Por ende, es recomendable parar la ejecución del script cuando hagas un "header("Location ....")" ya que en teoría ahí mismo deseas que se pare la ejecución de ese script y se llame a otro.

ejemplo:
Código PHP:
header ("Location: tal.php");
exit; 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 20/04/2004 a las 13:32