Re: Fatal error

michiel nugter <michiel-7H78rwzWSIOg3/[email protected]> Fri, 30 Dec 2005 21:27:06 +0100
Newsgroups gmane.comp.php.pear.liveuser
Message-ID <[email protected]>
As far as I can see it should work, my luconfig doesn't look too 
different, only difference is that I work with DB...

I think you should try to var_dump the $admin just before the call. It 
that works, do some var_dump's in the LUA->addUser function. Just to 
trace down the actual problem.

(Only thing I can see is probably a typo in the code below: in the first 
part you create an instance of LUA in $luadmin and in the form you try 
to access $admin).



TaMeR wrote:
>
>
> You are right Michiel the config is probably where the problem is. I 
> just can't get my head wrapped around that.
> Here it is:
>
> <?php
>
> // BC hack
> if (!defined('PATH_SEPARATOR')) {
>     if (defined('DIRECTORY_SEPARATOR') && DIRECTORY_SEPARATOR == "\\") {
>         define('PATH_SEPARATOR', ';');
>     } else {
>         define('PATH_SEPARATOR', ':');
>     }
> }
>
> error_reporting(E_ALL);
>
> // right definitions
> define('ACCESS', 1);
> define('READ_TESTS', 2);
> define('WRITE_TESTS', 3);
>
> // set this to the path in which the directory for liveuser resides
> // more remove the following two lines to test LiveUser in the standard
> // PEAR directory
> //$path_to_liveuser_dir = './pear/'.PATH_SEPARATOR;
> //ini_set('include_path', $path_to_liveuser_dir.ini_get('include_path'));
>
> // Data Source Name (DSN)
> $db_user = 'admin';
> $db_pass = '****';
> $db_host = 'localhost';
> $db_name = 'luadmin3';
> $dsn = "mysql://$db_user:$db_pass@$db_host/$db_name";
>
>
>
> $liveuserConfig = array(
>     'session'           => array('name' => 'PHPSESSID','varname' => 
> 'loginInfo'),
>     'logout'            => array('destroy'  => true),
>     'cookie'            => array(
>         'name' => 'loginInfo',
>         'path' => null,
>         'domain' => null,
>         'secure' => false,
>         'lifetime' => 30,
>         'secret' => 'mysecretkey',
>         'savedir' => '.',
>     ),
>     'authContainers'    => array(
>         'DB' => array(
>             'type'          => 'MDB2',
>             'expireTime'   => 0,
>             'idleTime'     => 0,
>             'allowDuplicateHandles'  => 1,
>             'passwordEncryptionMode' => 'PLAIN',
>             'storage' => array(
>                 'dsn' => $dsn,
>                 'alias' => array(
>                     'auth_user_id' => 'authuserid',
>                     'lastlogin' => 'lastlogin',
>                     'is_active' => 'isactive',
>                 ),
>                 'fields' => array(
>                     'lastlogin' => 'timestamp',
>                     'is_active' => 'boolean',
>                 ),
>                 'tables' => array(
>                     'users' => array(
>                         'fields' => array(
>                             'lastlogin' => false,
>                             'is_active' => false,
>                         ),
>                     ),
>                 ),
>             )
>         )
>     ),
>     'permContainer' => array(
>         'type'  => 'Medium',
>         'alias' => array(),
>         'storage' => array(
>             'MDB2' => array(
>                 'dsn' => $dsn,
>                 'prefix' => 'liveuser_',
>                 'tables' => array(),
>                 'fields' => array(),
>             ),
>         ),
>     ),
> );
>
> // Get LiveUser class definition
> require_once 'LiveUser.php';
>
> // The error handling stuff is not needed and used only for debugging
> // while LiveUser is not yet mature
> PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'eHandler');
>
> function eHandler($errObj)
> {
>     echo('<hr /><span style="color: red;">' . $errObj->getMessage() . 
> ':<br />' . $errObj->getUserInfo() . '</span><hr />');
>     $debug_backtrace = debug_backtrace();
>     array_shift($debug_backtrace);
>     $message= 'Debug backtrace:'."\n";
>
>     foreach ($debug_backtrace as $trace_item) {
>         $message.= "\t" . '    @ ';
>         if (array_key_exists('file', $trace_item)) {
>             $message.= basename($trace_item['file']) . ':' . 
> $trace_item['line'];
>         } else {
>             $message.= '- PHP inner-code - ';
>         }
>         $message.= ' -- ';
>         if (array_key_exists('class', $trace_item)) {
>             $message.= $trace_item['class'] . $trace_item['type'];
>         }
>         $message.= $trace_item['function'];
>
>         if (array_key_exists('args', $trace_item) && 
> is_array($trace_item['args'])) {
>             $message.= '('.@implode(', ', $trace_item['args']).')';
>         } else {
>             $message.= '()';
>         }
>         $message.= "\n";
>     }
>     echo "<pre>$message</pre>";
> }
>
> // Create new LiveUser object
> $LU =& LiveUser::factory($liveuserConfig);
>
> if (!$LU->init()) {
>     var_dump($LU->getErrors());
>     die();
> }
>
> $handle = (array_key_exists('handle', $_REQUEST)) ? 
> $_REQUEST['handle'] : null;
> $passwd = (array_key_exists('passwd', $_REQUEST)) ? 
> $_REQUEST['passwd'] : null;
> $logout = (array_key_exists('logout', $_REQUEST)) ? 
> $_REQUEST['logout'] : false;
> $remember = (array_key_exists('rememberMe', $_REQUEST)) ? 
> $_REQUEST['rememberMe'] : false;
> if ($logout) {
>     $LU->logout(true);
> } elseif(!$LU->isLoggedIn() || ($handle && $LU->getProperty('handle') 
> != $handle)) {
>     if (!$handle) {
>         $LU->login(null, null, true);
>     } else {
>         $LU->login($handle, $passwd, $remember);
>     }
> }
>
> require_once 'LiveUser/Admin.php';
>
> $luadmin =& LiveUser_Admin::factory($liveuserConfig);
> $luadmin->init();
>
> $language_selected = array_key_exists('language', $_GET) ? 
> $_GET['language'] : 'de';
> ?>
>
>
> Michiel Nugter wrote:
>> Hello Tamer,
>>
>> As far as I can see it should work fine.
>>
>> Just a couple of ideas that could be the problem here.
>>
>> Is your liveuser config array correctly formed?
>> Are the Liveuser_Admin->perm and Liveuser->auth object set?
>> Does the $admin variable contain a proper LUA object?
>>
>>
>>
>> Kind Regards,
>>
>>
>> Michiel Nugter
>> Dinnersite.nl
>>
>>
>>
>>
>> TaMeR wrote:
>>
>>>
>>> Hello
>>>
>>> Still new to this and was wondering after hours of testing if 
>>> someone could give me a hint on this. Thank you
>>>
>>> Dennis Kaplan
>>>
>>> ** ERROR **
>>>
>>> Fatal error: Call to a member function on a non-object in ...
>>> on line: $user_id = $admin->addUser($data, $level);
>>>
>>> ** INFO **
>>> I am using the admin example 3 and I have added a email field to the 
>>> mySQL DB
>>>
>>> ** CODE **
>>> <?php
>>> if (isset($_POST['submit'])) {
>>>     $data = array(
>>>         'handle'    => $_REQUEST['handle'],
>>>         'email'        => $_REQUEST['email'],
>>>         'passwd'    => $_REQUEST['passwd']
>>>     );
>>>     $level = 1;
>>>     $user_id = $admin->addUser($data, $level);
>>> }
>>>
>>> ?>
>>> <form method="post">
>>>     <input type="text" name="handle" size="6" maxlength="80">
>>>     <input type="text" name="email" size="10" maxlength="80">
>>>     <input type="password" name="passwd" size="6" maxlength="80">
>>>     <input name="submit" type="submit" value="Submit">
>>> </form><br />
>
>
> _______________________________________________
> LiveUser mailing list
> [email protected]
> http://mailman.21st-hq.de/mailman/listinfo/liveuser
>
>