如何在不使用函数setcookie()或setrawcookie()的情况下将PHPSESSID设置为$ _COOKIE超全局变量?

PHP*_*Fan 0 php cookies session setcookie session-cookies

我正在学习PHP最重要且最难理解的概念."会话和Cookie"

根据我的理解,cookie只能通过使用setcookie()或者setrawcookie()函数设置到浏览器中.

根据我对会话过程的理解,它以下列方式工作.

  • 每个会话都使用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值时设置的参数值是多少?

谢谢.

dec*_*eze 5

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.cookie_*参数决定.session_set_cookie_paramsini_set

  • 当然,`$ _COOKIE [session_name()]`会更正确;但是同样,您几乎根本不需要在这里戳一戳。 (2认同)