hallo.
ich möchte gern ein Auto-Login-System programmieren.
Das bisherige System funktioniert so:
es existiert eine index.php mit dem grundgerüst der seite. dieses besteht natürlich aus Tabellen und es existiert in diesen tabellen sowohl ein menübereich als auch ein großes feld, dass den content-frame darstellt.
beim menüaufbau wird geprüft, welche menüpunkte angezeigt werden (da sich das ändert jenachdem ob man eingeloggt ist oder nicht), indem das script schaut:
Weiters besteht natürlich die Möglichkeit, dass der User manuell einfach "index.php?p=Adminarea" oder sowas angibt. es wird als nächstes also erstmal alle möglichen "p"s abgeklappert die ohne gültige $_SESSION['sess_id'] nicht erreichbar sein dürfen und es erfolgt dann ein header("Location: index.php?p=Login");
wenn das erledigt ist und der seitenaufbau bei dem contentframe angekommen ist, wird je nach "p" eine php datei included. soweit so gut, das war der grobe aufbau der seite.
Das bisherige System war ein Session-Loginscript. Man kommt auf die Loginseite (also eigentlich die index.php mit includetem login formular), gibt die daten ein. das <form> leitet die daten an die datei "login_submit.php" weiter. diese überprüft name und pw auf gültigkeit und setzt dann die $_SESSION[''sess_id] mit dem Wert der User-ID (Anmerkung: den Wert $_SESSION[''sess_id] brauche ich in der seite sehr häufig, da dieser ja die ID des Users darstellt. Dieser Wert soll nicht die "SID" sein die vom server automatisch generiert wird)
Nun soll man beim Login aber auch noch die Checkbox "Eingeloggt bleiben" haben. ist diese aktiv wird in der login_submit automatisch das cookie "remember" erstellt mit einem zufälligen wert, der dann auch in der DB in der tabelle "users" eingetragen wird. Es werden also nicht username/PW im cookie gespeichert sondern nur eine zufälig generierte Zahl. Diese ist übrigens:
Soweit so gut, jetzt kommen die Kontrollen ins Spiel. Ich habe erstmal ein Grundgerüst geschrieben, aber nicht mal das funktioniert richtig.
In dex index.php habe ich zu beginn folgendes hinzugefügt:
Jetzt zum Inhalt der check4cookie.php:
leider funktioniert das irgendwie nicht.
Firefox meldet dieses hier: "Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."
Wieso sagt Firefox das ? Es wird erst auf die check4cookies.php umgeleitet, von dieser dann auf eine andere Seite. ist sowas nicht zulässig ?
Wie kriege ich das Problem in den griff ? eine "Notfall-Lösung" wäre natürlich, den ganzen code den ich in check4cookies.php habe, direkt in die index.php einzubauen, also etwa so:
aber ich fände die bisherige lösung eleganter.
Habt ihr vorschläge ?
MfG
ich möchte gern ein Auto-Login-System programmieren.
Das bisherige System funktioniert so:
es existiert eine index.php mit dem grundgerüst der seite. dieses besteht natürlich aus Tabellen und es existiert in diesen tabellen sowohl ein menübereich als auch ein großes feld, dass den content-frame darstellt.
beim menüaufbau wird geprüft, welche menüpunkte angezeigt werden (da sich das ändert jenachdem ob man eingeloggt ist oder nicht), indem das script schaut:
PHP-Code:
if (isset($_SESSION['sess_id'])){
//Zeige spez. Menüpunkte
}
wenn das erledigt ist und der seitenaufbau bei dem contentframe angekommen ist, wird je nach "p" eine php datei included. soweit so gut, das war der grobe aufbau der seite.
Das bisherige System war ein Session-Loginscript. Man kommt auf die Loginseite (also eigentlich die index.php mit includetem login formular), gibt die daten ein. das <form> leitet die daten an die datei "login_submit.php" weiter. diese überprüft name und pw auf gültigkeit und setzt dann die $_SESSION[''sess_id] mit dem Wert der User-ID (Anmerkung: den Wert $_SESSION[''sess_id] brauche ich in der seite sehr häufig, da dieser ja die ID des Users darstellt. Dieser Wert soll nicht die "SID" sein die vom server automatisch generiert wird)
Nun soll man beim Login aber auch noch die Checkbox "Eingeloggt bleiben" haben. ist diese aktiv wird in der login_submit automatisch das cookie "remember" erstellt mit einem zufälligen wert, der dann auch in der DB in der tabelle "users" eingetragen wird. Es werden also nicht username/PW im cookie gespeichert sondern nur eine zufälig generierte Zahl. Diese ist übrigens:
PHP-Code:
md5 (uniqid (rand()));
In dex index.php habe ich zu beginn folgendes hinzugefügt:
PHP-Code:
if (!isset($_SESSION['sess_id']))
{
$optionalpage = "";
if (isset($_GET['p']))
{
$optionalpage = "?p=".$_GET['p'];
}
header('Location: check4cookie.php'.$optionalpage);
exit;
}
PHP-Code:
if (isset($_COOKIE['remember'])) // if a cookie exists
{
//check if it contains a valid value
//if it is valid, update the $_SESSION['sess_id'] value and
//update the database and the cookie with a fresh random number
//if it isn't valid, redirect to the login form
}
else
{
//head to the loginpage, but only when forced (so that you won't get to the login
//screen just because you want to get the correct menu-links or watch unprotected sites,
if (isset($_GET['forced']))
{
header("Location: index.php?p=Login");
exit();
}
else
{
if (isset($_GET['p']))
{
$page = "?p=".$_GET['p'];
}
else
{
$page = "";
}
header('Location: index.php'.$page);
exit();
}
}
Firefox meldet dieses hier: "Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."
Wieso sagt Firefox das ? Es wird erst auf die check4cookies.php umgeleitet, von dieser dann auf eine andere Seite. ist sowas nicht zulässig ?
Wie kriege ich das Problem in den griff ? eine "Notfall-Lösung" wäre natürlich, den ganzen code den ich in check4cookies.php habe, direkt in die index.php einzubauen, also etwa so:
PHP-Code:
if (!isset($_SESSION['sess_id']))
{
//Inhalt von check4cookies.php
}
Habt ihr vorschläge ?
MfG
Kommentar