如何在不同的计算机上访问php会​​话

时间:2011-04-22 06:50:53

标签: php session localhost wampserver

我正在做一些关于在php中使用会话的练习。我这样设置:

$_SESSION['log_users'][] = array(array('Username'=>$username))

我试着尝试一下。并且发现当我使用不同的ip访问它时,正在生成的会话是不同的。使用相同的浏览器时,这是firefox。

这是我做的:

  1. 设置我的路由器,以便其他人可以通过使用我的外部IP地址访问我正在进行的练习。
  2. 然后我打开了练习的localhost版本:

    http://localhost/exercise/sessions.php

  3. 然后使用外部IP地址:

    http://201.xxx.xxx/exercise/sessions.php

  4. 然后我在每个浏览器选项卡上填充了会话数组。并发现这两者中的每一个都保持不同版本的会话。使用print_r($_SESSION['log_users'])

  5. 找到

    这真的是它应该表现的方式吗?有什么我可以这样做,只有一个版本的会话?我目前正在使用Wampserver 2.1

3 个答案:

答案 0 :(得分:4)

会话存储在服务器端,并在客户端创建会话cookie,以识别保存当前会话ID的当前浏览器会话。

会话cookie基于您用于访问网站的域存储。

由于您使用的是不同的域名,因此localhostip而另一个域名为localhost,这将创建两个不同的会话。

当您通过localhost域访问网页时。它将在域ip上创建会话和存储会话cookie。如果您访问同一域系统上的另一个页面,将检查会话cookie是否存在,它将恢复旧会话,并且不会创建新会话。

如果您通过ip访问同一时间,则此ip尚未存储会话cookie,但系统会假定此用户没有活动会话,并将启动新会话和会话基于此{{1}}存储Cookie。

这是会话的工作方式。

希望这有帮助。

答案 1 :(得分:2)

会话cookie绑定到域名。首次访问时,它将绑定到localhost域。

如果您将浏览器指向201.xx.xx.xx地址,则域名将不再匹配。并且您的浏览器不会再次发送此cookie。这就是生成新会话的原因。即使它实际上是同一台服务器。

答案 2 :(得分:0)

在您的情况下,只有$ _SESSION对您没有帮助。你应该尝试使用$ _SESSION和数据库。

您应该同步会话和数据库会话记录。

系统将检查您在数据库中的条目。如果您有可用的条目,那么它将直接为您的网站生成会话。这样,只有一个登录可用于所有浏览器。