Heim > Backend-Entwicklung > PHP-Tutorial > Warum fehlt mein Cookie-Wert, nachdem ich „setcookie()' in PHP verwendet habe?

Warum fehlt mein Cookie-Wert, nachdem ich „setcookie()' in PHP verwendet habe?

Linda Hamilton
Freigeben: 2024-12-14 11:12:12
Original
824 Leute haben es durchsucht

Why is My Cookie Value Missing After Using `setcookie()` in PHP?

Informationen zur Barrierefreiheit von Cookies

Problem: Unerwartetes Fehlen des Cookie-Werts nach setcookie()

In PHP wird $_COOKIE verwendet, um den Wert von a abzurufen Ein neu erstelltes Cookie unmittelbar nach dem Aufruf von setcookie() kann dazu führen, dass der gewünschte Wert nicht verfügbar ist. Dieses Phänomen ergibt sich aus der asynchronen Natur der HTTP-Cookie-Verarbeitung.

Eine Geschichte der Zeit: Client- und Server-Interaktionen

Wenn setcookie() aufgerufen wird, gibt das PHP-Skript einen Befehl zum Erstellen eines Cookies aus und fügen Sie es in die ausgehende HTTP-Antwort ein. Die Antwort wird jedoch erst dann an den Client (d. h. den Browser) gesendet, wenn das Skript seine Ausführung abgeschlossen hat.

Da die Variable $_COOKIE die in der aktuellen HTTP-Anfrage enthaltenen Cookies widerspiegelt, werden alle während dieser Zeit an Cookies vorgenommenen Änderungen berücksichtigt Die Ausführung des serverseitigen Skripts ist in $_COOKIE nicht sofort verfügbar.

Cookie-Verfügbarkeitszeitleiste

Zur Veranschaulichung Zeitleiste:

  1. setcookie() wird aufgerufen.
  2. Die Skriptausführung wird fortgesetzt und die Variable $_COOKIE geändert.
  3. Sobald die Ausführung des Skripts abgeschlossen ist, wird die vollständige HTTP-Antwort angezeigt. einschließlich des neu erstellten Cookies, wird an den Client gesendet.
  4. Auf der Clientseite wird das neue Cookie gesetzt, aber der Browser sendet dieses Cookie nicht zurück an den Server bis zur nächsten HTTP-Anfrage.
  5. In nachfolgenden Ausführungen des Skripts enthält die Variable $_COOKIE den Wert des neu erstellten Cookies.

Behebung des Problems

Um sicherzustellen, dass $_COOKIE den neu festgelegten Cookie-Wert widerspiegelt, können Sie ihn darin überschreiben Skript:

setcookie('uname', $uname, time() + 60 * 30);
$_COOKIE['uname'] = $uname;
Nach dem Login kopieren

Diese Aktion erstellt das Cookie in der ausgehenden HTTP-Antwort und legt seinen Wert sofort in der Variablen $_COOKIE fest, wodurch es für die Verwendung innerhalb der aktuellen Skriptausführung zugänglich gemacht wird.

Das obige ist der detaillierte Inhalt vonWarum fehlt mein Cookie-Wert, nachdem ich „setcookie()' in PHP verwendet habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage