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-ID: 170791

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

Ausgedruckt am: 26.11.2024 um 16:11 Uhr

SlainteMhath
SlainteMhath 02.08.2011 um 11:02:08 Uhr
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
Jeeroy
Jeeroy 02.08.2011 um 11:54:05 Uhr
Goto Top
Wenn ich ehrlich bin, ich habe keine Ahnung und wüsste auch nicht was genau ich includen müsste.
Midivirus
Midivirus 02.08.2011 um 12:03:19 Uhr
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
Jeeroy
Jeeroy 02.08.2011 um 12:19:31 Uhr
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.
Midivirus
Midivirus 02.08.2011 um 13:00:31 Uhr
Goto Top
nun, dann such doch mal in Zeile 469?
Jeeroy
Jeeroy 02.08.2011 um 15:23:17 Uhr
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;
                }
            }
        }
    }
chr-fritz
chr-fritz 04.08.2011 um 01:13:18 Uhr
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
Jeeroy
Jeeroy 04.08.2011 um 06:15:09 Uhr
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.