Foros del Web » Programando para Internet » PHP »

variables de sesión

Estas en el tema de variables de sesión en el foro de PHP en Foros del Web. Hola a tod@s!! Tengo un problema.... y es que no se nada sobre las variables de sesión, no como se utilizan ni nada. Os cuento ...
  #1 (permalink)  
Antiguo 02/07/2011, 03:36
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
variables de sesión

Hola a tod@s!!

Tengo un problema.... y es que no se nada sobre las variables de sesión, no como se utilizan ni nada.
Os cuento un poco. Tengo que hacer una web donde hay varios usuarios y en función del usuario que sea, en una misma página, quiero mostrar un menú de opciones diferentes. (supongo que esto se hace con las variables de sesión... quero decir, según el tipo que sea mostraría un menú u otro, no?!)

Yo tengo este código para cuando se autentican en el sistema:

Código PHP:
<?php
// ... más código
$sql "SELECT * FROM usuarios WHERE dni='$usuario' AND (contrasenya='$contrasenya_encriptada' OR contrasenya='$contrasenya')";
$resultados mysql_query($sql$conexion);
if(
$row mysql_fetch_array($resultados)) {
    
$tipo_usuario $row["tipo_usuario"];
    echo 
"tipo usuario = " $tipo_usuario "<br>";
    if(
$tipo_usuario == "administrador"){
        
$_SESSION[tipo] = "administrador"// guardamos el tipo de usuario
?>
        Bienvenid@ <?php echo $row["nombre"];?>,<br /> pulse <a href="principal_administrador.html"> aquí </a>para acceder a la pgina principal como administrador.
<?php 
}
else if(
$tipo_usuario == "gestor"){
         
$_SESSION[tipo] = "gestor"// guardamos el tipo de usuario
?>
    Bienvenid@ <?php echo $row["nombre"];?>,<br /> pulse <a href="principal_gestor.html"> aqu </a>para acceder a la pgina principal como gestor.
<?php
}
else if(
$tipo_usuario == "artista"){
    
$_SESSION[tipo] = "artista"// guardamos el tipo de usuario
?>
Bienvenid@ <?php echo $row["nombre"];?>,<br /> pulse <a href="principal_artista.html"> aqu </a>para acceder a la pgina principal como artista.
<?php 
}
else{
    
$_SESSION[tipo] = "usuario"// guardamos el tipo de usuario
?>
        Bienvenid@ <?php echo $row["nombre"];?>,<br /> pulse <a href="principal_usuario.html"> aqu </a>para acceder a la pgina principal como usuario.
<?php 
}
Mi pregunta es... ¿qué código necesito poner en el resto de páginas para que me muestre un menú u otro en función del tipo de usuario?

Espero que podais ayudarme!!

Saludos y gracias!
  #2 (permalink)  
Antiguo 02/07/2011, 03:44
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 4 meses
Puntos: 66
Respuesta: variables de sesión

Al principio del script debes iniciar la sesión con session_estart(); y si usas páginas independientes debes continuar la sesión en cada una de ellas tambien con session_estart(); al principio de cada página.

Luego donde quieras mostrar el menú:

Código PHP:
if($_SESSION['tipo']=='admin'){
muestro menú del admin
}
//etc... 
saludos,
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 02/07/2011, 03:49
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Hola!

Gracias por contestar tan rápido... ya había probado eso, adjunto el código (por si acaso):

Código PHP:
Ver original
  1. <?php
  2.  
  3.     include('conexion.php');
  4.     echo "probando sesion";
  5.  
  6.     session_start();
  7.  
  8.     if($_SESSION[tipo] == "gestor"){
  9.         echo "mostraremos menu de gestor";
  10.     }
  11.     else if($_SESSION[tipo] == "usuario"){
  12.         echo "mostraremos menu usuario";
  13.     }
  14.     else{
  15.         echo "menu artista";
  16.     }
  17.  
  18. ?>

pero me muestra lo siguiente:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\probando_sesion.php:3) in C:\wamp\www\probando_sesion.php on line 9

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\probando_sesion.php:3) in C:\wamp\www\probando_sesion.php on line 9

menu artista
  #4 (permalink)  
Antiguo 02/07/2011, 04:42
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Fíjate como has colocado la variable de session.
La parte asociativa, el nombre para que entiendas, está sin comillas.

Cambia $_SESSION[tipo] por:
Código PHP:
$_SESSION["tipo"//no importa sin son comillas simples o dobles 
Cualquier otro error coméntanos.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #5 (permalink)  
Antiguo 02/07/2011, 05:15
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Nada... he puesto las comillas y me sigue saliendo error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\conexion.php:10) in C:\wamp\www\probando_sesion.php on line 6

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\conexion.php:10) in C:\wamp\www\probando_sesion.php on line 6

menu artista
  #6 (permalink)  
Antiguo 02/07/2011, 06:30
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Cita:
Iniciado por yo_mismita Ver Mensaje
Nada... he puesto las comillas y me sigue saliendo error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\conexion.php:10) in C:\wamp\www\probando_sesion.php on line 6

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\conexion.php:10) in C:\wamp\www\probando_sesion.php on line 6

menu artista
Ese error no está en el código que has puesto sino en el conexion.php como bien se indica.

como pone "Cannot send session cookie - headers already sent by" Se supone que alguna cabecera está mal. Si pones que tienes en el conexión.php sería más fácil entender que sucede.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #7 (permalink)  
Antiguo 02/07/2011, 06:48
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Comprueba los session_start(); no sea que lo tengas también en el conexion.php aunque de estar repetido debería mostrar otro aviso...
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #8 (permalink)  
Antiguo 02/07/2011, 06:54
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años, 7 meses
Puntos: 12
Respuesta: variables de sesión

Bueno acorte tu codigo ya que no veo la utilidad de tanto if else, etc... agregue el inicio de session y un ob_start(); para que el header no moleste (este debe ir a inicio de tu codigo), SUERTE :D

Código PHP:
Ver original
  1. <?php
  2. // ... más código
  3. $sql = "SELECT * FROM usuarios WHERE dni='$usuario' AND (contrasenya='$contrasenya_encriptada' OR contrasenya='$contrasenya')";
  4. $resultados = mysql_query($sql, $conexion);
  5. if($row = mysql_fetch_array($resultados)) {
  6.     //obtnemos el tipo de usuario
  7.     $tipo_usuario = $row["tipo_usuario"];
  8.     //guardamos el tipo de usuario en la session
  9.     session_start(); //por si no lo pusiste antes
  10.     $_SESSION['tipo'] = $tipo_usuario;
  11.     echo "tipo usuario = " .$tipo_usuario."<br>";
  12.     //nos evitamos todo el if y la parafernalia que tienes ya que es solo UNA variable que cambia
  13.     echo 'Bienvenid@ '.$row['nombre'].', puelse <a href="principal_'.$tipo_usuario.'.html">aquí</a> para acceder a la pagina principal como '.$tipo_usuario;
  14. }
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #9 (permalink)  
Antiguo 02/07/2011, 07:00
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Su error viene de www\conexion.php:10 no de ese código.

La reducción claro que se podría hacer, pero hasta tú código se puede simplicar más

Creo que sería mejor si directamente hace la estructura bien en vez de estar añadiendo nada.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #10 (permalink)  
Antiguo 02/07/2011, 07:02
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años, 7 meses
Puntos: 12
Respuesta: variables de sesión

creo que seria mejor que ponga el codigo de su conexion, es decir, la cosa completa o que puebe con ob_start();

y se puede acotar el codigo claro que si, sacando los comentarios xD

saludos :D
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #11 (permalink)  
Antiguo 02/07/2011, 07:08
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Cita:
Iniciado por xalupeao Ver Mensaje
creo que seria mejor que ponga el codigo de su conexion, es decir, la cosa completa o que puebe con ob_start();

y se puede acotar el codigo claro que si, sacando los comentarios xD

saludos :D
Para gustos colores supongo. Pero yo lo reduciría quitando variables que no necesitas. Guardas en memoria cosas que ya tienes. ¿Para que duplicar?

Como ves no me refería a quitar comentarios...
Código PHP:
    <?php
    ob_start
();
    
    
$resultados mysql_query("SELECT * FROM usuarios WHERE dni='$usuario' AND (contrasenya='$contrasenya_encriptada' OR contrasenya='$contrasenya')"$conexion);
    if(
$row mysql_fetch_array($resultados) or die()) {
        
session_start(); //por si no lo pusiste antes
        
        
$_SESSION['tipo'] = $row["tipo_usuario"];
        
        echo 
'tipo usuario = '.$row["tipo_usuario"].'<br>'.'Bienvenid@ '.$row['nombre'].
        
', puelse <a href="principal_'.$row["tipo_usuario"].'.html">aquí</a> para acceder a la pagina principal como '.$row["tipo_usuario"];
    }
    
?>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #12 (permalink)  
Antiguo 02/07/2011, 07:09
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Este es mi código en conexion.php:

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Conectando a la base de datos 'galeriaarte'...</title>
  5. </head>
  6.  
  7.  
  8. [HIGHLIGHT="PHP"]<?php
  9.  
  10. $host = "localhost";
  11.  
  12. $usuario = "al073529";
  13.  
  14. $password = "galeria";
  15.  
  16. $bd = "galeriaarte";
  17. $conexion = mysql_connect($host, $usuario, $password);
  18. if (mysql_select_db($bd, $conexion))
  19.     echo "hola, al fin he entrado a la base de datos" . "<br><br>";
  20. else
  21.     echo "adios";
  22. ?>
</body>
</html>[/HIGHLIGHT]

Además, he probado a poner ob_start(); a continuación de session_start(); y nada... sigo con las mismas...

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\conexion.php:10) in C:\wamp\www\probando_sesion.php on line 6

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\conexion.php:10) in C:\wamp\www\probando_sesion.php on line 6

menu artista



El código se que se puede mejorar... pero de momento sólo pido que funcione. Con más tiempo mejoraré el código... Gracias!
  #13 (permalink)  
Antiguo 02/07/2011, 07:12
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Elimina todo el doctype head body etc del conexion.php.
La conexion hazla sólo con php.
El html a un lado, php al otro.

Código PHP:
<?php include('conexion.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Conectando a la base de datos 'galeriaarte'...</title>
</head>
 
<body>

<?php //el resto del código ?>

</body>
</html>
Código PHP:

    $conexion 
mysql_connect("localhost" "al073529""galeria") or die ( "No se ha podido establecer la conexi&oacute;n con el servidor");
    if (
mysql_select_db("galeriaarte"$conexion))
        echo 
"hola, al fin he entrado a la base de datos" "<br><br>";
    else
        echo 
"adios"
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #14 (permalink)  
Antiguo 02/07/2011, 07:27
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Nada... sigo igual.
Lo único que si dejo ob_start(); y quito session_start(); ya no me muestra ningún aviso, ningún warning.... pero me sigue mostrando "menu artista" cuando debería ser "menu usuario" porque lo tengo como usuario en la base de datos. (Lo he vuelto a comprobar por si era un despiste, pero no... no lo muestra bien).
  #15 (permalink)  
Antiguo 02/07/2011, 07:39
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años, 7 meses
Puntos: 12
Respuesta: variables de sesión

conexion.php
Código PHP:
Ver original
  1. <?php
  2.      
  3.     $host = "localhost";  
  4.     $usuario = "al073529";  
  5.     $password = "galeria";
  6.     $bd = "galeriaarte";
  7.     $conexion = mysql_connect($host, $usuario, $password);
  8.     if (mysql_select_db($bd, $conexion)){
  9.         echo "hola, al fin he entrado a la base de datos" . "<br><br>";
  10.     }else{
  11.         echo "adios";
  12.     }
  13.     ?>

probando_sesion.php
Código PHP:
Ver original
  1. <?php
  2.     ob_start();
  3.     include_once('conexion.php');
  4.     session_start();
  5.    
  6.     $resultados = mysql_query("SELECT * FROM usuarios WHERE dni='$usuario' AND (contrasenya='$contrasenya_encriptada' OR contrasenya='$contrasenya')", $conexion);
  7.     if($row = mysql_fetch_array($resultados)) {
  8.         $_SESSION['tipo'] = $row["tipo_usuario"];
  9.        
  10.         echo 'tipo usuario = '.$row["tipo_usuario"].'<br>'.'Bienvenid@ '.$row['nombre'].
  11.         ', puelse <a href="principal_'.$row["tipo_usuario"].'.html">aquí</a> para acceder a la pagina principal como '.$row["tipo_usuario"];
  12.     }
  13.     ?>
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #16 (permalink)  
Antiguo 02/07/2011, 07:50
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Nada... xalupeao acabo de probar lo que me has puesto tu... y nada... me sigue saliendo menu artista...
y de verdad que en la base de datos está como usuario! no se que puede ser! ni como arreglarlo!
  #17 (permalink)  
Antiguo 02/07/2011, 07:52
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Entonces es probable que ahora el problema esté en la consulta.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #18 (permalink)  
Antiguo 02/07/2011, 07:54
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

En la consulta... te refieres a donde se guarda cada tipo de sesión?!
No se lo que hago mal.... nunca había visto ni usado nada de variables de sesión!
  #19 (permalink)  
Antiguo 02/07/2011, 08:01
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Haz un echo de la variable $row["tipo_usuario"]; para saber que valor te está cogiendo ya que no sé si estás cogiendo el código que te pasaron los otros usuarios y ya no tienes los if y los else.

Si usas ese puede ser un problema de consulta.
Si sigues con el tuyo puede ser un problema de la condición o de la consulta.

La consulta es la "consulta en SQL" obviamente. lo que pones como:

"Select * FROM ..."

Dinos que te da el echo $row["tipo_usuario"]; y si se corresponde al dato que debería salir para ir descartando cosas.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #20 (permalink)  
Antiguo 02/07/2011, 12:14
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 4 meses
Puntos: 66
Respuesta: variables de sesión

Como dije en mi resp anterior el session_estart() debe estar al principio del script.
El error que te muestra se debe a que existe una salida anterior al inicio de sesion.

ej:

<?php
session_start();
//resto de codigo
?>

saludos
__________________
Tu álbum de cromos online!!
  #21 (permalink)  
Antiguo 03/07/2011, 04:39
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

IEKK:
Tengo puesto esto....

Código PHP:
Ver original
  1. $tipo_usuario = $row["tipo_usuario"];
  2. echo "tipo usuario = " . $tipo_usuario . "<br>";

y me muestra que es de tipo 'usuario'... entonces luego hago esto:

Código PHP:
Ver original
  1. $_SESSION[tipo] = "usuario";

y voy a la página correspondiente.... Hasta ahí, todo correcto.
El problema viene cuando en la otra página intento que me muestre el menú de opciones correspondiente al usuario. Que es el código que ya puse... que si lo dejo así, ya no me muestra ningún aviso, pero me sigue mostrando "menú artista".... y yo queiro el de usuario.

Código PHP:
Ver original
  1. <?php
  2.  
  3.     include('conexion.php');
  4.     echo "probando sesion";
  5.  
  6.     //session_start();
  7.     ob_start();
  8.    
  9.     echo $row['tipo'] . "-----";
  10.  
  11.     if($_SESSION["tipo"] == "gestor"){
  12.         echo "mostraremos menu de gestor";
  13.     }
  14.     else if($_SESSION["tipo"] == "usuario"){
  15.         echo "mostraremos menu usuario";
  16.     }
  17.     else{
  18.         echo "menu artista";
  19.     }
  20.  
  21. ?>
  #22 (permalink)  
Antiguo 03/07/2011, 04:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Perdón... en una de las líneas faltan las comillas... ls tengo y nada... Es en esta linea...

Código PHP:
Ver original
  1. $_SESSION[tipo] = "usuario";
  #23 (permalink)  
Antiguo 03/07/2011, 08:51
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

Hay algo que debes estar pasando por alto. Si la variable te da "usuarios" es imposible que el if te lo evalue mal.

¿Estás asignandole un valor a la session según $row[] no?

$_SESSION["tipo"] = $row["tipo_usuario"];

No sé que más decirte con los datos que das porque los if están bien.
Así que es imposible que le hagas un echo a session["tipo"] y te de otra cosa salvo que estés asignando mal el valor. No veo otra.

De todas formas yo usaría swicth pero para gustos colores.
Es más rápido, no tienes que estar evaluando uno por uno cada condición.
Entra en la que encuentre.

Código PHP:
<?php

session_start
();

$_SESSION["tipo"] = "usuario";

switch(
$_SESSION["tipo"])
{
    case 
"gestor"  : echo "mostraremos menu de gestor"; break;
    case 
"usuario" : echo "mostraremos menu usuario";   break;
    default        : echo 
"menu artista";
}

?>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #24 (permalink)  
Antiguo 04/07/2011, 06:30
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Perdón... aún no he podido probarlo... esta tarde o mañana vuelvo a crear los ficheros desde el principio y digo algo. A ver si hay suerte. Gracias!
  #25 (permalink)  
Antiguo 05/07/2011, 08:21
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Lo he vuelto a probar.... El problema está en el archio "autenticar" que es donde se guarda la variable de sesión.

Este el archivo:
Código PHP:
Ver original
  1. <?php
  2.  
  3. include('conexion.php');
  4.  
  5. $usuario = $_GET['usuario'];
  6. $contrasenya = $_GET['contrasenya'];
  7. echo $usuario . "--" . $contrasenya . "<br>";
  8. $contrasenya_encriptada = sha1($contrasenya);
  9. $contrasenya_encriptada = substr($contrasenya_encriptada, 0, 15);
  10. echo $contrasenya_encriptada . "<br>";
  11.  
  12. if($usuario == "" or $contrasenya_encriptada == "")
  13.     echo "variables vacias <br>";
  14. else{
  15.     $sql = "SELECT * FROM usuarios WHERE dni='$usuario' AND (contrasenya='$contrasenya_encriptada' OR contrasenya='$contrasenya')";
  16.     $resultados = mysql_query($sql, $conexion);
  17.     if($row = mysql_fetch_array($resultados)) {
  18.         $tipo_usuario = $row['tipo_usuario'];
  19.         echo $tipo_usuario . "<br>";
  20.         session_start();
  21.         $_SESSION["tipo_usuario"] = $tipo_usuario;
  22.         $prueba = $_SESSION['tipo_artista'];
  23.         echo $prueba . ".......<br>";  //No me muestra nada!!!!!!!!!
  24.         ?> <a href="probando_sesion.php">Probando sesion</a> <?php
  25.     }
  26.     else{
  27.         echo "nada<br>";
  28.     }
  29. }
  30.        
  31. ?>



y este el de probando_sesion:
Código PHP:
Ver original
  1. <?php
  2.  
  3. include('conexion.php');
  4.  
  5. //session_start();
  6.  
  7. //$_SESSION["tipo"] = "usuario";
  8.  
  9. switch($_SESSION["tipo_usuario"])
  10. {
  11.     case "gestor"  : echo "mostraremos menu de gestor"; break;
  12.     case "usuario" : echo "mostraremos menu usuario";   break;
  13.     default        : echo "menu artista";
  14. }
  15.  
  16. ?>

Madre mía... me estoy volviendo loca! y lo mejor de todo es que estoy segura que al final será un gran despiste/fallo por mi parte!!! :(
  #26 (permalink)  
Antiguo 05/07/2011, 11:34
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: variables de sesión

¿Tendrás la consulta bien?
Si está dando un valor incorrecto es lo más problable que ahí radique el fallo.

Deberías ir poniendo echos en tú código para ver en que punto hace algo raro,
comprobando si los valores que tienes coinciden con los que tienes en la BD y luego comprobando que da la consulta.

Está claro que el error es tuyo, así que claramente es un despiste.

el error debería estar en la consulta o las variables, quizás en la $contrasenya_encriptada o en ese OR.
Por cierto podrías cambiar los = por like en la consulta.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Última edición por IEKK; 05/07/2011 a las 11:41
  #27 (permalink)  
Antiguo 05/07/2011, 12:50
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Antes por un despiste no me mostraba bien $_SESSION... ahora ya esta bien.... me lo muestra correcto, pero... cuando voy a la otra página no me lo reconoce... es como si perdiese el valor de la variable de sesión....

Quiero decir...
Aquí ya me muestra y se guarda bien (se lo guarda como usuario...)....
Código PHP:
Ver original
  1. $_SESSION["tipo_usuario"] = $tipo_usuario;
  2. $prueba = $_SESSION['tipo_usuario'];
  3. echo " --> " . $prueba . "<br>"; // OK! Me muestra que tipo_usuario es usuario

... pero cuando accedo a la otra página estoy igual que estaba me muestra "menú artista" en vez del de usuario.... Por separado ambos funcionan bien, pero sino no....
  #28 (permalink)  
Antiguo 12/07/2011, 11:52
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Hola!

Nada... sólo decir que ya he conseguido que me funcione... Por si le puede servir a alguien... la solución era una gran tontería...

Esta línea tiene que ser SIEMPRE la primera línea de los archicos!!!!

Código PHP:
Ver original
  1. <?php session_start(); ?>


Saludos y gracias por todo!
  #29 (permalink)  
Antiguo 12/07/2011, 12:16
Avatar de heap811019  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 40
Antigüedad: 13 años, 11 meses
Puntos: 1
Mensaje Respuesta: variables de sesión

En efecto, al trabajar con sesiones tu primer linea debe ser siempre la de inicio de sesion tal como lo comentas
Código PHP:
 <?php session_start(); ?>
De igual forma, al cambiar tus demas paginas puedes tener una cabecera en la se valide si esta creada la sesion y que corresponda al tipo de usuario q deseas..algo como:

Código PHP:
if (isset($_SESSION['n_user'])) 
//codigo..... 
Igual te recomiendo que tengas tu archivo salir.php en el cual incluyas
Código PHP:
 session_destroy(); 
para que elimine por completo la sesion.

=D Saludos!!!
  #30 (permalink)  
Antiguo 12/07/2011, 12:33
 
Fecha de Ingreso: noviembre-2007
Mensajes: 26
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: variables de sesión

Gracias heap811019...
El archivo salir.php lo tengo... ahora sólo me falta comprobar en cada fichero que está creada la sesión...

Etiquetas: sesiones_en_php, variables_sesion_php
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 08:08.