当我们使用会话时,我们需要在每个页面中启动会话。现在假设我已将会话设置为1.php
现在重定向到2.php
,在2.php页面中我再次开始会话1.php
和2.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将如何知道会话已经在运行。
如果它在服务器端,那么在多个会话的情况下,那么它将如何识别哪个会话是针对哪个请求的呢?
答案 0 :(得分:1)
会话基于Cookie。当您在一个页面上启动会话时,它将获得一个ID。在您创建session_destroy()
并使用session_start()
开始新会话之前,此ID将相同。
因为多个页面可能会使用相同的会话ID进行某些用户记录或跟踪。
服务器完全忽略了它。如果你检查你的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
。