Foros del Web » Programando para Internet » PHP »

PHP OO Problema con variables de sesión. ¿Como recoger la variable?

Estas en el tema de Problema con variables de sesión. ¿Como recoger la variable? en el foro de PHP en Foros del Web. Buenos días foreros, estoy intentando aprender coo puedo loguear a mis usuarios mediante las variables de sesión, pero parece que me he atascado, mi archivo ...
  #1 (permalink)  
Antiguo 17/05/2011, 05:26
 
Fecha de Ingreso: mayo-2011
Mensajes: 40
Antigüedad: 12 años, 11 meses
Puntos: 1
Problema con variables de sesión. ¿Como recoger la variable?

Buenos días foreros, estoy intentando aprender coo puedo loguear a mis usuarios mediante las variables de sesión, pero parece que me he atascado, mi archivo de logueo es el siguiente:

Código PHP:
<? 
$usuario 
$_POST['usuario']; 
$password $_POST['password']; 

$conexion mysql_connect("localhost","adri","******"); 
mysql_select_db("PHP"$conexion); 

$sql mysql_fetch_assoc(mysql_query("SELECT id_usuario,confirmacion FROM usuarios WHERE nombre_usuario = '".$usuario."' AND contrasena = '".$password."'"));
$id_usuario $sql['id_usuario']; 
$confirmacion $sql['confirmacion'];
if(
$confirmacion=="0"):
echo 
"Lo siento, tienes que activar tu cuenta"
elseif(
$confirmacion=="1"): 
session_start();
$_SESSION['usuario']='$id_usuario';
header ("Location:inicio.php"); 
else: 
echo 
"Usuario o Password incorrectos <br></br> Intentelo de nuevo: <a href=iniciosesion.html>Iniciar Sesion</a>"
endif;
?>
Creo la sesión y cuando la redirecciono a inicio.php me encuentro con el problema:

¿Como recojo la variable $id_usuario del archivo de logueo? es lo que no logro entender, aqui os dejo mi arhivo inicio.php:

Código PHP:
<?

$conexion 
mysql_connect("localhost","adri","1907_2007");
mysql_select_db("PHP"$conexion);

if (isset(
$_GET['id_usuario']))
    {
        
$id_usuario=$_GET['id_usuario'];
        
session_start();
        if(
$_SESSION['usuario']=='$id_usuario')
        {
        echo 
"Has iniciado sesion";
        }
    }
else
    {
    echo 
"No has iniciado sesion, intentelo de nuevo: <br></br>
    <a href=iniciosesion.html>Inicia Sesion</a>"
;
    }




?>
Aver si me podeis echar una mano, un saludo! y gracias!
  #2 (permalink)  
Antiguo 17/05/2011, 05:56
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Problema con variables de sesión. ¿Como recoger la variable?

Es que en el segundo fichero ya no tienes guardado la variable id_usuario con los resultados del Select del primer fichero.

Puedes hacer lo siguiente
1. Create un fichero php y ponle el codigo este que recojes los datos de la BD
Código:
$conexion = mysql_connect("localhost","adri","******");  
mysql_select_db("PHP", $conexion);  

$sql = mysql_fetch_assoc(mysql_query("SELECT id_usuario,confirmacion FROM usuarios WHERE nombre_usuario = '".$usuario."' AND contrasena = '".$password."'")); 
$id_usuario = $sql['id_usuario'];  
$confirmacion = $sql['confirmacion'];
2. Haces un include a ese fichero en los otros ficheros y yasta...

Es lo mas sencillo de lo que puedes hacer, pero no lo mejor
  #3 (permalink)  
Antiguo 17/05/2011, 07:50
 
Fecha de Ingreso: mayo-2011
Mensajes: 40
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: Problema con variables de sesión. ¿Como recoger la variable?

Creo que mi problema solo era que no sabía utilizar las variables de sesión, tenía una información erronea, ahora lo hize bien y quedaría asi:

login.php

Código PHP:
<? 
$usuario 
$_POST['usuario']; 
$password $_POST['password']; 

$conexion mysql_connect("localhost","adri",""); 
mysql_select_db("PHP"$conexion); 

$sql mysql_fetch_assoc(mysql_query("SELECT id_usuario,confirmacion FROM usuarios WHERE nombre_usuario = '".$usuario."' AND contrasena = '".$password."'"));
$id_usuario $sql['id_usuario']; 
$confirmacion $sql['confirmacion'];
if(
$confirmacion=="0"):
echo 
"Lo siento, tienes que activar tu cuenta"
elseif(
$confirmacion=="1"): 
session_start();
$_SESSION["usuario"]="Hola a todos";
header ("Location:inicio.php"); 
else: 
echo 
"Usuario o Password incorrectos <br></br> Intentelo de nuevo: <a href=iniciosesion.html>Iniciar Sesion</a>"
endif;
?>
inicio.php

Código PHP:
<?

session_start
();
if(isset(
$_SESSION['usuario']))
    echo 
"Has iniciado sesion";
else
    {
    echo 
"No has iniciado sesion, intentelo de nuevo: <br></br>
    <a href=iniciosesion.html>Inicia Sesion</a>"
;
    }




?>
¿Sería de esta forma no?
  #4 (permalink)  
Antiguo 17/05/2011, 08:15
 
Fecha de Ingreso: marzo-2010
Mensajes: 90
Antigüedad: 14 años
Puntos: 2
Respuesta: Problema con variables de sesión. ¿Como recoger la variable?

si lo que quieres es recoger la id:


primero envia la id:

Código PHP:
$_SESSION["usuario"]=$id_usuario 
después recoge la id

Código PHP:
session_start();
if(isset(
$_SESSION['usuario']))
   
$id =$_SESSION['usuario'];
    echo 
"Has iniciado sesion";
else
    {
    echo 
"No has iniciado sesion, intentelo de nuevo: <br></br>
    <a href=iniciosesion.html>Inicia Sesion</a>"
;
    } 
como lo tenias $_SESSION['usuario'] existe pero contiene el mensaje "hola a todos" que no te servirá de gran cosa mas adelante, si te pasas la id luego podrás saber q usuario es el logueado.
  #5 (permalink)  
Antiguo 17/05/2011, 08:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: Problema con variables de sesión. ¿Como recoger la variable?

En inicio.php sigues sin tener el id_usuario.

¿Por qué pones esto?:

$_SESSION["usuario"]="Hola a todos";

¿No es mejor poner esto?:

$_SESSION["id_usuario"] = $id_usuario;

Así sí tendrías el id_usuario disponible en inicio.php

EDITO: (Se adelantó molinillo XD)
  #6 (permalink)  
Antiguo 17/05/2011, 15:34
 
Fecha de Ingreso: mayo-2011
Mensajes: 40
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: Problema con variables de sesión. ¿Como recoger la variable?

Vale, Gracias a los dos, es lo que intentaba hacer al principio....lo acabo de probar y sí teneis razón, asi la sesión es mas especifica...!

Última edición por AdriMoron; 17/05/2011 a las 15:39

Etiquetas: recoger, sesión, 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 06:07.