Kann ein Parameter des Pfades zu $ _COOKIE [] hinzugefügt werden? .Zugriff auf Cookie-Werte auf verschiedenen Pfaden der gleichen Domäne mit PHP?
Antwort
Falls Sie versuchen, auf Cookies zuzugreifen, die für einen anderen Pfad auf der gleichen Domäne als der aktuellen festgelegt sind, kann dies nicht durchgeführt werden. Der Browser selbst schränkt dies ein und sendet nur die Cookies, die für den aktuellen Pfad geeignet sind.
Was ist mit Facebook ?, Facebook schreibt Cookies für die Domain "facebook.com", aber es verwendet Cookies von "www.facebook.com" – user962284
@ user962284 Sind Sie sicher? Ich bin mir ziemlich sicher, dass FB alle Cookies auf www.facebook.com setzt, da es nicht einmal möglich ist, auf facebook.com zuzugreifen (sie leiten Sie zu www um.) –
Das ist falsch. Ein Browser, der den Empfehlungen des RFC * folgt, sendet * beide Werte zurück, wenn mehr als ein Cookie denselben Namen, aber unterschiedliche Pfade hat. Es ist tatsächlich PHP, das in die Quere kommt; Bitte sehen Sie meine gepostete Antwort. –
ja, es ist das vierte Argument ist, aber Sie werden nur in der Lage sein, den Cookie zugreifen, wenn es einen Pfad festgelegt wurde mit, dass das aktuelle Verzeichnis in residiert
, die verwirrend ist ... hier ist es von PHP:
Der Pfad auf dem Server, auf dem der Cookie verfügbar ist. Wenn der Wert '/' ist, ist der Cookie in der gesamten Domäne verfügbar. Wenn der Wert '/ foo /' ist, ist das Cookie nur im Verzeichnis/foo/ und in allen Unterverzeichnissen wie /foo/bar/der Domäne verfügbar. Der Standard Wert ist das aktuelle Verzeichnis, das das Cookie wird eingestellt in.
http://php.net/manual/en/function.setcookie.php
Sie darauf zugreifen wie jedes anderen Cookie. Es wird in $ _COOKIE verfügbar, wenn das Skript darauf zugreifen kann.
Nein, solche Parameter sind nicht möglich, da der Browser den Pfad zum Server nicht sendet. Es sendet nur den Namen und den Wert jedes Cookies (so dass Sie den Pfad nicht sehen können, wenn es ein Session-Cookie ist, wenn es abläuft usw.).
Ich glaube nicht, dass es möglich sein wird, den Cookie von einem anderen Pfad zu bekommen, da dies möglicherweise ein Sicherheitsproblem verursachen könnte.
Während der HTTP-Client (dh: Browser) den Pfad, auf den der Cookie gesetzt wurde, nicht zurücksendet, macht PHP tatsächlich Annahmen über Cookies bezüglich seines $ _COOKIE Arrays.
Wenn Sie setzen zwei Cookies mit dem gleichen Namen, ein mit dem Wert „first-Wert“ mit Pfad / und die zweite mit dem Wert „zweiter Wert“ mit Pfad /Test, ein Browser nach dem empfohlen - aber nicht erforderlich - Verhalten vom RFC sendet beide Werte an Sie zurück. Wenn Sie eine URL unter dem Pfad/Test zuzugreifen, sendet der Browser diese:
Cookie: name=second-value, name=first-value
Das "Problem" ist, dass PHP nur den ersten Wert liest - $ _COOKIE [ 'name'] enthält nur der Wert "zweiter Wert" ohne Hinweis darauf, dass "erster Wert" existiert. Wenn Sie Zugriff auf beide Werte benötigen, müssen Sie den Wert $ _SERVER ['HTTP_COOKIE'] selbst analysieren - dies wird "Name = zweiter Wert, Name = erster Wert" für das obige Beispiel enthalten. Beachten Sie, dass "zweiter Wert" zuerst in Zeile ist, da es mit einem längeren Pfad festgelegt wurde. Bitte beachten Sie, dass der RFC dieses Verhalten nicht garantiert, es besagt nur, dass HTTP-Clients SOLLEN dies tun sollten.
Interessant, ist das spezifisch für Unterverzeichnisse? Wie bei einer Anfrage an ein Unterverzeichnis werden die Cookies des Roots empfangen, aber eine Anfrage an das Root erhält keine Cookies für Unterverzeichnisse? Ich bin auch neugierig, ob Browser dies tatsächlich implementieren oder nicht :) –
Korrekt, ein Unterverzeichnis oder ein längerer Pfad erhalten immer einen Cookie mit einem kürzeren Pfad, der übereinstimmt. Alle Browser sind auf diese Weise implementiert. Das einzige nicht garantierte Verhalten ist, wenn Sie mehrere Cookies mit demselben Namen, aber unterschiedlichen Pfaden haben - Sie sollten * beide Cookies in einer festen Reihenfolge zurückerhalten, aber der RFC macht keine Versprechen. –
Dies ist eigentlich die richtige Antwort, da es eine vollständige Erklärung gibt, warum dies passiert. Ich sollte beachten, und das fehlt, obwohl Sie '$ _COOKIE []' einen Pfad nicht sagen können, können Sie 'setcookie' einen Pfad sagen. Wir stehen vor einer solchen API. Sie können also 'setcookie' sagen, den Root-Pfad zu setzen und dann überall darauf zuzugreifen:' setcookie ('name', 'data', expire, '/') '. Dieser letzte Parameter ist der Pfad und setzt ihn auf '/', damit er zum Root-Pfad wird. Dies würde das Problem des OP lösen. – jfreak53
- 1. Zugriff auf PHP-Datei aus anderer Domäne
- 2. Mit zwei verschiedenen Sitzungen in der gleichen Domäne
- 3. Zugriff auf Ansichten mit absoluten Pfaden auf ASP.NET MVC
- 4. umschreiben Bedingung auf der gleichen Domäne aber mit derselben Abfragezeichenkette
- 5. wie mit einem Proxy-Pass auf der gleichen Domäne
- 6. Share Windows-Authentifizierung zwischen Anwendungen auf der gleichen Domäne
- 7. Zugriff auf PHP-Variablen an verschiedenen Orten in der gleichen Datei
- 8. Zugriff auf die Standard-App-Domäne
- 9. Zugriff auf Musik-Ordner auf verschiedenen Geräten
- 10. Zugriff auf json mit php
- 11. Produktbilder dienen von verschiedenen Pfaden auf der Produktdetailseite und in der Sitemap
- 12. Mulitple Docker Container auf Port 80 mit der gleichen Domain
- 13. Erlaube dem Zugriff auf Elasticsearch auf die Elasticsearch-Domäne
- 14. Laden der gleichen Sitzung in 2 iframes auf der gleichen Domäne
- 15. Zugriff auf Sitzungsvariablen auf verschiedenen Servern nicht möglich
- 16. Die gleichen Linux-Treiber auf verschiedenen Chips
- 17. Aufruf der gleichen Methode mehrmals auf verschiedenen Teilen des Arrays
- 18. Verschiedene Schriftgrößen auf verschiedenen Geräten in der gleichen Größenklasse
- 19. Processing AuthenticationResult von verschiedenen Anbietern auf der gleichen Seite
- 20. Verwendung der gleichen Testsuite auf verschiedenen Implementierungen einer Repository-Schnittstelle
- 21. Join Tabelle zweimal - auf zwei verschiedenen Spalten der gleichen Tabelle
- 22. Zugriff auf $ innerhalb der PHP-Callback-Funktion
- 23. php Zugriff auf mongodb Master/Slave Zugriff
- 24. Zugriff auf Attribute von verschiedenen Modell
- 25. Beitritt der gleichen Tabelle zweimal auf verschiedenen Spalten
- 26. Bereitstellen von zwei verschiedenen Play! Anwendungen auf dem gleichen Hostnamen
- 27. Beschränken Sie den Zugriff auf einen Teil der ASP.Net Web App (Nur die Computer aus der gleichen Domäne sind erlaubt)
- 28. Zugriff auf Variable von verschiedenen Funktionen
- 29. 2 Formulare auf der gleichen Seite mit AJAX/PHP
- 30. PHP: direkten Zugriff auf Seite
Sie könnten ['$ cookie-> setPath ($ path)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie finden.php # L104) hilfreich, wie in [diese eigenständige Bibliothek] (https://github.com/delight-im/PHP-Cookie) gefunden. – caw