Formular übergibt Daten an PHP
Markus Söth
- php
Hallo,
folgendes Problem möchte ich gerne lösen:
Ich habe einen Verzeichnisschutz über .htaccess jetzt möchte ich auf den ungeschützten Seiten einen sogenannte Login für die geschützten einrichten. Sprich ein Formularfeld, wo der Benutzer seinen Usernahmen eingeben kann (Passwort bleibt erstmal immer gleich).
Das Formular übergibt dann die Daten an den Server und im Falle der Richtigkeit (prüfung .htaccess) gehts in den geschützten Bereich.
Ich möchte einfach dieses Browserbasierte grosse graue Loginfenster nicht haben.
Kann man soetwas über php lösen?
Danke Markus
Moin
Ich habe einen Verzeichnisschutz über .htaccess jetzt möchte ich auf den ungeschützten Seiten einen sogenannte Login für die geschützten einrichten. Sprich ein Formularfeld, wo der Benutzer seinen Usernahmen eingeben kann (Passwort bleibt erstmal immer gleich).
Das Formular übergibt dann die Daten an den Server und im Falle der Richtigkeit (prüfung .htaccess) gehts in den geschützten Bereich.
Kann man soetwas über php lösen?
Jein, du kannst die Daten nicht einfach so dem Server zur Authentifizierung übergeben, das müsstest du schon selber machen. Also Benutzername und Passwort auslesen (entweder über $PHP_AUTH_NAME und $PHP_AUTH_PW oder getallheaders()), .htpasswd öffnen, einlesen, Benutzername raussuchen, Passwort durch crypt() jagen und mit dem aus der .htpasswd vergleichen. Das müsstest du bei jedem Request wieder machen, also das Passwort ping-pong-mäßig zwischen Server und Browser hin-und herschicken. Ahja, und .htaccess-Passwortschutz muss dann für die PHP-Skripte ausgeschaltet werden, sonst fängt der Server das Passwort ab und dein Skript kriegt nichts mehr davon zu sehen.
Das willst du nicht wirklich tun :)
Die bessere Lösung ist es dann, gleich auf den Passwortschutz per Server zu verzichten und ihn selbst zu bauen. Das erspart dir schonmal das Parsen der .htpasswd. Für den Anfang reicht es dann auch das Passwort (evt. in gehashter Form, z.B. mit md5() ) im Skript abzulegen, bzw. es später in eine Datei oder Datenbank zu tun. Damit das Passwort nicht dauernd übertragen wird, möchtest du dann Sessions einsetzen, was dir gleich eine einfach Log Out-Möglichkeit gibt.
--
Henryk Plötz
Grüße aus Berlin
Moin!
Ich möchte einfach dieses Browserbasierte grosse graue Loginfenster nicht haben.
Kann man soetwas über php lösen?
Nein, dann mußt du einen anderen Authentifizierungsmechanismus (Marke Eigenbau, oder Marke "aus Sammlungen abgeschaut") nehmen. Der Browserdialog ist deswegen da, damit der Browser die Daten abfragen und in speziellen Feldern des HTTP-Requests an den Server schicken kann.
Du kannst mit PHP (anstelle der .htaccess) den Browserdialog provozieren (dazu den Fehlercode 401 an den Browser schicken, siehe http://www.php.net/manual/de/features.http-auth.php), aber umgekehrt gehts nicht.
- Sven Rautenberg