dedlfix: PHP_AUTH_USER löschen

Beitrag lesen

echo $begrüßung;

also nicht mit .htaccess sondern über PHP-Script.

.htaccess ist eine Konfigurationsdatei des Apachen. Es dürft recht schwierig werden, sie so zu gestalten, dass der Apache ein 401 rausschickt aufgrund einer Entscheidung, die du erst in deinem PHP-Script triffst; der Entscheidung, dass der Benutzer _jetzt_ nicht mehr angemeldet sein soll.

Beim Schreiben obigen Satzes fiel mir doch noch eine Idee ein. Das Ergebnis funktioniert zwar, ist aber, wie erwartet, nicht sehr benutzerfreundlich. Aber das bekommst du mit PHP weder besser noch anders hin.

AuthType Basic  
AuthName "Geschützte Ressource"  
AuthUserFile /path/to/users/file  
Require valid-user  
  
<Files logoff>  
  Require user inexistent  
</Files>

Alles was im Einflussbereich dieser .htaccess liegt, benötigt einen validen Benutzer aus /path/to/users/file. Der User "inexistent" darf in der Datei nicht enthalten sein. Für das Anfordern der Ressource logoff werden Anmeldedaten benötigt, die der Browser nicht hat, woraufhin er mit dem Mitsenden der ihm bekannten Daten aufhört und mit dem Benutzer erneut in Kontakt tritt, damit dieser die Anmeldedaten eingeben kann.
Wenn du also deinen Benutzer dazu bringst, auf einen Link zu klicken, der den Browser veranlasst, die Ressource logoff anzufordern, bekommt der Browser ein 401 zur Antwort und der Benutzer das Anmeldefenster angezeigt. Das kann er nun so oft mit OK bestätigen, bis er schwarz wird. Oder er geht auf "Abbrechen" und bekommt die zum 401er Statuscode gehörende Fehlerseite. Für alle anderen Ressourcen, auf die diese .htaccess wirkt, versucht der Browser nun erneut vom Benutzer die Anmeldedaten eingegeben oder bestätigt zu bekommen. Übrigens, meine Vermutung, dass der Browser die Anmeldedaten aus seinem "Gespeicherte Passwörter"-Speicher entfernt, trifft zumindest beim Firefox nicht zu.

Es muss auch keine Datei namens logoff in diesem Verzeichnis liegen. Der Apache greift nie darauf zu, weil ja die Autorisierung nicht erfolgreich abgeschlossen werden kann.

echo "$verabschiedung $name";