我试图研究这种机制,但只找到提示,但这些并不是很一致。如何将session _id发送到浏览器,以及当用户请求新页面时,浏览器如何指示返回它?
谢谢,克里斯
答案 0 :(得分:28)
PHP将做两件事:
<form>
开始标记后添加一个名称相同的隐藏输入。请注意,这是一件危险的事情,因为复制/粘贴包含PHPSESSID参数的URL将能够在网站上共享您的登录会话 - 网络服务器没有简单的方法告诉您与您发送链接的人不同...
答案 1 :(得分:0)
PHP自己的会话模块支持从GET和POST数据中获取会话ID(除了cookie)。您可以使用http://uk.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid和http://uk.php.net/manual/en/session.configuration.php#ini.url-rewriter.tags让php处理id的转发。但无论如何请记住,特别是如果您使用GET传输ID,则您的某些用户更有可能意外泄露其(有效)会话ID。
底层机制不关心如何会话ID从客户端传输到服务器。只要你将“正确”值传递给session_id(),它就会起作用 - 即使你做了一些奇怪的事情(愚蠢?)滥用etag-header作为会话id的载体; - )
答案 2 :(得分:0)
会话通过为每个访问者创建唯一ID(UID)并根据此UID存储变量来工作。 UID要么(1)存储在cookie中,要么(2)在URL中传播。