Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.

Share this Page URL
Help

Kapitel 17: Authentifizierung mit PHP un... > 17.4 Basic-Authentifizierung mit PHP - Pg. 461

Basic-Authentifizierung mit PHP 17.4 Basic-Authentifizierung mit PHP PHP-Scripts funktionieren in der Regel plattformübergreifend; die Basic- Authentifizierung allerdings benötigt Umgebungsvariablen, die durch den Server gesetzt werden. Damit ein HTTP-Authentifizierungsscript unter Apa- che mithilfe von PHP als Apache-Modul oder unter IIS mithilfe von PHP als ISAPI-Modul lauffähig ist, muss es den Servertyp erkennen und entspre- chend unterschiedlich agieren. Das in Listing 17.4 gezeigte Script läuft auf beiden Servern. Listing 17.4: http.php (Auslösen der HTTP-Basic-Authentifizierung durch PHP) <?php // Bei IIS müssen // $_SERVER['PHP_AUTH_USER'] und // $_SERVER['PHP_AUTH_PW'] gesetzt sein if ((substr($_SERVER['SERVER_SOFTWARE'], 0, 9) == 'Microsoft') && (!isset($_SERVER['PHP_AUTH_USER'])) && (!isset($_SERVER['PHP_AUTH_PW'])) && (substr($_SERVER['HTTP_AUTHORIZATION'], 0, 6) == 'Basic ') ) { list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); } 1 2 3 4 5 6 7 8 9 10 // Diese Anweisung durch eine Datenbankabfrage o.Ä. ersetzen if (($_SERVER['PHP_AUTH_USER'] != 'user') || ($_SERVER['PHP_AUTH_PW'] != 'pass')) { /* Besucher hat noch keine Anmeldeinformationen übermittelt oder die Kombination aus Name und Passwort ist nicht korrekt */ header('WWW-Authenticate: Basic realm="Realm-Name"'); if (substr($_SERVER['SERVER_SOFTWARE'], 0, 9) == 'Microsoft') { header('Status: 401 Unauthorized'); } else { header('HTTP/1.0 401 Unauthorized'); } echo "<h1>Hauen Sie ab!</h1> <p>Sie haben keine Berechtigung.</p>"; } else { // Besucher hat korrekte Informationen übermittelt echo "<h1>Hier ist sie!</h1> <p>Ich wette, Sie sind froh, diese geheime Seite zu sehen.</p>"; } ?> 11 12 13 14 15 16 17 18 461