我们何时何地使用session_id()

时间:2015-07-19 22:05:30

标签: php session sessionid

我无法理解下面的代码,而且在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()在哪里用?它的用途是什么?! 先感谢您 !

3 个答案:

答案 0 :(得分:2)

在开始会话之前设置会话ID可让您手动“恢复”会话,可以这么说。如果你session_start()没有设置ID,并且前一个会话已经过期,它将生成一个新的ID并开始一个全新的会话。

来自PHP文档:

  

如果指定了id,它将替换当前的会话ID。为此,需要在session_start()之前调用session_id()。

详情请见:http://php.net/manual/en/function.session-id.php

答案 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将存储在数据库中。所以我们可以找出有多少用户在线。