Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

no me funciona sesion de logueo

Estas en el tema de no me funciona sesion de logueo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. que estoy haciendo una aplicacion que tiene un formulario de logueo. una vez introducidos el usuario y contraseña la aplicacion me redirecciona a index.php y ...
  #1 (permalink)  
Antiguo 01/02/2011, 12:57
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
no me funciona sesion de logueo

que estoy haciendo una aplicacion que tiene un formulario de logueo. una vez introducidos el usuario y contraseña la aplicacion me redirecciona a index.php y en teoria si escribiese en la barra de navegacion del navegador otra vez la pagina login.php, estando logueado no deberia permitirme acceder a login.php sino que se quedaria en index.php pero no funciona. y no me sale ningun mensaje de error por ninguna parte os dejo el codigo, ya se que es algo extenso pero por favor ayudadme con esto por que no consigo ver el fallo. gracias.

login.php:
Código PHP:
<?php
require_once("../../includes/initialize.php");

if(
$sesion->esta_logueado())
{
    
redirecionar_a("index.php");
    
}
elseif(isset(
$_POST["submit"]))
{
    
    
$username $_POST["username"];
    
$password $_POST["password"];
    
    
$usuario Usuario::autenticar($username,$password);

    if(
$usuario)
    {
        
$sesion->loguearse($usuario);
        
grabar_acciones("Logueo""El usuario con id "$usuario->id " se ha logueado.");
        
redireccionar_a("index.php");
    }
    else
    {
        
$mensaje "Usuario/clave no coinciden.";
    }
    
}

?>
<?php incluir_plantillas
("admin_header.php"); ?>
  <table id="estructura">
    <tr>
      <td id="menu">
      
      </td>
      <td id="pagina">
          <h2>Administración</h2>
        <?php if(isset($mensaje)) { echo "<p>" $mensaje "</p>"; } ?>
        <form action="login.php" method="post">
        <table>
            <tr>
                <td>Nombre de usuario:</td>
                <td><input type="text" name="username" /></td>
            </tr>
            <tr>
                <td>Contraseña:</td>
                <td><input type="password" name="password" /></td>
            </tr>
        </table>
        <input type="submit" name="submit" value="Ingresar" />
        </form>
     </td>
    </tr>
  </table>
<?php incluir_plantillas("admin_footer.php"); ?>
  #2 (permalink)  
Antiguo 01/02/2011, 12:58
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: no me funciona sesion de logueo

clase session

session.php

Código PHP:
<?php
require_once(LIB_DIR.SD."database.php");

class 
sesion
{
    public 
$usuario_id;
    private 
$logueado false;
    
    function 
__construct()
    {
        
session_start();
        
$this->verificar_logueo();
    }
    
    public function 
esta_logueado()
    {
        return 
$this->logueado;
    }
    
    public function 
loguearse($usuario)
    {
        if(
$usuario)
        {
            
$this->usuario_id $_SESSION["usuario_id"] = $usuario->id;
            
$this->logueado true;
        }
    }
    
    public function 
desloguearse()
    {
        unset(
$this->usuario_id);
        unset(
$_SESSION["usuario_id"]);
        
$this->logueado false;
        
    }
    
    private function 
verificar_logueo()
    {
        if(isset(
$_SESSION["usuario_id"]))
        {
            
$this->usuario_id $_SESSION["usuario_id"];
            
$this->logueado true;
            
        }
        else
        {
            unset(
$this->usuario_id);
            
$this->logueado false;
        }
    }

}

$sesion = new sesion();

?>
  #3 (permalink)  
Antiguo 01/02/2011, 14:25
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: no me funciona sesion de logueo

Hola. Revisa que tengas incluidas en tu script todas las clases de las que haces uso.
Sobre los mensajes de error, revisa en tu php.ini que la directiva "display errors" este activada.
  #4 (permalink)  
Antiguo 01/02/2011, 15:01
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: no me funciona sesion de logueo

Si. la directiva display errors esta activada. creo que he incluido bien las clases pongo el codigo del archivo donde contengo la llamada a cada una de las clases.

initialize.php

Código PHP:
<?php

defined
("SD") ? NULL :     DEFINE ("SD",DIRECTORY_SEPARATOR);
defined("RAIZ_DIR") ? NULL define ("RAIZ_DIR""G:".SD."wamp".SD."www".SD."moviecontrol");
defined("LIB_DIR") ? NULL define ("LIB_DIR",RAIZ_DIR.SD."includes"); 

require_once(
LIB_DIR.SD."config.php");
require_once(
LIB_DIR.SD."session.php");
require_once(
LIB_DIR.SD."functions.php");
require_once(
LIB_DIR.SD."user.php");
require_once(
LIB_DIR.SD."database.php");


?>
si te fijas en el login.php llamo a initialize.php
  #5 (permalink)  
Antiguo 02/02/2011, 11:37
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: no me funciona sesion de logueo

Hola. Ve haciendo dumps de los valores que toman las variables hasta que vayas acotando donde esta el error. Utiliza la funcion
Código PHP:
var_dump($datos
antes y depues de los métodos que utilices para ir mirando por ejemplosi el valor de la sesión es el que debería ser,o si es el método quien falla.
  #6 (permalink)  
Antiguo 02/02/2011, 13:13
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: no me funciona sesion de logueo

ok sether. pero puedes explicarmelo con un codigo de ejemplo no lo entiendo bien de como usar esa funcion..
  #7 (permalink)  
Antiguo 02/02/2011, 18:31
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: no me funciona sesion de logueo

Hola. Por supuesto. Un ejemplo de su uso:
Código PHP:
<?php
require_once("../../includes/initialize.php");

//Vamos a ver el estado de la session
var_dump($_SESSION);

if(
$sesion->esta_logueado())
{
    
redirecionar_a("index.php");
    
}
elseif(isset(
$_POST["submit"]))
El var dump te mostrará el contenido de la variable (el array superglobal SESSION en este caso), con lo que podrás ver su estado justo antes de la llamada a tu método.

Aún así, me parece extraño que no te muestre ningún tipo de error. En cualquier caso, mientras depuras tu aplicación, coloca estas 2 lineas en el inicio de tu script y recuerda eliminarlas cuando la página sea productiva.

Código PHP:
ini_set('display_errors','1');
error_reporting(E_ALL); 
Un saludo
  #8 (permalink)  
Antiguo 03/02/2011, 04:17
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: no me funciona sesion de logueo

si lo he hecho. Me da como resultado que la matriz session esta vacia el usuario_id.

pero una pregunta hace falta que exista un campo en la base de datos que se llame igual que la variable usuario_id de session?

Etiquetas: logueo
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 03:34.