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

Problema "Call to a member function on a non-object"

Estas en el tema de Problema "Call to a member function on a non-object" en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/06/2008, 09:36
Avatar de 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!
  #2 (permalink)  
Antiguo 20/06/2008, 10:09
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Problema "Call to a member function on a non-object"

Estas seguro que la clase Administrator tiene el metodo getId() ???
  #3 (permalink)  
Antiguo 20/06/2008, 11:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema "Call to a member function on a non-object"

Creo el problema esta aquí:
Código PHP:
$admin = new Administrator();
                
$admin->setUsername($_POST["username"]);
                
$admin->load();

        
        
$_SESSION['admin']= 'yes'
Tu servidor seguramente tiene activado el uso de register_globals, por lo cual $_SESSION['admin'] == $admin == $_GET['admin'] == $_POST['admin'].

Saludos.
  #4 (permalink)  
Antiguo 20/06/2008, 11:25
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 16 años
Puntos: 5
Respuesta: Problema "Call to a member function on a non-object"

AAarrrggghhh!! @!!$$%!!
Muchas gracias Gator! Podría haber estado una vida... ya que soy novato en esto y es la primera vez que me encuentro con este problema.

Ya me puse a investigar sobre las register_globals y creo que lo mas conveniente es ver como desactivarlas. Si tenes algun comentario al respecto, te agradezco.

Saludos
  #5 (permalink)  
Antiguo 20/06/2008, 15:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema "Call to a member function on a non-object"

Hola chitoso,

La única forma de desactivarlas es desde el php.ini.

Saludos.
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 20:32.