Heim >Backend-Entwicklung >PHP-Tutorial >Ein PHP-Neuling hat eine Frage zu Cookies
Der Code lautet wie folgt:
<code>function cookie($name) { return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null; } /** * 从客户端浏览器删除一个 Cookie。 * @param string $cookie_name 要删除的 Cookie 名称。 * @return void */ function delete_cookie($cookie_name) { setcookie($cookie_name, '', time() - 2 * 24 * 3600); unset($_COOKIE[$cookie_name]); } delete_cookie('mycookie'); setcookie('mycookie', 'myvalue'); var_dump(cookie('mycookie')); // 为何这里总是输出NULL?为什么不是输出刚刚设置的'myvalue'?</code>
Warum wird immer NULL ausgegeben? Warum wird „myvalue“ nicht einfach als Ausgabe ausgegeben?
Der Code lautet wie folgt:
<code>function cookie($name) { return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null; } /** * 从客户端浏览器删除一个 Cookie。 * @param string $cookie_name 要删除的 Cookie 名称。 * @return void */ function delete_cookie($cookie_name) { setcookie($cookie_name, '', time() - 2 * 24 * 3600); unset($_COOKIE[$cookie_name]); } delete_cookie('mycookie'); setcookie('mycookie', 'myvalue'); var_dump(cookie('mycookie')); // 为何这里总是输出NULL?为什么不是输出刚刚设置的'myvalue'?</code>
Warum wird immer NULL ausgegeben? Warum wird „myvalue“ nicht einfach als Ausgabe ausgegeben?
COOKIE wird von Ihrem Client mitgebracht, daher sollte das COOKIE vom letzten Skript gesetzt werden. Allerdings löschen Sie jedes Mal, wenn Sie dieses Skript ausführen, das letzte Mal und setzen ein neues COOKIE COOKIE kann nur vom Skript gelesen werden, das beim nächsten Mal ausgeführt wird. Fahren Sie dann mit dem Zyklus „Löschen-Set-Löschen-Set“ fort. . . Ich kann es also nicht lesen.
Wenn Sie COOKIE in SESSION ändern, ist das Lesen von SESSION nicht so langsam wie COOKIE. Es wird auf dem Server gespeichert.
Denn die Zuweisung von COOKIE wird erst bei der nächsten Browsing-Anfrage wirksam. Aber Sie löschen es, wenn Sie es das nächste Mal durchsuchen, also frage ich mich immer wieder, wie viel Hass dieses COOKIE gegen Sie hegt ...
Sie haben $_COOKIE['mycookie'] in dieser Anfrage gelöscht und setcookie benötigt die nächste Anfrage, um wirksam zu werden.
$_COOKIE ist der Browser, der Cookie-Informationen an PHP weitergibt.
setcookie ist PHP Teilen Sie es dem Browser mit die Cookie-Informationen.
Das heißt, die Generierung von $_COOKIE['xxx'] erfordert, dass die -Anfrage , in der sich setcookie('xxx') befindet, zuerst ausgeführt wird
Wenn Sie „myvalue“ ausgeben möchten, können Sie es auskommentieren unset($_COOKIE[$cookie_name]);
. Sie können es ausgeben
unset wird sofort wirksam, set_cookie wird jedoch erst bei der nächsten Anfrage wirksam.
Wenn der nicht gesetzte Satz gelöscht wird, ist das Ausgabeergebnis in ähnlicher Weise nicht der aktuelle set_cookie, sondern der letzte set_cookie.
Wenn ich zum Beispiel den nicht gesetzten Satz lösche und dann aktualisiere, wird string(7) "myvalue"
angezeigt, kein Problem;
angezeigt
string(7) "myvalue"
Erneut aktualisieren, um