jeeroy
Goto Top

Wieso Fatal error Class Auth not found?

Hallo,
ich möchte mit PHP ein LoginScript machen, welches prüft ob die Anmeldedaten im LDAP korrekt sind.
Dazu habe ich mir ein Script aus meinem PHP Buch angeguckt, doch bekomme dabei den Fehler: Fatal error: Class 'Auth' not found

Ich benutze Xampp und habe dann mal geguckt und unter php\PEAR\Auth ist Auth schon vorhanden.

Ich muss ehrlich zugeben, dass ich nicht weiss, ob ich Auth nun woanders einfügen muss oder nicht. (Habe noch nie eine Applikation eingefügt,..)

Hier mein Script

$options = array('host'     =>  '172.**.**.*,  
                 'port'     =>  '389',  
                 'base'     =>  'o=Hondax,  
                 'userattr' =>  'uid');  


$auth = new Auth('LDAP', $options);  
function pc_auth_ldap_sigin(){
print<<<_HTML_
    <table><tr>
    <td class="$textclass">  
    <form action="$_SERVER[PHP_SELF]" method="POST">  
    Benutzername:</td>
    <td><input type="text" name="username"></td></tr>  
    <tr><td class="$textclass">Passwort:</td>  
    <td><input type="password" name="password"></td></tr>  
    <tr><td></td><td><br><input type="submit" value="login" name="submit"></td></tr>  
    </form></table>
_HTML_;
}
$auth = new Auth('LDAP', $options, 'pc_auth_ldap_sigin');  
$auth->start();

if ($auth->getAuth()){
    // Inhalt, wenn eingeloggt ist...
} else {
    // Inhalt für anonyme Benutzer...
}

Hier die Fehlermeldung:

Fatal error: Class 'Auth' not found in D:\xampp\xampp\htdocs\hondax\hx_wcms\index.php on line 31

Zeile 31:
$auth = new Auth('LDAP', $options);  


Bitte um Hilfe,.. Danke

Content-Key: 170791

Url: https://administrator.de/contentid/170791

Printed on: April 23, 2024 at 15:04 o'clock

Member: SlainteMhath
SlainteMhath Aug 02, 2011 at 09:02:08 (UTC)
Goto Top
Moin,

ich hab mit PEAR Modulen zwar noch nicht viel gemacht, aber auch die werden in irgendweiner weise mit einem inlcude, require oder autoload referenziert werden wollen, oder? face-smile

lg,
Slainte
Member: Jeeroy
Jeeroy Aug 02, 2011 at 09:54:05 (UTC)
Goto Top
Wenn ich ehrlich bin, ich habe keine Ahnung und wüsste auch nicht was genau ich includen müsste.
Member: Midivirus
Midivirus Aug 02, 2011 at 10:03:19 (UTC)
Goto Top
für den Export nach Excel, sieht das Paket zB so aus:

	include 'Spreadsheet/Excel/Writer.php';  
	$excel = new Spreadsheet_Excel_Writer();
	$excel->send('framework.plattform.'.$kunde.clearfunctionname($para['show']).'.xls');  
	$sheet =& $excel->addWorksheet(clearfunctionname($para['show']));  

und in der Klasse selbst sieht der Anfang dann so aus:
$dateipfad = $_SERVER['DOCUMENT_ROOT']."/".SUBSTR(SUBSTR($_SERVER['SCRIPT_NAME'],1,strlen($_SERVER['SCRIPT_NAME'])),0,(strpos(SUBSTR($_SERVER['SCRIPT_NAME'],1,strlen($_SERVER['SCRIPT_NAME'])), "/")+0));  
if(strrpos($dateipfad, "/") != (strlen($dateipfad)-1))  
	$dateipfad .= "/";  

require_once 'PEAR.php';  
require_once $dateipfad.'/Spreadsheet/Excel/Writer/Workbook.php';  

Also iwie müssen die schon miteinander verbunden werden.

Ist wie bei Frauen ^^
Midi
Member: Jeeroy
Jeeroy Aug 02, 2011 at 10:19:31 (UTC)
Goto Top
Hm,..

habe nun ein

require_once 'Auth.php';  

eingebaut und erhalte allerdings diese Fehlermeldung:

Deprecated: Assigning the return value of new by reference is deprecated in D:\xampp\xampp\php\PEAR\Auth.php on line 469

Strict Standards: Declaration of Auth_Container_LDAP::fetchData() should be compatible with that of Auth_Container::fetchData() in D:\xampp\xampp\php\PEAR\Auth\Container\LDAP.php on line 204

und stehe wieder doof da :P

PS: Danke für bisherige antworten.
Member: Midivirus
Midivirus Aug 02, 2011 at 11:00:31 (UTC)
Goto Top
nun, dann such doch mal in Zeile 469?
Member: Jeeroy
Jeeroy Aug 02, 2011 at 13:23:17 (UTC)
Goto Top
Hab ich aber... nichts falsches aufgefallen:

Das ist Zeile 468:
        $array = $this->_setV12OptionsToV13($array);
Zeile 469 ist leer.

Das ist der Block von Zeile 466 - 483:

    function _parseOptions($array)
    {
        $array = $this->_setV12OptionsToV13($array);
    
        foreach ($array as $key => $value) {
            if (array_key_exists($key, $this->options)) {
                if ($key == 'attributes') {  
                    if (is_array($value)) {
                        $this->options[$key] = $value;
                    } else {
                        $this->options[$key] = explode(',', $value);  
                    }
                } else {
                    $this->options[$key] = $value;
                }
            }
        }
    }
Member: chr-fritz
chr-fritz Aug 03, 2011 at 23:13:18 (UTC)
Goto Top
Gehe ich richtig in der Annahme, dass du eine PHP Version >= 5.3 nutzt? Falls ja hast du hier deinen "Fehler". Es gibt leider noch viele der Pear Pakete welche für PHP4 geschrieben wurden und noch nicht in dem Maße an PHP 5.3 angepasst wurden, so dass keine Deprecated und Strict Warnings mehr ausgegeben werden.

Die Deprecated Warnings weisen auf Verwendung einer Funktion oder Schreibweise hin, welche als Veraltet angesehen wird und in einer der nächsten PHP-Versionen entfernt wird. Die Strict Warnings dagegen weisen auf gewisse Dinge hin, welche für einen Sauberen Wartbaren Quellcode vermieden werden sollen. HIerzu gehört z.B. eine Redefinition einer Funktion in einer Abgeleiteten Klasse welche eine andere Parameterliste besitzt.

Es sind keine Fehlermeldungen welche jetzt nicht dafür sorgen, dass deine Anwendung nicht läuft, allerdings kann es zu Problemen mit Updates auf eine neue PHP-Version geben. Daher kannst du die Fehlermeldungen im Betrieb mit der Funktion "error_reporting" ausblenden. Behalte dies aber immer im Hinterkopf.

Zum Abschluss noch: Für die Strict-Warning gibt es für die Klasse "Auth_Container_File" (Bei dir ist es die "Auth_Container_LDAP") bereits einen Bug-Report: http://pear.php.net/bugs/bug.php?id=17284
Member: Jeeroy
Jeeroy Aug 04, 2011 at 04:15:09 (UTC)
Goto Top
Hey Fritz,

ja du liegst richtig in der Annahme, dass ich mit PHP 5.3 arbeite.

Ich danke dir für deine ausführliche Erklärung.

Was du schreibst ist sehr einleuchtend und hat mir somit gut weitergeholfen.

Danke sehr!

Danke auch für alle anderen Beiträge.