|
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Author |
Message |
Sternenstaub Smarty Rookie
Joined: 19 Jan 2005 Posts: 5
|
Posted: Fri Jan 28, 2005 11:13 am Post subject: smarty und Session |
|
|
Hallo Leute,
ich habe ein Problem mit Session.
Gehe ich auf "logout" dann komme ich wieder auf die Stratseite. Gehe ich wieder zurück, klappt das nicht...ok... klicke ich allerdings dann auch aktualisieren bin ich wieder auf der Seite
Ich habe genau das selbe mal ohne Smarty gemacht und es funktioniert. Gibt es _mit_ Smarty etwas das ich beachten müsste? Bastel schon seit Stunden und finde keine Lösung |
|
Back to top |
|
LHD Smarty Rookie
Joined: 04 Feb 2005 Posts: 8
|
Posted: Mon Feb 14, 2005 8:38 am Post subject: |
|
|
Ich habe das mit normalen Cookies und Serversession erledigt.
Im Cookie ist nur SessionID, in der Serversession sind die Daten, sollten eigentlich nicht manipuliert werden können.
1) Nehme die session.php von http://www.zend.com/zend/spotlight/code-gallery-wade8.php
2) Dein Formular ruft "login.php" auf.
login.php erzeugt KEINEN Output.
3) in login.php wird die "normale" Loginprozedur durchlaufen
(alle mit "true" als Rückgabewert)
a) Login Passowrd eingegeben
b) User mit Lo+Pw aus datenbank laden
c) sonstige Prüfung (z.B. eMail bestätigt.....)
d) dann "den User in die Session packen" [setDataInSession()]
Code: |
function setDataInSession() {
$arrUser['UserID'] = $UserID;
$arrUser['User'] = $user;
$arrUser['isLoggedIn'] = true; // WICHTIG !!!!
$_SESSION['myUser'] = serialize($arrUser); // serialize nur für Arrays,
return true;
}
|
der letzte Schritt auf login.php, wenn alles erfolgreich durchlaufen ist,
Code: |
$location ="http://meineseite.tld/members/";
header("Location: ".$location);
|
den User auf Seiten für eingeloggte User weiterleiten.
Auf den Memberseiten überprüfen ob Session vorhanden und User eingeloggt ist.
Code: |
function isUserLoggedIn() {
$myUser = unserialize($_SESSION['myUser']);
return $myUser['isLoggedIn'];
}
|
memberseite.php
Code: |
if (isUserLoggedIn()) {
// Alles Okay, User ist eingeloggt
} else {
// Fehler: Du bist nicht eingeloggt
}
|
Beim Logout läuft dann alles umgekehrt ab:
logout.php ist auch eine Seite ohne Output.
Code: |
function logout() {
unset($_SESSION['myUser']); // Serversession entfernen
....
// "Gewaltsam" Sessiondaten entfernen vor Sessionablauf
// eigentlich nicht nötig da von session.php erledigt wird.
$sql = "DELETE FROM sessions WHERE ses_id = '".session_id()."' ";
.....(sonstiges Datenbankzeugs....)
session_destroy();
session_regenerate_id();
$LocationLogout ="http://meineseite.tld/";
header("Location: ".$LocationLogout);
}
|
Hat mich mehrere Tage gekostet das alles zu verstehen und zu begreifen, aber jetzt funktioniert es :-)
Lars |
|
Back to top |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|