Login klappt nicht mit ENTER

Kaeschdin

Erfahrenes Mitglied
Auf der Suche nach einem Login-Skript bin ich auf diese Lösung gestoßen:

http://www.html.de/tutorials/11487-php-login-mit-sessions.html

Funktioniert soweit reibungslos, allerdings habe ich auch das Problem, das dort jemand auf Seite 2 beschreibt: Wenn ich das Passwort eingebe und auf "Login" klicke, klappt es. Wenn ich das Passwort eingebe und ENTER drücke, sagt er mir, das Passwort wäre falsch bzw. in FF, dass die Session ungültig ist.

Wie kann das sein?

Grüße,

Kerstin
 
Moin Kerstin,

das Problem liegt hier:
Code:
if($_POST['Login']

$_POST['Login'] ist der Submit-Button, dieser wird idR. nur übermittelt, wenn er angeklickt wurde. Beim ENTER wird er daher nicht mitgesendet.

Lösung:
mache hieraus:
Code:
if($_POST['Login'] && $_POST['passwort'] == $Zugangspasswort)
Folgendes:
Code:
if(isset($_POST['passwort']) && $_POST['passwort'] == $Zugangspasswort)
 
Danke für die Antwort.

Wenn ich das so mache und das Passwort abschickt, meckert er über das ; in session_start(); und zwar in folgendem Code (login1.php):

PHP:
include"config.php"; // config.php wird eingefügt
$Zugangspasswort = $passwort; // $passwort wurde in config.php bestimmt

if(isset($_POST['passwort']) && $_POST['passwort'] == $Zugangspasswort
// Login ist der Submitbutton vom Formular und passwort das Feld vom Formular
{
session_start();
$_SESSION['passwort'] = $Zugangspasswort; 
// Hier geben wir der Sessionen den Zugangsschlüssel.
}
 
Der Interpreter meckert nicht über das ";" sondern eigentlich über die fehlende runde (rechte) Klammer der If Prozedur.

gruß
 
Moin Kerstin,

hast du mal nen Passwort für ein Testlogin parat, denn ohne kann man das schlecht testen dort.
Ich vermute mal, dass du bereits irgendwo vor einem session_start() eine Ausgabe hast, was verhindert, dass der Session-Cookie gesetzt werden kann.
Die Lösung wäre da, dass du in allen beteiligten Skripten als allererstes ein ob_start() notierst.
 
Kannst du mal in der login.php und in der login1.php das error_reporting aktivieren.

Ich bleibe immer noch bei meiner Vermutung aus meinem vorangegangenen Posting...der Session-Cookie kann nicht gesetzt werden(bzw. wird nicht gesetzt)...er wird erst in der admin.php gesetzt, so scheint es.
 
Moin Kerstin,

hast du mal nen Passwort für ein Testlogin parat, denn ohne kann man das schlecht testen dort.
Ich vermute mal, dass du bereits irgendwo vor einem session_start() eine Ausgabe hast, was verhindert, dass der Session-Cookie gesetzt werden kann.
Die Lösung wäre da, dass du in allen beteiligten Skripten als allererstes ein ob_start() notierst.

Die login1.php beginnt mit

PHP:
include"config.php"; // config.php wird eingefügt
$Zugangspasswort = $passwort; // $passwort wurde in config.php bestimmt

if(isset($_POST['passwort']) && $_POST['passwort'] == $Zugangspasswort)
// Login ist der Submitbutton vom Formular und passwort das Feld vom Formular
{
session_start();
$_SESSION['passwort'] = $Zugangspasswort; 
// Hier geben wir der Sessionen den Zugangsschlüssel.
}

Im html-Bereich steht:

PHP:
if($_SESSION['passwort'] == $Zugangspasswort) // Hier prüft es die obig-registrierte Session.
{
echo"Sie sind erfolgreich eingeloggt! Sie werden zur Administration weitergeleitet.<script>top.location.href='admin.php?site=main'</script><br/>";
// Nun eine Rückgabe, für die die JS deaktiviert haben:
echo'Falls Sie nicht automatisch weitergeleitet werden, klicken Sie <a href="admin.php">hier</a>';
}
else
{
// Und hier die Meldung, wenn es nicht gültig ist
echo 'Sie sind nicht befugt, diese Seite anzusehen. Möglicherweise ist das eingegeben Passwort falsch.<br>';
echo 'Bitte loggen Sie sich <a href="login.php">hier</a> erneut ein.';
}

Die admin.php beginnt mit

PHP:
session_start();

Im html-Bereich steht:

PHP:
include"config.php"; // config.php wird eingefügt
$Zugangspasswort = $passwort; // $passwort wurde in config.php bestimmt
if($_SESSION['passwort'] == $Zugangspasswort)
{

Dann kommt die Textausgabe (also das, was der Leser angezeigt bekommen soll) und dann

PHP:
}
else
{
echo'Ihre Session ist nicht gültig. Loggen Sie sich <a href="login.php">hier</a> erneut ein.';
}
 
Zurück