簡體   English   中英

PHP如何在不使用函數setcookie()或setrawcookie()的情況下將PHPSESSID設置為$ _COOKIE超全局變量?

[英]How does PHP set the PHPSESSID into $_COOKIE superglobal variable without using the function setcookie() or setrawcookie()?

我正在學習PHP最重要和最難理解的概念,即。 “會話和Cookie”

根據我的理解,只能使用setcookie()setrawcookie()函數將cookie設置到瀏覽器中。

根據我對會話過程的理解,它的工作方式如下。

  • 通過使用session_start()函數來開始每個會話。
  • session_start()函數必須位於頁面上任何HTML(包括空行)之前。
  • session_start()函數生成一個隨機的會話ID,並將其存儲在用戶計算機上的cookie中(這是唯一實際存儲在客戶端的會話信息。)
  • Cookie的默認名稱是PHPSESSID 為了在我的PHP代碼中引用會話ID,因此,我將引用變量$ PHPSESSID(這是一個cookie名稱)

如果以上說明中我的理解有誤,請糾正我。

我的疑問是,由於會話正在$_COOKIE超全局變量中設置一些值,因此無法使用setcookie() or setrawcookie()任何函數,那么會話ID仍如何存儲為cookie變量?

如果我假設將會話ID設置為cookie變量,並且內部可能已調用setccookie() or setrawcookie()那么在調用函數setccookie() or setrawcookie()來設置cookie時設置的參數值是什么?值?

謝謝。

Cookie的默認名稱是PHPSESSID 要在PHP代碼中引用會話ID,因此,我將引用變量$PHPSESSID

不,它只是cookie的名稱,不會將其設置為全局變量。 您可以在$_COOKIE['PHPSESSID']訪問值。 但是,實際上,這根本不關心您,您只應使用session_*函數$_SESSION超全局變量與PHP的會話API進行交互,對於大多數意圖和目的,所使用的基礎cookie都不是您所關心的。

…在任何地方都無法使用setcookie()setrawcookie()函數……

如果我假設將會話ID設置為cookie變量,並且內部可能已調用setccookie()setrawcookie()

是的,PHP內部調用了一些將設置cookie的函數。 它可能既不是setcookie也不是setrawcookie而是一些內部C函數來設置cookie。 再次,這實際上與您無關。 您只需要了解調用session_start會在某種程度上內部導致設置cookie。

…那么調用函數setccookie()setrawcookie()設置cookie值時設置的參數值是多少?

這些由您可以通過session_set_cookie_paramsini_set設置的各種session.cookie_*參數確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM