2010-07-31 60 views
1

确实如果一个脚本设置了一个cookie,并且用户的浏览器设置为不接受cookie,那么设置的cookie函数会检测到这个,而不是设置一个会话?在PHP中这是真的吗?

回答

9

另外,Cookie和会话不能直接比较。事实上,Cookie是会话实施的典型组成部分。

当然,您可以检测用户是否接受cookie。服务器端可以通过设置cookie,转发用户以及检查用户是否在新请求中发送刚设置的cookie来进行。

请记住:

  • 会议是一个比较抽象的概念;它将用户关联到服务器端存储的一些数据。这通常通过cookie实现 - cookie存储标识存储数据的密钥;用户每发送一次请求都会发送这个密钥,这样服务器就可以知道要使用哪些数据。 Cookie的替代方法是在每个请求的URL中传递此密钥。这是不太理想的,因为它会污染URL并可能使用户面临一些安全风险(会话固定)。
  • Cookies仅仅是服务器请求用户在每次请求时发送给它的数据片段(本身或一些更广泛的服务器)。
1

我想你指的是session.use_trans_sid指定设置:

如果设置此设置:函数ini_set( 'session.use_trans_sid指定',1); 如果没有可用的cookie,PHP会将会话ID附加到URL。

+0

我不认为它可以作为回退,但我可能是错的。 – Artefacto 2010-07-31 06:39:33

+0

这是正确的:如果SID处于活动状态,则会话ID将附加到任何链接。如果cookie被禁用,它将使会话正常工作,但它也会使检索会话密钥变得更容易(例如从浏览器历史记录中获取)。它使链接更难看;) – BurninLeo 2010-08-03 16:56:10