Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Login mit Sessions





Frage

Hi, ich habe mal wieder ne Frage.... Ich habe dieses Login-Script mit Sessions getestet (kommt natürlich nicht von mir......), falls ich das Passwort falsch angebe, wird alles korrekt angezeigt. Falls ich das PW jedoch richtig angebe, erscheinen 2 Fehlermeldungen: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\programme\wamp\www\Test\Login\login-pruefung.php:4) in c:\programme\wamp\www\Test\Login\login-pruefung.php on line 76 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\programme\wamp\www\Test\Login\login-pruefung.php:4) in c:\programme\wamp\www\Test\Login\login-pruefung.php on line 76 Login mit Sessions Sie möchten den Zutritt zu bestimmten Seiten Ihrer Webseite beschränken? In diesem Fall können Sie ein kleines PHP-Script mit Passwort-Login verwenden. Zu Anfang müssen Sie ein kleines Formular entwerfen, über das sich der Benutzer in den geschützten Bereich einloggen kann. In diesem Beispiel dient das folgende Script als Login-Formular: <html><head><title>Login</title></head><body><form action="login-pruefung.php" method="post">Geben Sie das Passwort ein: <input name="Passwort" size="10" type="password"><br><input name="Send" type="submit" value="Login"></form></body></html> Dieses Formular schickt seine Daten an das PHP-Script login-pruefung.php, welches folgendermaßen aussieht: <?php$Zugangspasswort = "1234";if($_REQUEST[´Send´] && $_REQUEST[´Passwort´]==$Zugangspasswort){ session_start(); session_register("SESSION_Passwort"); $SESSION_Passwort=$Zugangspasswort;}?><html><head><title>Passwortgeschützter Bereich</title></head><body><?phpif($SESSION_Passwort==$Zugangspasswort){ echo"Sie sind erfolgreich eingeloggt!<br>Hier gelangen Sie zum <a href=\"geschuetzter-inhalt.php\">geschützten Inhalt</a>.";}else{ echo"Sie sind nicht berechtigt die Seite zu betreten!";}?></body></html> In Zeile 3 wird das Zugangspasswort gesetzt, mit dem sich ein Benutzer einloggen darf. Die erste if-Bedingung überprüft, ob der Benutzer Ihr Formular auf der vorhergehende Seite abgeschickt hat und ob das dort eingegebene Passwort mit dem hinterlegten Zugangspasswort übereinstimmt. Im Erfolgsfall wird eine Sessionvariable gesetzt (Z. 8) und mit dem Passwort belegt (Z. 9). Falls der Benutzer sich korrekt angemeldet hat, ist die zweite if-Bedingung wahr und der Text "Sie sind erfolgreich eingeloggt!" wird ausgegeben. Im Fehlerfall erscheint ebenfalls eine entsprechende Meldung. Diese Session-Variable $SESSION_Passwort steht Ihnen auch, nachdem der Benutzer auf eine weitere Seite des geschützten Bereichs gesurft ist, zur Verfügung. Sie können also die weiteren Seiten ganz einfach schützen, in dem Sie deren Inhalt mit dem folgenden Grundgerüst umgeben. Hat sich der Besucher vorher erfolgreich eingeloggt, wird der Inhalt angezeigt, ansonsten die Meldung er solle sich einloggen. <?phpsession_start();?><html><head><title>Passwortgeschützter Bereich</title></head><body><?php$Zugangspasswort = "1234";if($SESSION_Passwort==$Zugangspasswort){ //Notieren Sie hier den geschützten Inhalt der Seite}else{ echo"Sie sind nicht berechtigt die Seite anzuzeigen!<br>Bitte loggen Sie sich vorher <a href=\"index.php\">hier</a> ein.";}?></body></html> Ich weiß nun nicht woran das liegen könnte, deshalb bitte ich um Hilfe!!! Ich habe das ganze noch online unter http://dhost.info/bachler/login für euch hinterlegt...... Danke!!! Mit freundlichen Grüßen Jan

Antwort 1 von Killerbarbe

Hi,

Komisch, auch hier tut online alles und nur bei mir auf dem Rechner nicht....

Sorry....


MFG Jan

Antwort 2 von Supermax

Achte darauf, daß vor dem session_start() kein einziges Zeichen ausgegeben wird - in diesem Fall nimmt PHP nämlich an, daß die Ausgabe der Header abgeschlossen ist und nun der eigentliche Inhalt kommt.

D.h. auch vor dem "<?php" am Anfang darf nichts kommen, auch keine leere Zeile. Am besten session_start(); ganz am Anfang des Dokuments direkt nach "<?php" einfügen.

Wenn es am Server funktioniert und bei dir lokal nicht, könnte es auch an den unterschiedlichen Zeilenvorschüben zwischen Unix (nur LF) und Windows (CR+LF) liegen.

Antwort 3 von Killerbarbe

Hi Supermax,

okay, werde die Leerzeilen löschen!!!

Den untersten Abschnitt habe ich jedoch nicht verstanden, aber solange es online tut, ist es ja okay!!!


Danke für deine Hilfe!!!


MFG Jan

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: