首頁 > 後端開發 > php教程 > 為什麼在 PHP 中使用 `setcookie()` 後我的 Cookie 值遺失了?

為什麼在 PHP 中使用 `setcookie()` 後我的 Cookie 值遺失了?

Linda Hamilton
發布: 2024-12-14 11:12:12
原創
824 人瀏覽過

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

了解Cookie 可訪問性

問題:setcookie() 後意外缺少Cookie 值

在PHP 中,使用$_COOKIE 檢索a 的值呼叫setcookie() 後立即新建立的cookie 可能會導致所需的值無法使用。這種現像是由 HTTP cookie 處理的非同步性質所引起的。

時間故事:客戶端和伺服器互動

呼叫 setcookie() 時,PHP 腳本會發出一個指令來建立 cookie並將其包含在傳出的 HTTP 回應中。但是,在腳本完成執行之前,回應不會傳送到客戶端(即瀏覽器)。

由於 $_COOKIE 變數反映了目前 HTTP 請求中包含的 cookie,因此在執行期間對 cookie 所做的任何更改伺服器端腳本的執行不會立即在 $_COOKIE 中可用。

Cookie 可用性時間軸

來說明時間軸:

  1. setcookie() 被呼叫。
  2. 腳本繼續執行並修改 $_COOKIE 變數。
  3. 一旦腳本完成執行,完整的 HTTP 回應,包括新建立的cookie,被傳送到客戶端。
  4. 在客戶端,新的cookie被設置,但瀏覽器不會在下一個 HTTP 請求之前不會將此 cookie 發送回伺服器。
  5. 在腳本的後續執行中,$_COOKIE 變數將包含新建立的 cookie 的值。

解決問題

為了確保$_COOKIE 反映新設定的cookie 值,您可以在相同的值中覆寫它script:

setcookie('uname', $uname, time() + 60 * 30);
$_COOKIE['uname'] = $uname;
登入後複製

此操作在傳出HTTP 回應中建立cookie,並立即在$_COOKIE 變數中設定其值,使其可以在目前腳本執行中使用。

以上是為什麼在 PHP 中使用 `setcookie()` 後我的 Cookie 值遺失了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板