php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-02-2007, 15:38
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard [HILFE] Riesen Problem mit Cookies!

Hi ho!

Habe ein kleines aber doch recht heftiges Problemchen mit meinem selbstgeschriebenem CMS. Und zwar kommt es ständig in Verbindung mit suchmaschinenfreundlichen Links dazu, dass das CMS die hauseigenen Cookies nicht erkennt. Die suchmaschinenfreundlichen Links sehen wie folgt aus:

http://localhost/cms/index.php/site/account/op/messages

Nun läuft das folgendermaßen mit den Cookies:

Loggt sich ein Benutzer ein, so wird ein 128 langer Hash erstellt, und im Cookie mit der Bezeichnung "login" gespeichert. Zusätzlich wird der Hash in der Datenbank gespeichert. Bei jedem Seitenaufruf nun wird das Cookie ausgelesen, der Hash mit der Datenbank abgeglichen, und die Benutzerdaten frisch aus der Datenbank geholt.

Loggt sich ein Benutzer aus, so wird das Cookie auf seinem Rechner ausgelesen, der Hash aus der Datenbank gelöscht, und anschließend das Cookie selbst. Sollte ein Cookie vorhanden sein, aber kein Hash in der Datenbank, so wird ebenfalls die Logout Funktion aufgerufen, welche das Cookie löscht.

Soviel zur Theorie. Nun zur Praxis:

Ein Benutzer ist eingeloggt, und arbeitet mit dem System. Dann loggt er sich wieder aus. Nun passiert aber folgendes:

Es wird die Logout Funktion aufgerufen. Das Cookie wird ausgelesen, der Hash wird aus der Datenbank gelöscht, das Cookie hingegen aber NICHT, warum auch immer. Nun erfolgt eine Weiterleitung zur Startseite (.../index.php/), und es wird die Benutzerfunktion aufgerufen, die Userdaten sammelt. Diese stellt Fest, dass das Login Cookie existiert, liest es aus, gleicht den Hash mit der Datenbank ab, stellt nun aber fest, dass der Hash in der Datenbank nicht existiert, löscht das Cookie (wobei es auch hier wieder nicht gelöscht wird), und leitet den Benutzer zur Startseite weiter.

Ergo lande ich an dieser Stelle in einer Endlosschleife, und erhalte einen Umleitungsfehler.

Aufgefallen ist mir das ganze, als ich nach dem Ausloggen nicht zur Startseite gelangt bin, sondern mehrere Fehlermeldung (auch seitens PHP erhalten habe), und dann im FireFox entdeckt habe, dass der besagte Login Cookie incl. Wert existiert, obwohl er eigentlich gelöscht sein müsste.

Nun frage ich mich, wieso das CMS die eigens gesetzten Cookies nicht erkennt!? Mit normalen Links, also index.php?site=account&op=messages funktioniert alles problemlos. Nur sobald ich die Links auf suchmaschinenfreundlich setze, kommt es eben zu den besagten Problem, dass das CMS die eigenen Cookies nicht mehr erkennt.

Arbeiten tu ich mit Apache 2.2 sowie PHP5 (AppservNetwork v2.5.7). Die Cookies setze ich mit setcookie("name", "value"), löschen tu ich sie mit setcookie("name", "").

Hat jemand von Euch ne Ahnung was da los ist!? kann das ein Bug seitens PHP Sein!? Muß ich die Cookies irgendwie entsprechend setzen oder so!? Bzw. wieso lassen die sich nicht löschen. setcookie("name", "", time()-666) z.b. hat auch nichts bewirkt.

Hoffe es kann mir jemand helfen. Bin schon echt verzweifelt diesbezüglich...

Danke schonmal!

P.s. dieser Fehler tritt gelegentlich auch beim Umschalten von normalen zu suchmaschinenfreundlich Links auf, dass das Cookie nicht erkannt und der Benutzer ungewollter Weise gleich mit ausgeloggt wird...
Mit Zitat antworten
  #2 (permalink)  
Alt 06-02-2007, 15:51
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: [HILFE] Riesen Problem mit Cookies!

OffTopic:
Wieder ein sehr typisches Problem - mit ein paar aufgeschnappten Stichworten (hier: "suchmaschinenfreundliche URLs") bastelt $newbee fröhlich drauf los, ohne sich im geringsten über die Bedetung dessen, was er da veranstaltet, im klaren zu sein ...


Ohne eine explizite Angabe, in welchem Pfad sie gültig sein sollen, sind deine Cookies nur innerhalb des aktuellen Pfades gültig - und der ist bei dir bei der genannten Beispieladresse /cms/index.php/site/account/op/

Jede Ressource, die ausserhalb davon liegt, bekommt deshalb selbstverständlich den Cookie nicht wieder mitgeschickt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 06-02-2007, 15:56
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe mir auch schon gedacht, dass das wohl mit den Pfaden zutun haben sollte. Aber wie mach ich nun ein Cookie Pfadunabhängig verfügbar!? Was gibt es da sonst für eine Lösung!?

Ich habe auch schon versucht (weis nicht ob das das richtige ist) einen Pfad mitzugeben, also etwa so in der Richtung:

setcookie("name", "wert", "", "/pfad/");
setcookie("name", "wert", "", "pfad/");
setcookie("name", "wert", "", "/pfad");
setcookie("name", "wert", "", "pfad");

Aber da wird das Cookie erst gar nicht gesetzt.

Zugegeben der Part mit den suchmaschinenfreundlichen Links war ein Codeschnipse, der ansich recht wirksam ist. Bis eben auf das Cookie Problem...
Mit Zitat antworten
  #4 (permalink)  
Alt 06-02-2007, 15:59
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von PHPler
Aber da wird das Cookie erst gar nicht gesetzt.
Dann debugge - in dem du bspw. prüfst, ob es zwar gesendet wird, aber vom Client abgelehnt. (Sprich: HTTP Response Header checken.)

Und dann überprüfe deine Cookie-Einstellungen am Client, teste in verschiedenen Clients, etc.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 06-02-2007, 16:59
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
löschen tu ich sie mit setcookie("name", "").
sinnvoller ist unset ( $_COOKIE [ 'name' ] )
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #6 (permalink)  
Alt 06-02-2007, 17:00
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von tontechniker
sinnvoller ist unset ( $_COOKIE [ 'name' ] )
[ ] Du hast den Unterschied zwischen client- und serverseitig begriffen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 06-02-2007, 18:41
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Okay, nun bin ich mittlerweile soweit, dass der den Pfad ins Cookie setzt, wobei es immernoch Probleme gibt die Domain zu setzen, wenn $_SERVER['HTTP_HOST'] "localhost" zurückgibt. Aber das ist erstmal wurscht.

Bleibt nur noch das Problem mit dem Löschen des Cookies. Habs zwar nun auch gelesen, dass man unter PHP5 die Cookies mit "unset" löscht. Allerdings zeigt dieser Befehl auch hier wieder keine Wirkung...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

kostenloser PHP-Editor Codelobster ansehen kostenloser PHP-Editor Codelobster

Kostenloser PHP, HTML, CSS, JavaScript editor (IDE) - Codelobster PHP Edition

13.03.2019 Berni | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
Lazy Load Plugin für jQuery

Das Lazyload Plugin, lädt Bilder nach, wenn sie im Viewport sichtbar werden.

10.03.2019 phpler | Kategorie: JQUERY-PLUGINS
WeltExplorer v1.0

WeltExplorer v1.0 ist ein Dateimanager zum Browsen und Operieren im Dateisystem. Bei installiertem cURL können Ordner und Dateien zu entfernten FTP-Servern hochgeladen bzw. von diesen heruntergeladen werden, etwa zum Erstellen von Backups oder Mirrorsites

06.02.2019 weltvolk | Kategorie: PHP/ File
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:24 Uhr.