Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/06/2008, 09:36
Avatar de chitoso
chitoso
 
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 16 años
Puntos: 5
Problema "Call to a member function on a non-object"

Hola de nuevo, seguramente mas de una vez tuvieron este error. Yo también, y se que es lo que me dice y cual es el problema, pero en esta situación no se porque se da:

Tengo una pagina de login, clasica, hace post a admin_auth.php que es la encargada de autenticar al usuario contra la base.

admin_auth.php:

Código PHP:
<?php
session_start
();
require_once(
'config.php');
require_once(
CLASSES.'/Sistema.php');
require_once(
CLASSES.'/Administrator.php');
if (isset (
$_POST["username"]) || isset ($_POST["password"])) {
    
      if (
Sistema::getInstance()->authenticateAdministrator($_POST["username"], $_POST["password"]) == true) {
        
                
$admin = new Administrator();
                
$admin->setUsername($_POST["username"]);
                
$admin->load();

        
        
$_SESSION['admin']= 'yes';
                
$_SESSION['admin_id']= $admin->getId();  //->Linea 16
        
$_SESSION['username']= $_POST['username'];
        
setcookie("username"$_POST['username'], time() + (84600 30));
        
header("Location: admin_main.php");
        
    } 
        else {
        
// authentication failed
        
$_SESSION['admin']= 'login_failed';
                unset(
$_SESSION['admin_id']);
                unset(
$_SESSION['username']);
        
header("location:index.php");
    }
} else
    echo 
"Acceso no autorizado";
?>
Ok, el problema:
Si me logueo con un password incorrecto, a la segunda vez que intento loguearme, me da el error:
Código PHP:
Fatal errorCall to a member function getId() on a non-object in /hsphere/local/home2/userx/beta.sitio.com/administrator/admin_auth.php on line 16 
Lo que no entiendo, es como puede instanciar un Administrator, invocarle el metodo load() y recien despues que le invoca getId(), dice que no es un objeto (??)

Comentario: probé el metodo load() y la clase Administrator por separado y al parecer funcionan correctamente.

Ultimamente me estan pasando estos errores insólitos... que mala racha... Agradezco sus aportes!