为什么我可以在setcookie没有任何准备的情况下使用,而session_start()在使用前需要使用$_SESSION?我认为它们的作品是相似的.
Gor*_*don 11
因为setcookie() 定义了要与其他HTTP头一起发送的cookie.这与session_start()的作用完全不同,例如,基于通过GET或POST请求传递的会话标识符创建会话或恢复当前会话,或通过cookie传递.
第一个只是向标题添加内容并将其发送到浏览器,而另一个从 $ _COOKIEs或$ _GET或$ _POST 获取会话ID ,然后尝试在session_save_path中查找会话文件,并在发现时将其值反序列化为$ _SESSION如果没有,则创建一个新会话,可能setcookie在此过程中使用设置会话ID.
请参阅PHP手册中的"会话 " 一章.
编辑类似@Felix正确指出如下,会话不一定保存在文件中.但这并不重要,因为参数保持不变:session_start将查找和(重新)初始化会话数据,而setcookie只是按照名称所暗示的那样.