Sessions?
azok
- php
0 wahsaga0 azok0 Fabian St.0 azok
0 André Laugks
hi!
ich habe mal wieder ein problem, und zwar sessions. - habe mich mit diesen, außer jetzt etwas dazu gelesen, noch sehr wenig auseinandergesetzt, und bräuchte deshalb hilfe. und zwar bin ich gerade dabei bei meinem weblog einen bereich für den administrator zu scripten. grundsätzlich sieht mein weblog so aus:
switch(true) {
case isset($_GET['admin']):
//administrator-bereich, wie löschen, editieren...
break;
case isset($_GET['comment']):
//kommentare können gemacht werden
break;
default:
//nachrichten werden ausgegeben
}
sollte nun ?admin an der url hängen, wird eben der bereich des administrators aufgerufen. - das problem ist jetzt, wie sich das script "merken" kann, ob der administrator-bereich schon korrekt aufgerufen wurde, also das passwort korrekt eingegeben wurde, damit, solange diese bedingung erfüllt ist verschiedene funktionen nur für den administrator zu verfügung stehen... nun, und ich weiß eigentlich nicht wirklich, wie ich das jetzt angehen soll, zumal zudem vor dem switch eine ausgabe für ein css-stylesheet erfolgt. (sessions wären eigentlich damit gelaufen, oder?)
wäre über hilfe dankbar
lg
azok
hi,
das problem ist jetzt, wie sich das script "merken" kann, ob der administrator-bereich schon korrekt aufgerufen wurde, also das passwort korrekt eingegeben wurde,
wenn der login erfolgreich war, setze dir eine entsprechende session-variable - $_SESSION['eingeloggt'] = true; oder ähnliches.
anschließend fragst du auf den folgeseiten ab, ob diese variable gesetzt und true ist - wenn ja, lasse gewünschte admin-funktionen zu; wenn nicht, leite bspw. auf die login-seite weiter.
zumal zudem vor dem switch eine ausgabe für ein css-stylesheet erfolgt. (sessions wären eigentlich damit gelaufen, oder?)
nein, natürlich nicht.
du musst lediglich session_start() auf jeder seite aufrufen, bevor irgendeine art von ausgabe erfolgt (*) - wann du dann aber anschließend werte in die session einfügst, oder sie abprüfst, ist vollkommen egal.
(*) wenn man explizit auf cookies verzichten möchte, nicht mal das - dann könnte session_start() an beliebiger stelle aufgerufen werden. aber immer die SID mit rumzuschleppen ist auch nicht immer optimal, cookies sind da idR. die bessere wahl.
gruß,
wahsaga
hi!
danke! funktioniert alles wunderbar. war eigentlich gar nicht so schwer. - eine frage habe ich da noch, und zwar, wie ich am besten einen "logout"-button mache
lg
azok
Hi azok!
danke! funktioniert alles wunderbar. war eigentlich gar nicht so schwer. - eine frage habe ich da noch, und zwar, wie ich am besten einen "logout"-button mache
Dies kann entweder über einen Link oder einen Submit-Button geschehen. Daraufhin fragst du eben mit isset() ab, ob der Link angeklickt (bzw. der Button gedrückt) wurde und fährst dann wie folgt fort.
Grüße,
Fabian St.
hi!
Dies kann entweder über einen Link oder einen Submit-Button geschehen. Daraufhin fragst du eben mit isset() ab, ob der Link angeklickt (bzw. der Button gedrückt) wurde
achja, stimmt... - hatte leider ein blackout...
lg
azok
Hallo!
sollte nun ?admin an der url hängen, wird eben der bereich des administrators aufgerufen. - das problem ist jetzt, wie sich das script "merken" kann, ob der administrator-bereich schon korrekt aufgerufen wurde, also das passwort korrekt eingegeben wurde, [...]
Ich stelle das jetzt mal schematisch dar:
1.
Formular: Eingabe des Benutzernamens und Passwort
2. Checken ob die Eingabe korrekt ist.
if($_POST['passwort']==$passwort AND $_POST['user']==$user) {
$_SESSION['login'] = true; // korrekt authentifiziert
header("Location: http://www.domain.de/admin/admin.php?" . session_name() . "=" . session_id());
}
else {
Fehler, nochmalige Eingabe
}
3. Nun wird auf jeder Seite, wo man es für nötig hält, getestet ob man korrekt eingeloggt ist. z.B. auf /admin/admin.php
if(!isset($_SESSION['login') OR !$_SESSION['login')) {
-> zum Logout
}
Hier folgt jetzt alles was der Admin darf!
zumal zudem vor dem switch eine ausgabe für ein css-stylesheet erfolgt. (sessions wären eigentlich damit gelaufen, oder?)
Verstehe ich jetzt nicht ganz.
André Laugks