网页如何知道会话是否已设置?

时间:2012-06-18 04:15:16

标签: php session

  

可能重复:
  Where are $_SESSION variables stored?

当我们使用会话时,我们需要在每个页面中启动会话。现在假设我已将会话设置为1.php现在重定向到2.php,在2.php页面中我再次开始会话1.php2.php之间没有任何链接。 2.php不知道session id的{​​{1}}是什么。

现在我的问题是这个1.php如何获得2.php session id开始的1.php。存储此会话的位置?它是如何工作的?

这里我们没有将任何参数从1.php传递到2.php,因为Frederick Marcoux说SESSION_START()是由2.php忽略的。那么2.php将如何知道会话已经在运行。

如果它在服务器端,那么在多个会话的情况下,那么它将如何识别哪个会话是针对哪个请求的呢?

3 个答案:

答案 0 :(得分:1)

会话基于Cookie。当您在一个页面上启动会话时,它将获得一个ID。在您创建session_destroy()并使用session_start()开始新会话之前,此ID将相同。

为什么会那样?

因为多个页面可能会使用相同的会话ID进行某些用户记录或跟踪。

`2.php`

上的`session_start()`是什么?

服务器完全忽略了它。如果你检查你的PHP日志,你会看到类似的东西:

SESSION_START() IGNORED. A SESSION HAS BEEN ALREADY STARTED.

3个月前我有同样的问题,但不在本网站上。

答案 1 :(得分:1)

以这种方式思考......

当有人访问您的1.php页面时,页面顶部的session_start()会在您的服务器(托管)上启动操作,并生成唯一的会话ID。

然后它附加到服务器上的每个页面(url)(在同一个域下)(即:2.php或3.php),如果这些页面有session_start()函数,则SID可用于脚本(在这些页面上),可以访问和验证。

如果页面3.php上的SID与他/她访问页面1.php时由同一用户创建/生成的SID匹配,那么您知道该页面正由同一个人访问并执行其他操作对于直接访问3.pp页面并且没有获得必要SID的访问者,你不会这样做。

SID从服务器传递到您的浏览器并保持为cookie,直到它被清除或过期。

......我把它稀释到了很多?:)

答案 2 :(得分:0)

尝试使用此session_save_path()方法了解您的网络服务器上存储了sessions的内容。

查看session.save_path中的php.ini