我无法理解下面的代码,而且在session_id()
之前我们不知道何时使用session_start()
。
<?php
if($_GET){
//defining the session_id() before session_start() is the secret
session_id($_GET['session_id']);
session_start();
echo "Data: " . $_SESSION['theVar'];
//use your data before below commands
session_destroy();
session_commit();
}else{
//common session statement goes here
session_start();
$session_id=session_id();
$_SESSION['theVar'] = "theData";
echo "your.php?session_id=" . $session_id;
}
?>
我希望你解释一下!不只是复制php.net的描述!
另一方面,session_id()在哪里用?它的用途是什么?!
先感谢您 !
答案 0 :(得分:2)
在开始会话之前设置会话ID可让您手动“恢复”会话,可以这么说。如果你session_start()没有设置ID,并且前一个会话已经过期,它将生成一个新的ID并开始一个全新的会话。
来自PHP文档:
如果指定了id,它将替换当前的会话ID。为此,需要在session_start()之前调用session_id()。
答案 1 :(得分:1)
manual 是一个很好的起点。 session_id不是启动或管理会话所必需的。如果排除session_id,PHP和浏览器(通过cookie)通常会自动处理。但是,您可以通过指定会话ID为每个最终用户维护多个会话。
答案 2 :(得分:1)
终于明白了!我举两个例子:
<?php
session_start();
session_id();
?>
结果 | stbug36ge9efg20cpdjnq83m50(会话ID)
当浏览器或标签关闭时,会话将被省略,下次进入网站时,您可以管理两个操作: 1.使用之前的session_id开始一个新会话 2.或者以新的身份开始新的会话 像往常一样,动作num.2将会发生,但如果你想要num.1发生,你必须在session_start之前嵌入session_id。看下面的代码:
<?php
session_id("stbug36ge9efg20cpdjnq83m50");
session_start();
?>
在这里我们开始一个新的会话,其中包含上一个会话ID。
和
使用Session_id()
您可以轻松编写在线访问者计数器 - 每次会话开始(使用在线),其ID将存储在数据库中。所以我们可以找出有多少用户在线。