Portal > Foren > PHP > PHP-Programmierung > cookies löschen - bin ich zu doof?!
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 27.08.2007, 18:32 Nach oben    #1
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard cookies löschen - bin ich zu doof?!

Hallo,
ich zweifel gerade an mir selbst... Ich habe ein ogin script, welches auf wunsch Cookies setzt damit man sich später nicht nochmal einloggen muss.

Bei meinem Logout script lösche ich die Cookies und zerstöre die Session.
Aber irgendwie werden meine Cookies nicht gelöscht
Folgender Code:
PHP-Code:
    public function logout()
    {
        
setcookie('login');
        
setcookie('loginname');
        
setcookie('loginid');
        
session_destroy();
        
    } 
eimal so und ich habe es schon mit
PHP-Code:
    public function logout()
    {
        
setcookie('login');
        
setcookie('loginname'''time()-100);
        
setcookie('loginid'''time()-100);
        
session_destroy();
        
    } 
Was mach ich denn Falsch?
Achja, man wird nach dem Logout automatisch weitergeleitet (dokument wird verlassen) und der Pfad der Cookies ist "/".
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php

Geändert von kampfgnom (28.08.2007 um 12:53 Uhr)
kampfgnom ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.08.2007, 12:52 Nach oben    #2
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

keiner ne Ahnung woran das liegt?

//Edit: Gut es geht, es lag daran, das ich in der Login klasse wo die login cookies gesetzt werden sollten, da wurden die cookies nicht gesetzt (durch ne falsche if abfrage) und wenn man sich ausloggte dann wurde natürlich wieder ein cookie gesetzt.
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php

Geändert von kampfgnom (28.08.2007 um 14:20 Uhr)
kampfgnom ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.08.2007, 22:38 Nach oben    #3
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

session_destroy() leert werder $_SESSION noch löscht es den Sitzungs-Keks. Das musst du selbst erledigen. Ein Beispiel findest du im Handbuch:

http://www.php.net/manual/en/functio...on-destroy.php

Am besten kapselst du das natürlich gleich in einem Session-Objekt.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.08.2007, 10:23 Nach oben    #4
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

Naja ich machs immer so, das beim Logout meine Selbstgesetzen Cookies gelöscht werden, die Session mit session_destroy() zertsört wird und leite danach wieder auf die Hauptseite um.
Wenn man sich danach wieder einloggen will, ist das SESSION array dann lehr.
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php
kampfgnom ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.08.2007, 11:01 Nach oben    #5
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Das ist sehr fehleranfällig, denn diese "Regel", sofort nach dem Log-Out auch den Redirect zu machen musst du im Kopf haben. Es gibt keinen Code, mit dem das auch für die Zukunft gewährleistet werden könnte. Eventuell kommen irgendwann mal Funktionen dazu, die du vor jedem Skript-Ende oder Redirect durchführen möchtest (session_write_close() gehört übrigens immer vor einen Redirect, spielt hier aber ja keine Rolle) und da hast du leicht aus dem Blick verloren, dass die Daten in $_SESSION nicht mehr gültig sind. Macht ja auch keinen Sinn, veraltete/ungültige Daten im Speicher aufzubewahren. Daher besser gleich löschen, Session-Cookie löschen und Session-ID ändern (session_regenerate_id(true)).

Letzteres ist grundsätzlich bei jedem Start einer Session, sowie bei jedem Status-Wechsel (Log-In, Log-Out) angebracht (Stichwort: Session-Fixation).

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.08.2007, 14:39 Nach oben    #6
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

Heißt sozusagen, ich soll das komplette SESSION Array mit unset löschen und das SESSION COOKIE auch? und danach erst redirecten?
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php
kampfgnom ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.08.2007, 15:04 Nach oben    #7
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

PHP-Code:
<?php

// log out

// Session muss natuerlich laufen
session_start();

// Session-Daten loeschen
$_SESSION = array();


// wenn die Session wirklich beendet werden soll:

if (isset($_COOKIE[session_name()]))
    
setcookie(session_name(), ''time() - 42000'/');

session_destroy();
header('Location: ' $sAbsoluteUri);


// oder, wenn die Session weiter laufen soll und PHP >= 5.1:

session_regenerate_id(true);
session_write_close();

if (
SID !== '')
    
SID strpos($sAbsoluteUri'?') === false '?' SID '&' SID;

header('Location: ' $sAbsoluteUri SID);
Basti

Geändert von Basti (30.08.2007 um 10:20 Uhr)
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.08.2007, 17:11 Nach oben    #8
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

Danke, das wusste ich gar nicht. Jedes Buch oder Tutorial was ich bisher gelesen habe macht es immer nur mit session_destroy();

Aber das werde ich gleich einbauen!
Danke!

grüße
Gabriel
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php
kampfgnom ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.08.2007, 17:35 Nach oben    #9
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Für PHP < 5.1 musst du die Daten halt noch explizit löschen, aber sieht ja nach einer Neuentwicklung aus und die wird ja sicher auf 5.2 laufen.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.08.2007, 09:47 Nach oben    #10
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.374
Standard

@Basti: danke!
Jann Hendrik ist gerade online  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.08.2007, 11:00 Nach oben    #11
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Hab oben noch die Session-ID angeklebt, falls kein Cookie gesetzt werden konnte. Hoffe das stimmt so in etwa.

Ich hab in meiner Session-Klasse noch ein @ vor session_destroy(), kann aber gerade nicht finden, wo ich mir das abgeguckt habe. Womöglich gibt es einen Fehler, wenn zwischen dem session_start() und dem session_destroy() ein anderer Prozess die Session-Datei löscht? Der Garbage Collector schaut sich ja die mtime der Dateien an und springt ja auch nicht bei jedem Request an. Auch kann es ja unterschiedliche Werte der Lebensdauer auf ein Verzeichnis geben.

Daher nochmal ein paar Tipps zum Umgang mit Sessions zusammengefasst:

- Verzeichnis immer explizit je Anwendung angeben. Das verhindert sowohl, dass andere Skripte die Session-Dateien bei einer dort geringer eingestellten Lebensdauer vorzeitig löschen und schützt die Dateien in einer Shared-Host-Umgebung natürlich vor dem Zugriff der anderen Kunden auf dem Server, der bei einem gemeinsamen /tmp-Verzeichnis durchaus möglich sein kann.

- Startzeit immer selbst speichern und Session ggf. selbst beenden/neu starten, wenn abgelaufen.

- Beim ersten Start der Session Session-ID wechseln.

- Bei jedem Statuswechsel Session-ID wechseln.

- Selbst bei session.trans-sid bei einem Redirect die Session-ID ggf. selbst anhängen, da absolute URIs ja nicht umgeschrieben werden (und Werte im Location-Header womöglich eh nicht, aber das weiß ich nicht auswendig).

- register_globals immer ausschalten, denn sonst überschreiben Variablen im globalen Namensraum automatisch Session-Variablen, wenn eine derart benannte Session-Variable existiert!

- session_regenerate_id() löscht nur die alten Session-Daten (z.B. Datei), wenn der erste Parameter auf true steht (ab 5.1), andernfalls selbst löschen!

- Das Speichern und Kontrollieren einer maximalen Gesamtlaufzeit einer Session kann zusätzliche Sicherheit bieten.

- Beim Kapseln der Session in einer Klasse dürfen die Daten natürlich nicht in $_SESSION gespeichert werden bzw. eben erst beim Speichern der Session, da sonst die Kapselung ja für den Arsch ist.

- Session-Dateien werden von dem Skript gesperrt, so dass ein explizites session_write_close(); bei Framesets, Weiterleitungen etc. Verzögerungen ersparen kann.

- Ein $_SESSION = $aArray; scheint Probleme zu machen. Es wird ein foreach($aArray as $sKey => $mValue) $_SESSION[$sKey] = $mValue; empfohlen.

Hoffe, das hilft dem einen oder anderen weiter. …wird wohl mal Zeit für ein kleines Tutorial.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.08.2007, 11:50 Nach oben    #12
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

Danke Bast! Das sind ja ganz neue Welten, so hab ich mich damit noch gar nicht auseinandergesetzt! Vielen Dank!
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php
kampfgnom ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.08.2007, 13:17 Nach oben    #13
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.374
Standard

Zitat:
Zitat von Basti Beitrag anzeigen
…wird wohl mal Zeit für ein kleines Tutorial.
Immer gerne gesehen!!!
Jann Hendrik ist gerade online  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Now Playing! Lars Plauderecke 2387 01.12.2008 13:03
[Thunderbird] eMails werden nur zum löschen markiert MrNiceGuy Plauderecke 5 13.09.2007 18:56
Prob. beim Ordner löschen X-Unity.de PHP-Programmierung 15 19.03.2006 11:27
Cookies - Was haltet ihr davon? MrNiceGuy Plauderecke 17 01.12.2005 09:47
IE + Cookies Chr!s PHP-Programmierung 9 07.09.2005 18:51


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45