ChrisB: Windows mit PHP Cookie/Session zerschossen

Beitrag lesen

Hi,

Verezeichnis: a darin verzeichnis a1

In a liegt eine kleine PHP Datei nennet sich sinnigerweise "showcook.php" die nur das enthält:

In a1 liegen 2 Dateien eine heisst "cook.php" und die andere "cook2.php"

Also, du hast also folgende Script-URLs:
http://localhost/a/showcook.php
http://localhost/a/a1/cook.php
http://localhost/a/a1/cook2.php

Wenn cook.php seinen Cookie mit der Pfandangabe / setzt, dann ist dieser Cookie überall unter der Domainwurzel verfügbar - also kann auch /a/showcook.php diesen "sehen" (d.h. bekommt ihn beim Request mitgesendet).

Wenn cook2.php einen Cookie ohne Pfadangabe setzt, dann ist dieser Cookie nur unterhalb des aktuellen Pfades, in dem dieses Script liegt, gültig, also unterhalb von /a/a1/.
Dass /a/showcook.php diesen Cookie nicht "sehen" kann, ist ganz richtig - muss so sein.

Works as designed bis hier her.

Der wesentlich Unterschied ist die optionale Pfadangebe bei set_cookie.

Diese war lokal bisher nie von Nöten, jetzt schon!!!

Dann hattest du lokal bisher entweder immer "flache" Verzeichnisstrukturen, in denen das nicht auffiel, oder du hast sonst irgendwas anders gemacht.

Wenn ich nun die cook und cook2 ein paar mal refreshed habe hat sich der Counter logischerweise erhöht und die Cookies sind natürlich vorhanden.

Sind sie? Nicht wirklich, zumindest nicht wie es vorher war.

Rufe ich nun showcook im FF auf erhalte ich Array ( [countx] => 6 ) ,
was bedeutet FF zeigt mir nur den Cookie an, der mit der optionalen Pfadangabe gesetzt wurde.

Jaseufzsieheoben: Works as designed und *muss* *so* *sein*.

Beim Aufruf von cook und cook2, die ja beide im selben Verzeichnis liegen, lasse ich ja auch die Cookies anzeigen, dort werden beide auf beiden Datien angezeigt.

Natürlich - beide Dateien liegen innerhalb eines Pfades, für den beide Cookies gültig sind.

Jetzt kommt aber auch noch der IE hinzu:

Insb. der ist bekannt dafür, teilweise Probleme zu bereiten, wenn der verwendete Domainname nicht in "ausreichender" Anzahl Punkte enthält. (Weitere dazu in den Nutzerkommentaren zu setcookie.)

Der zeigt mir, nicht mal wie FF, ein einziges Cookie auf showcook an:
Array ( ) . cook und cook2 dort schon aber nicht unbedingt verlässlich. Will sagen, er zeigt zumindest diese beiden Dateien nur so an wie FF, wenn ich mindestens cook.php also mit Pfad aktiviert hatte, dann  zeigt er beide wenn ich danach auch cook 2 besucht hatte. Zuerst cooks ein paar mal refreshed kommt nichts.

Die Beschreibung ist mir zu vage, um dazu eine definitische Aussage zu treffen - aber wie gesagt, Probleme mit dem IE sind unter gewissen Umständen bekannt.

Das Riesenproblem dabei ist natürlich auch noch, dass nun sehr viele Scripte(auch Fremdscripte) nicht mehr laufen. Denn in der Regel werden dort bei Cookie angaben nicht die Optionalen Parameter genutzt.

Müssen ja auch nicht; es gibt genügend Anwendungsfälle, in denen das innerhalb bestimmter Pfadstrukturen auch so wie gewünscht funktioniert.

Es steht aber für mich nun ausser Zweifel, dass etwas im Windows kapputt ist.

Halte ich nach wie vor für eine ziemlich unsinnige Vermutung.
(Wohin gegen ich die, dass du von den Vorgängen und Zusammenhängen bisher nur wenig Ahnung hast/hattest, aufrecht erhalte.)

Wo muss bei Windos ansetzen um den Fehler zu finden?

Setze damit an, dass du nicht bei Windows ansetzt.

Was höchstens noch von Interesse sein könnte, sind deine Einstellungen in den jeweiligen Testbrowsern bzgl. der Behandlung von Cookies - über die hast du uns bisher noch nichts mitgeteilt. (Aber auch die wären kein Windows-spezifisches Problem.)

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.