Foros del Web » Programando para Internet » PHP »

Problemas con variables de sesion

Estas en el tema de Problemas con variables de sesion en el foro de PHP en Foros del Web. Llevo varias horas dandole vueltas a un problema que tengo con unas variables de sesion, y se que la solucion tiene que ser facil, pero ...
  #1 (permalink)  
Antiguo 03/02/2010, 16:12
 
Fecha de Ingreso: diciembre-2005
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
Problemas con variables de sesion

Llevo varias horas dandole vueltas a un problema que tengo con unas variables de sesion, y se que la solucion tiene que ser facil, pero no doy con ello.
Me explico, declaro variables en una pagina, y lugo cuando las rescato otra página, una de ellas no me aparece registrada.
Os paso el codigo:

Página 1 (login)
Código PHP:
session_start();
        
// Creamos una variable de session que se llame "autentificado"
        
$_SESSION["autentificado"]="si";
        
$_SESSION["test"]="HOLA";
        
$_SESSION["user"]=$row['usuario']; 
Página 2 (una vez logeado)
Código PHP:
session_start();
if (isset(
$_SESSION['test']))
{
        echo 
"Variable test registrada";
}
else
{
        echo 
"Variable test NO registrada";
}

if (isset(
$_SESSION['user']))
{
        echo 
"<br>Variable user registrada";
}
else
{
        echo 
"Variable user NO registrada";

Gracias de antemano!!!
  #2 (permalink)  
Antiguo 03/02/2010, 17:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con variables de sesion

Coloca esto al inicio del script:
Código PHP:
Ver original 
Mientras no esté en producción, te ayudará mostrándote los errores que se produzcan en la ejecución del código.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 03/02/2010, 17:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 12
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problemas con variables de sesion

disculpa la pregunta, pero cual de todas no te aparece registrada? supongo que es la de $row["usuario"] verifica previamente si esta con valor esa variable, si si la tiene has esto:
Cita:
$usuario=$row["usuario"];
y luego
$_SESSION["usuario"]=$usuario;
con eso se debe de arreglar...
  #4 (permalink)  
Antiguo 03/02/2010, 22:03
 
Fecha de Ingreso: octubre-2009
Ubicación: Castellón y Valencia
Mensajes: 47
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Problemas con variables de sesion

Si el código es solo eso, te tiene que funcionar bien.
El único fallo posible es lo que te acaban de comentar arriba, de que $row["usuario"] no exista. Cambia esto por un texto y si sí que te funciona con el texto es culpa de esta variable
__________________
programador php
  #5 (permalink)  
Antiguo 04/02/2010, 01:18
 
Fecha de Ingreso: diciembre-2005
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Problemas con variables de sesion

La variable que me da da problemas es: $_SESSION["test"]="HOLA";

no se que estoy haciendo mal......

Tambien he colocado error_reporting(E_ALL); y no obtengo nada.

Gracias de nuevo.
  #6 (permalink)  
Antiguo 04/02/2010, 05:22
Avatar de morior  
Fecha de Ingreso: agosto-2009
Ubicación: Barcelona
Mensajes: 437
Antigüedad: 14 años, 8 meses
Puntos: 12
Respuesta: Problemas con variables de sesion

No le veo el fallo, a mí me funciona. Prueba esto.

prueba.php

Código PHP:
<?
session_start
();
        
// Creamos una variable de session que se llame "autentificado"
        
$_SESSION["autentificado"]="si";
        
$_SESSION["test"]="HOLA";
        
$_SESSION["user"]= 5// yo le pongo un 5 por ejemplo 
?>
prueba2.php

Código PHP:
<?
session_start
();
if (isset(
$_SESSION['test']))
{
        echo 
"Variable test registrada";
}
else
{
        echo 
"Variable test NO registrada";
}

if (isset(
$_SESSION['user']))
{
        echo 
"<br>Variable user registrada";
}
else
{
        echo 
"Variable user NO registrada";
}
       echo 
"<br>";
       echo  
$_SESSION["autentificado"]." < - autentificado<br>";
       echo  
$_SESSION["test"]." < - test<br>";
       echo  
$_SESSION["user"]." < - user<br>";
?>
Guárdalos como te he puesto, primero llama al prueba para inicializar las variables de sesión y luego llama al segundo. Te funcionará además al final de todo de las imprime con su valor.
__________________
Juego de navegador online
  #7 (permalink)  
Antiguo 04/02/2010, 11:16
 
Fecha de Ingreso: diciembre-2005
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Problemas con variables de sesion

Gracias morior, asi si funciona... pero el problema es que en mi codigo no se porque no va... :(

Te paso el codigo de los dos archivos:

login.php
Código PHP:
<?php

$dbhost
='localhost';
$dbusername='angelpdi_admin';
$dbuserpass=XXXXXX;
$dbname='xxxxxxx;
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('
Cannot select database');


if ($_POST['
username']) {
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['
username'];
$password=$_POST['
password'];

if ($password==NULL) {
echo "<center>Intrduce la contraseña<center>";
}else{
$query = mysql_query("SELECT usuario,pass FROM apuntes_usuarios WHERE usuario = '
$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['
pass'] != $password) {
echo "<center>Error en usuario y/o contraseña.<center>";
}else{
$query = mysql_query("SELECT usuario,pass,nivel FROM apuntes_usuarios WHERE usuario = '
$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_username"] = $row['
usuario'];
//header("Location: acceso.php");
        // Iniciamos las sesion
        session_start();
        // Creamos una variable de session que se llame "autentificado"
        $_SESSION["autentificado"]="si";
        $_SESSION["test"]="HOLA"; //esta es la que me falla y en la que quiero almacenar el nivel de acceso del usuario
        $_SESSION["user"]=$row['
usuario'];
    
switch($row['
nivel'])
{

case '
grupo1': header("Location: apuntes_g1.php");break;
case '
grupo2': header("Location: apuntes_g2.php");break;
case '
admin': header("Location: control.php");break;
}

}
}
}
?>
<html>
<link href="images/estilo.css" rel="stylesheet" type="text/css">
<body>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Alquinatura | Apuntes</title>
</head>

<body>
<center>
<h1>Acceso de usuarios</h1>
    <center>
        <form action='
login.php' method='POST'>
<table class="camporegistro" >
<tr>
<td align='
right'>
Nombre de usuario: <input type='
text' size='15' maxlength='25' name='username'>
</td>
</tr>
<tr>
<td align='
right'>
Contrase&ntilde;a: 
  <input type='
password' size='15' maxlength='25' name='password'>
</td>
</tr>
<tr>
<td align='
center>
<
input type="submit" value="Entrar">
<
input type="reset" value="Borrar">
</
td>
</
tr>
</
table>
</
form>
</
html>
Una vez logueado y dependiendo del nivel logea a apuntes_g1.php (donde quiero leer ese nivel para asegurarme de que el usuario tiene derecho a acceder a esa pagina

Código PHP:
<?
session_start
(); 
if (isset(
$_SESSION['test'])) 

        echo 
"Variable test registrada"

else 

        echo 
"Variable test NO registrada"


if (isset(
$_SESSION['user'])) 

        echo 
"<br>Variable user registrada"

else 

        echo 
"Variable user NO registrada"

       echo 
"<br>"
       echo  
$_SESSION["autentificado"]." < - autentificado<br>"
       echo  
$_SESSION["test"]." < - test<br>"


$dbhost='localhost';
$dbusername='angelpdi_admin';
$dbuserpass='H311Q589';
$dbname='angelpdi_blogalqui';

// Conectar a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');


//$username=$_POST['username'];
$username="admin";
$query mysql_query("SELECT usuario,pass,nivel FROM apuntes_usuarios WHERE usuario = '$username'") or die(mysql_error());
$row mysql_fetch_array($query);


// Comprobamos primeramente si es una session autentificada por algun usuario.
if ($_SESSION["autentificado"] != "si") {
    
// Como no es un usario que halla iniciado sesion, lo mando a una página de error.
    
header("Location: login.php");
    exit();
    }

?>  
<?php

setlocale
(LC_ALL,'es_ES');
define("CHARSET""iso-8859-1"); 
//echo strftime("%A %d de %B del %Y");
 

require_once ('grupo1.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>
    <title>Alquinatura | Apuntes Grupo 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript" src="browse.js"></script>
    <style type="text/css">
        h1 {font-family: Tahoma; font-size: 110%;font-weight: bold}
        p {font-family: Tahoma}
        a{text-decoration: none;font-family: Tahoma}
        a:link {color: #000}
        a:visited {color: #444444}
        a:hover {font-size: 110%}
        a:active {color: #000}
        .hidden {display: none;}
        .show{color: #cccccc;}
    </style>
  </head>
  <body  onload="browse('open','<?=$path?>');">
  <div id="busy" align="center">
    <h1>Para descargar haz clic con el boton derecho en el archivo y selecciona &quot;Guardar destino como ...&quot;</h1></div>
    <p align="left"><a href="cerrar.php">Desconectar</a>    
    <b>
    <span id="<?=$path?>" title="open" onclick="browse(this.title,this.id);"/><h2><?=$path?></h2></span>
    </b></p>
    <p align="left">
    <span id="<?=$path?>Info"></span>
    </p>
  </body>
</html>
espero una pronta respuesta, pues me trae loco.... gracias!!!
  #8 (permalink)  
Antiguo 04/02/2010, 11:40
 
Fecha de Ingreso: diciembre-2005
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Problemas con variables de sesion

Gracias a todos, he vuelto a escribir el codigo y ya funciona, creo que habia algun resto de un script el cual andaba dando la lata

GRACIAS DE NUEVO!!!

Etiquetas: 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 22:31.