Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Sesiones con usuarios

Estas en el tema de Sesiones con usuarios en el foro de PHP en Foros del Web. Tengo un problema con las sesiones para los usuarios. Resulta que cuando logueo con un usuario le redirijo a la página de inicio con un ...
  #1 (permalink)  
Antiguo 23/05/2013, 04:46
 
Fecha de Ingreso: diciembre-2012
Mensajes: 26
Antigüedad: 11 años, 4 meses
Puntos: 0
Sesiones con usuarios

Tengo un problema con las sesiones para los usuarios.
Resulta que cuando logueo con un usuario le redirijo a la página de inicio con un
Código PHP:
header('Location: inicio.php'); 
y en esa página pues intento por ejemplo imprimir una variable de sesion que guardo como el usuario
Código PHP:
$_SESSION['usuario'
pero me dice que no existe,el caso es que si no redirijo a ninguna página sino hago include en la misma página si me imprime el usuario.
El problema es que necesito redirigir a otra página ya que sino se me juntan varias(la de login y la de inicio).

Que puedo hacer para que al redirigir seguir teniendo esas variables?

Saludos y gracias
  #2 (permalink)  
Antiguo 23/05/2013, 05:17
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Sesiones con usuarios

Debes asegurarte de que en la página de destino tengas lo siguiente:

Código PHP:
Ver original 

EDIT: Antes que cualquier otra cosa.

Saludos
  #3 (permalink)  
Antiguo 23/05/2013, 06:32
 
Fecha de Ingreso: diciembre-2012
Mensajes: 26
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Sesiones con usuarios

Si,si eso lo tengo.
Este es mi index.php

Código PHP:
include_once("PDO.php");

include_once(
"sesiones.inc.php");


if (isset(
$_POST['login']))

    
$login $_POST['login'];

if (isset(
$_POST['password']))

    
$password $_POST['password'];



if (isset(
$_POST['registro']))

    
header('Location: registro1.php');


//Si se ha enviado el formulario de login

if (isset($_POST['validar']))

{

    try

    {

       
$sql="SELECT * FROM Usuario WHERE usuario='".$login."' AND contrasena='".$password."';";

       
$result $pdo->query($sql);

    
$reg=$result->fetch(PDO::FETCH_ASSOC);



    
$sql2="SELECT rol FROM Rol WHERE rol_id=".$reg["rol_id"].";";

   
$tipo_usuario $pdo->query($sql2);
    
$usuario_id=$reg["usuario_id"];
    }

    catch (
PDOException $e)

    {
        
$error 'Error conexion bbdd';
    }

}

   
//Si el usuario existe y su password es correcto -> Se configuran la sesión

   
if ($reg)

   {

         
iniciar_sesion($tipo_usuario$login);
        
header('Location: inicio.php');
               
//include_once('inicio.php');

   
}

   else
   {
        
cerrar_sesion();
        
$errorlogin="Ha introducido un usuario o contrasena inccorrectos";

   }
}

include_once(
'./login.html.php'); 
Y esta mi pagina inicio.php

Código PHP:
session_start(); 

echo 
"hola ".$_SESSION['usuario']; 
Y me aparece este error
Código:
Notice: Undefined index: usuario in /var/www/proyecto/inicio.php on line 4 Call Stack: 0.0024 326588 1. {main}() /var/www/proyecto/inicio.php:0 hola
  #4 (permalink)  
Antiguo 23/05/2013, 08:20
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Sesiones con usuarios

A ver, en todos los archivos que uses sesiones, como en index.php veo que estás llamando a un "sesiones.inc.php" entonces la 1era linea en ese archivo debe ser session_start();
  #5 (permalink)  
Antiguo 24/05/2013, 06:36
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Sesiones con usuarios

Otra cosa un poco offtopic. No estás utilizando bien el bindeo de parámetros en PDO, con lo que estás abriendo una brecha de seguridad en tu programa.

Esto:

Código PHP:
Ver original
  1. $sql="SELECT * FROM Usuario WHERE usuario='".$login."' AND contrasena='".$password."';";
  2.        $result = $pdo->query($sql);

Debería ser algo así:

Código PHP:
Ver original
  1. $st = $pdo->prepare('SELECT *  FROM usuario
  2.    WHERE usuario = :usuario AND contrasena = :contrasena');
  3. $st->bindParam(':usuario', $login);
  4. $st->bindParam(':contrasena', $password);
  5. $st->execute();

Así evitas posibles inyecciones. Más info

Sobre las sesiones, como ya te dicen ahí arriba, debes asegurarte que session_start() sea lo primero que se ejecuta en tu código, para evitar cualquier tipo de problema.

Un saludo
  #6 (permalink)  
Antiguo 24/05/2013, 17:21
 
Fecha de Ingreso: diciembre-2012
Mensajes: 26
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Sesiones con usuarios

Gracias a todos,consegui solucionarlo :)

Etiquetas: sesiones, usuarios, 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:55.