$ _SESSION保存在服务器或浏览器中?

时间:2010-12-22 16:45:51

标签: php session

因为我在同一服务器和域上有两个网站(不同的文件夹),并且在询问$_SESSION['id']时遇到问题,基本上两个网站都使用相同的值,我不希望这样。

如果我更改域并将其指向同一服务器上的同一文件夹,我是否会遇到同样的问题?

4 个答案:

答案 0 :(得分:7)

会话数据存储在服务器上。带有会话ID的cookie存储在用户的计算机上,并与单个域名相关联。浏览器将此cookie传递给服务器,以便它知道要与用户关联的会话数据。

在同一个域下托管的两个网站将共享同一个会话,因为只有一个包含会话ID的cookie。如果您将网站放在不同的域中,您将不再有问题,因为将在用户的计算机上制作两个不同的cookie(包含两个不同的会话ID);每个域名一个。

答案 1 :(得分:5)

使用 session_set_cookie_params 更改会话Cookie的路径(即不使用/,但/ path1,/ path2等),即使他们使用相同的域。

http://www.php.net/manual/en/function.session-set-cookie-params.php

答案 2 :(得分:0)

不,你不会。会话数据存储在服务器上,但对于该服务器上的每个域都是独立的。

话虽这么说,你可以在$ _SESSION变量中“命名”你的两个应用程序会话数据。例如,“yourdomain.com/app1”会存储所有数据,例如$_SESSION['app1']['whatever'] = 'something';和“yourdomain.com/app2/会使用$_SESSION['app2']['whatever'] = 'something else';

这可以解决您的碰撞问题,但您必须确保代码中没有任何地方正在编写/读取错误的“命名空间”。此外,“app1”将能够读取“app2”的数据,反之亦然。

答案 3 :(得分:0)

http://php.net/manual/en/ref.session.php
更具体地说 http://www.php.net/manual/en/function.session-save-path.php

您可以使用session-save-path告诉PHP保存会话文件的位置。