• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Unerklärlicher Fehler

Status
Für weitere Antworten geschlossen.

Anonymous

Neues Mitglied
Unerklärlicher Fehler

Hallo,

ich habe inzwischen mein Login-script erfolgreich erstellt. Außerdem habe ich es noch um eine Registrierfunktion, eine Logout-funktion und eine Seite, die ermittelt, ob der User eingeloggt ist und dementsprechend anzeigt, ob man eingeloggt ist, erweitert.

Wenn man sich erfolgreich einloggt, wird eine Session gestartet und die Variable "Benutzername" in der Session registriert. Dann kann man auf "Weiter" klicken. Das "Weiter" führt zu der Datei "seite.php". Diese startet die Session und ermittelt, ob die Variable "Benutzername" in der Session registriert ist. Wenn sie registriert ist, dann gibt sie den Inhalt "Eingeloggt als $Benutzername [Ausloggen]" aus. Wenn nicht, dann gibt sie den Inhalt "Nicht eingeloggt [Einloggen]" aus. Nun habe ich das Problem, dass bei dem Dokument, welches überprüft, ob der Login-vorgang erfolgreich war, wie auch bei der Datei "seite.php", dass für die Variable "Benutzername", die in der Session registriert wurde immer "Leander Muskalla" (1 Wert in der Datenbank) eingesetzt wird.

Hier die Quelltexte:

login.php:
Code:
<?php
    include('datenbank.php');
	
    $Benutzername = $_POST['Benutzername'];

    $Passwort = $_POST['Passwort'];

    $sql = "SELECT * FROM `Userdaten` WHERE `Benutzername` = '$Benutzername' AND `Passwort` = '$Passwort' LIMIT 1";

    $res = mysql_query($sql);

    if($Benutzername != "" and $Passwort != "")
	{
    	if(mysql_num_rows($res) > 0)
    	{
			session_start();
			session_register("Benutzername");
			echo "Hallo $Benutzername! Herzlich Willkommen im Mitglieder-bereich. <a href=\"seite.php\">Weiter</a>";
    	}
    	else
    	{
        	echo "Die Angaben sind leider falsch.";
        	echo "
";
        	echo "<a href=\"login.html\">Zurück</a> <a href=\"registrieren.html\">Registrieren</a>";
    	}
	}
	else
	{
	    echo "Bitte tragen Sie Ihren Benutzername und Ihr Passwort ein.";
		echo "
";
		echo "<a href=\"login.html\">Zurück</a>";
	}
?>

seite.php:
Code:
<?php
    session_start();
	
	if(session_is_registered("Benutzername"))
	{
	    echo "Eingeloggt als $Benutzername [<a href=\"logout.php\">Ausloggen</a>]";
	}
	else
	{
	    echo "Nicht eingeloggt [<a href=\"login.html\">Einloggen</a>]";
	}
?>

Es muss wohl mit der Session in "login.php" zu tun haben. Denn wenn ich das "echo "Hallo $Benutzername! Herzlich Willkommen im Mitglieder-bereich. <a href=\"seite.php\">Weiter</a>";" vor "session_start();" und "session_register("Benutzername");" stelle, dann zeigt er mir zumindest bei der Ausgabe von "login.php" den richtigen Namen (den eigegebenen) an.

Weiss jemand, woran das liegt und kann mir helfen?

Über hilfreiche Antworten oder auch Lösungen würde ich mich sehr freuen.

[edit]
Ich bemerke gerade, dass es nur im FF nichts funktioniert. In anderen Browser geht es ohne Probleme. Den Cache vom FF habe ich auch schon gelöscht.

Woran kann das liegen?
[/edit]

[edit²]
Wenn ich schon mal einen Thread aufmache, stelle ich gleich noch eine zweite Frage: Wie kann man ermitteln, ob ein User eingeloggt ist? Ich würde das gerne in der Statistik anzeigen lassen.
[/edit²]
 
Werbung:
session_start() solltest du am angang des dokumentes haben...
ich würde es so lösen:
[php:1:e1e4d99a2e]<?
session_start();
if(isset($_SESSION["benutzername"])) {
// EINGELOGGT
} else {
if(isset($_POST["passwort"]) || isset($_POST["benutzername"])) {
//hier die mysqlquery mit $_POST["passwort"] und $_POST["benutzername"]
if(mysql_num_rows($res) > 0) {
// EINGELOGGT
} else {
//loginfehlermeldung mit zurücklink ausgeben
}
} else {
//login mit post auf eigene datei
}
}
?>[/php:1:e1e4d99a2e]

mfg, fätzminator
 
Naja, ich würde das Script schon ganz gerne so lassen. Ich bin ja noch am lernen. Ich brauche halt nur eine Lösung für das Problem.

Wieso klappt das im FF nicht?
 
Werbung:
Was meinst du mit DAU?

Ich weiss jetzt zumindest, wann es passiert. Es ist, wenn man sich mit einem Namen zum ersten mal einloggt und dann ausloggt oder auch nicht und sich dann mit einem anderen Namen einloggt, dann zeigt er wieder den Namen vom ersten einloggen an. Ich gehe mal davon aus, dass ich die Session nicht richtig beendet habe.

Ich hab in logout.php das ganze mit session_destroy gemacht. Reicht das nicht zum Beenden einer Session?
 
Ich glaube das reicht noch net ich habe irgendwo mal gelesen das man
noch etwas dazu schreiben musste ^^
Oder war das ein Zusatz?? :oops:
ich schau mal ............. :shock:
 
Werbung:
Ja, ich müsste auch noch mal in meinem Buch nachschauen, aber da ich zur Zeit bei meiner Mutter bin, komme ich da nicht ran.
 
ich hab dazu folgendes gefunden:

[php:1:d89dece768]<?php
//Initialisierung der Session
session_start();
//Löschen aller Session-Variablen
session_unset();
//Zum Schluss löschen der Session
session_destroy();
?>[/php:1:d89dece768]

kann sein das bei dir session_unset() noch fehlt :wink: und daran liegt.
bin mir aber nich sicher :)
 
Werbung:
steht in dem manual eintrag...

du solltest stattdessen die methode unset() auf $_SESSION anwenden...
 
wenn du session_destroy() benutzt musst die vorher gespeicherten sesseion variablen nich löschen, dass passiert automatisch...
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben