Foros del Web » Programando para Internet » PHP »

Parecia que lo tenia pero... (no reconoce las variables "activas")

Estas en el tema de Parecia que lo tenia pero... (no reconoce las variables "activas") en el foro de PHP en Foros del Web. Hola a todos/todas: Por fin he conseguido pasar las variables de sesión de una página a otra . El propósito de esto es hacer depender ...
  #1 (permalink)  
Antiguo 16/02/2011, 08:43
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Parecia que lo tenia pero... (no reconoce las variables "activas")

Hola a todos/todas:

Por fin he conseguido pasar las variables de sesión de una página a otra . El propósito de esto es hacer depender el comportamiento de la página del valor (0 o 1) de la variable que se recoge cuando se produce el login, sin embargo, sucede algo con las variables de sesión en la página de destino ya que al iniciar el login (solo hay una variable que valga 1) en la BBDD me despliega TODOS los menús. Estoy incvestigando porque supongo que es un tema "ortográfico" o de sintaxis pero no doy con el caso.
Pongo el código por si la ha pasado a alguien ya y conoce la solución

Código PHP:
<?php session_start();
//Compruebo errores
error_reporting(E_ALL);
ini_set("display_errors"1); 

//....//....

<div id="Menu_derecha"><?php
        
        
//Recojo variables de sesión
            
isset ($_SESSION["TipoColaborador"]);
            isset (
$_SESSION["TipoAdministrador"]);
            isset (
$_SESSION["activo"]);
            isset (
$_SESSION["silverUser"]);
            isset (
$_SESSION["goldUser"]);
        
        
//Incluyo menú por defecto 
            
include('menus/MenuNormal.php');
        
        
//En función del valor de la variable (0 o 1) incluyo un menú adicional específico     
            
if(isset($_SESSION["TipoColaborador"])!=0){include('menus/MenuColaborador.php');}
            if(isset(
$_SESSION["TipoAdministrador"])!=0){include('menus/MenuAdministrador.php');}
            if(isset(
$_SESSION["activo"])!=0){include('menus/MenuActivo.php');}
            if(isset(
$_SESSION["silverUser"])!=0){include('menus/MenuSilver.php');}
            if(isset(
$_SESSION["goldUser"])!=0){include('menus/MenuGOLD.php');}
                            
    
?></div>
Muchas gracias por la ayuda, se que no os merezco
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #2 (permalink)  
Antiguo 16/02/2011, 08:47
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

creo que tienes un mal concepto de isset http://cl.php.net/manual/es/function.isset.php

las variables de session existen en todas las paginas que tengan session_start()

si yo en 1.php creo $_SESSION['nombre'] = 'Sergio';

luego en 3.php hago echo $_SESSION['nombre']; deberia aparecer Sergio.

isset solo ve si la variable existe o no.
  #3 (permalink)  
Antiguo 16/02/2011, 09:05
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

El recojo las variables de sesion ¿que se supone que es?
los isset se ponen en un if por ejemplo para determinar si algo esta declarado previamente o no.

Las variables de sesion en PHP las almacena el servidor de manera automatica hasta que la sesion se destruye bien porque ha pasado cierto tiempo o porque la destruyes con session_destroy();

Si cuando haces login creas una variable de sesion $_SESSION['variable']='Hola mundo!'; en TODOS los archivos con extension php y que comiencen con session_start() (Si no estan con un include, si lo estan no hacen falta a no ser que los llames mediante ajax y necesites comprobar dichas variables) te deberian aparecer con un simple echo $_SESSION['variable'].
  #4 (permalink)  
Antiguo 16/02/2011, 09:50
Avatar de AhmedRugama  
Fecha de Ingreso: diciembre-2008
Ubicación: Nicaragua
Mensajes: 160
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

Esto lo borras porque es innecesario, no estas haciendo nada:

Código:
//Recojo variables de sesión  
isset ($_SESSION["TipoColaborador"]); 
isset ($_SESSION["TipoAdministrador"]); 
isset ($_SESSION["activo"]); 
isset ($_SESSION["silverUser"]); 
isset ($_SESSION["goldUser"]);
Despues asignas un valor a la variable:

Código:
$_SESSION["TipoColaborador"] = 1;
//Esto es para asignar el valor
Tambien puede ser 0 obviamente

Para verificar el valor:

Código:
if($_SESSION["TipoColaborador"]==1){
   include('menus/MenuColaborador.php');
}

Como ves las sesiones son iguales que cualquier varible:

$a = 3;
$b = 4;
$c = $a + $b;
// $c va a ser 7

La unica diferencia es que las sesiones las puedes declarar en una pagina y utilizas su valor en otra. Tienes que poner session_start(); en las paginas en las que las vayas a utilizar

Saludos
  #5 (permalink)  
Antiguo 16/02/2011, 10:32
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

Hola de nuevo:

En primer lugar muchas gracias a todos . A ver si lo he entendido, lo que decís es que con la declaración de las sesiones que hago en la comprobación del login:

Código PHP:
//Seleccionamos las variables de sesion
            
$queryVarSes "SELECT `TipoColaborador`,`TipoAdministrador`,`activo`,`silverUser`,`goldUser` FROM `personas` WHERE usuario='$usuario'";
            
$VarSes mysql_query($queryVarSes);
            
            while (
$row mysql_fetch_array($VarSesMYSQL_NUM)) {
            
            
$TipoColaborador $row [0];
            
$TipoAdministrador $row [1];
            
$activo $row [2];
            
$silverUser $row [3];
            
$goldUser $row [4];
        }
        
        
//Registramos las variables de sesión
    
            
$_SESSION['TipoColaborador']= $TipoColaborador;
            
$_SESSION['TipoAdministrador']= $TipoAdministrador;
            
$_SESSION['activo']=$activo;
            
$_SESSION['silverUser']= $silverUser;
            
$_SESSION['goldUser']= $goldUser;    
    
//abro la ventana de destino 
Es suficiente, y que luego simplemente poniendo session_start al inicio de cada página las puedo gestionar.
Tal como están declaradas cogen el valor de la base de datos y lo que deseo es manejar sus valores para publicar o no diferentes cosas en mi proyecto.
¿Lo he entendido bien?

Si es así, lo dicho, muchiiiiisimas gracias.
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #6 (permalink)  
Antiguo 16/02/2011, 10:34
Avatar de AhmedRugama  
Fecha de Ingreso: diciembre-2008
Ubicación: Nicaragua
Mensajes: 160
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

Si asi es, lo has pillado.
Suerte en tu proyecto :)
  #7 (permalink)  
Antiguo 18/02/2011, 03:36
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

Hoola de nuevo:

Gracias por vuestra ayuda. He puesto en práctica lo indicado y, efectivamente, parece funcionar.
Sin embargo tengo problemas con una de las variables (activo). He puesto todo según lo indicado y a pesar de que el query del script de control de login (checklogin) trae el valor correcto y que la variable de sesion está nombrada siguiendo la misma sintaxis que las demás, esta no me hace el include ni meda ningún error. La valor existe (si lo saco por echo lo da) pero "no veo" la variable a los efectos de "if($_SESSION['activo']==1){include('menus/MenuActivo.php');}"
He revisado todo y no veo dónde está la diferencia o el fallo para que no funcione.
Pongo de nuevo los códigos que intervienen a ver si alguien con mejor vista y más conocimientos me puede indicar el fallo.
Gracias por anticipado.
El control de login:
Código PHP:
<?php session_start ();
//Compruebo errores
error_reporting(E_ALL);
ini_set("display_errors"1); 

//...//...
//Construyo la select
        
$sql="SELECT * FROM $tbl_name WHERE usuario='$usuario' and clave='$clave' and`activo`=1";
        
$result=mysql_query($sql);

// Cuento las filas de la tabla 
        
$count=mysql_num_rows($result); 
        
// Si $usuario y $clave coinciden, y Activo es igual a 1, tiene que haber una fila

        
if($count==1){

// Registro $usuario, $clave y redirijo a la página de destino 
        
    
$_SESSION['usuario'] = $usuario
    
$_SESSION['clave'] = $clave
    
    
//Seleccionamos las variables de sesion
            
$queryVarSes "SELECT `activo`,`TipoColaborador`,`TipoAdministrador`,`silverUser`,`goldUser` FROM `personas` WHERE usuario='$usuario'";
            
$VarSes mysql_query($queryVarSes);
            
            while (
$row mysql_fetch_array($VarSesMYSQL_NUM)) {
            
            
$activo $row [0];
            
$TipoColaborador $row [1];
            
$TipoAdministrador $row [2];
            
$silverUser $row [3];
            
$goldUser $row [4];
            
        }
        
        
//Registramos las variables de sesión
        
            
$_SESSION['activo']= $activo;
            
$_SESSION['TipoColaborador']= $TipoColaborador;
            
$_SESSION['TipoAdministrador']= $TipoAdministrador;
            
$_SESSION['silverUser']= $silverUser;
            
$_SESSION['goldUser']= $goldUser;    
    
//abro la ventana de destino

//...//...
?>
Y la parte donde las variables de sesion funcionan para abrir menus junto con los echo

<?php

//Incluyo menú por defecto
include('menus/MenuNormal.php');

//En función del valor de la variable (0 o 1) incluyo un menú adicional específico

if($_SESSION['activo']==1){include('menus/MenuActivo.php');}
if($_SESSION['TipoColaborador']==1){include('menus/MenuColaborador.php');}
if($_SESSION['TipoAdministrador']==1){include('menus/MenuAdministrador.php');}
if($_SESSION['silverUser']==1){include('menus/MenuSilver.php');}
if($_SESSION['goldUser']==1){include('menus/MenuGOLD.php');}
echo $activo;
echo $TipoColaborador;
echo $TipoAdministrador;
echo $silverUser;
echo $goldUser;
?>
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #8 (permalink)  
Antiguo 18/02/2011, 03:42
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

Disculpad el mensaje anterior se me ha ido el dedo al escribirlo y lo he subido antes de tiempo

Hoola de nuevo:

Gracias por vuestra ayuda. He puesto en práctica lo indicado y, efectivamente, parece funcionar.
Sin embargo tengo problemas con una de las variables (activo). He puesto todo según lo indicado y a pesar de que el query del script de control de login (checklogin) trae el valor correcto y que la variable de sesion está nombrada siguiendo la misma sintaxis que las demás, esta no me hace el include ni me da ningún error. El valor existe (si lo saco por echo lo da) pero "no veo" la variable a los efectos de "if($_SESSION['activo']==1){include('menus/MenuActivo.php');}"
He revisado todo y no veo dónde está la diferencia o el fallo para que no funcione.
Pongo de nuevo los códigos que intervienen a ver si alguien con mejor vista y más conocimientos me puede indicar el fallo.
Gracias por anticipado.
El control de login:

Código PHP:
<?php session_start (); 
//Compruebo errores 
error_reporting(E_ALL); 
ini_set("display_errors"1);  

//...//... 
//Construyo la select 
        
$sql="SELECT * FROM $tbl_name WHERE usuario='$usuario' and clave='$clave' and`activo`=1"
        
$result=mysql_query($sql); 

// Cuento las filas de la tabla  
        
$count=mysql_num_rows($result);  
         
// Si $usuario y $clave coinciden, y Activo es igual a 1, tiene que haber una fila 

        
if($count==1){ 

// Registro $usuario, $clave y redirijo a la página de destino  
         
    
$_SESSION['usuario'] = $usuario;  
    
$_SESSION['clave'] = $clave;  
     
    
//Seleccionamos las variables de sesion 
            
$queryVarSes "SELECT `activo`,`TipoColaborador`,`TipoAdministrador`,`silverUser`,`goldUser` FROM `personas` WHERE usuario='$usuario'"
            
$VarSes mysql_query($queryVarSes); 
             
            while (
$row mysql_fetch_array($VarSesMYSQL_NUM)) { 
             
            
$activo $row [0]; 
            
$TipoColaborador $row [1]; 
            
$TipoAdministrador $row [2]; 
            
$silverUser $row [3]; 
            
$goldUser $row [4]; 
             
        } 
         
        
//Registramos las variables de sesión 
         
            
$_SESSION['activo']= $activo
            
$_SESSION['TipoColaborador']= $TipoColaborador
            
$_SESSION['TipoAdministrador']= $TipoAdministrador
            
$_SESSION['silverUser']= $silverUser
            
$_SESSION['goldUser']= $goldUser;     
     
//abro la ventana de destino 

//...//... 
?>
Y la parte donde las variables de sesion funcionan para abrir menus junto con los echo de control:

Código PHP:
<?php

//Incluyo menú por defecto 
include('menus/MenuNormal.php');

//En función del valor de la variable (0 o 1) incluyo un menú adicional específico 

if($_SESSION['activo']==1){include('menus/MenuActivo.php');}
if(
$_SESSION['TipoColaborador']==1){include('menus/MenuColaborador.php');}
if(
$_SESSION['TipoAdministrador']==1){include('menus/MenuAdministrador.php');}
if(
$_SESSION['silverUser']==1){include('menus/MenuSilver.php');}
if(
$_SESSION['goldUser']==1){include('menus/MenuGOLD.php');}
echo 
$activo;
echo 
$TipoColaborador;
echo 
$TipoAdministrador;
echo 
$silverUser;
echo 
$goldUser
?>
A ver si alguien es capaz de verlo, yo no lo entiendo
__________________
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #9 (permalink)  
Antiguo 18/02/2011, 11:49
Avatar de AhmedRugama  
Fecha de Ingreso: diciembre-2008
Ubicación: Nicaragua
Mensajes: 160
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

Usando die(); o echo(); tienes que probar:

- Si estas recibiendo el valor de la base de datos
- EN la segunda pagina el valor de $_SESSION['activo']

Si el valor existe en la segunda pagina y no te hace el include el error esta obviamente en que la ruta al archivo a incluir esta mal copiada.
  #10 (permalink)  
Antiguo 19/02/2011, 05:53
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Parecia que lo tenia pero... (no reconoce las variables "activas")

Hola AhmedRugama:

Gracias por la pista. Efectivamente era un tema de "ortografia". Habia escrito el nombre de la página sin tener en cuenta un strolower que utilizo.

Muchas gracias. Doy este tema por resuelto

Gracias a todos
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)

Etiquetas: reconoce, variables
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 07:37.