我们何时何地使用 session_id()

when and where do we use session_id()

我看不懂下面的代码,我不知道什么时候我们在 session_start() 之前使用 session_id()

<?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() 在哪里使用?!它的用途是什么?! 先感谢您 !

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

来自 PHP 文档:

If id is specified, it will replace the current session id. session_id() needs to be called before session_start() for that purpose.

查看更多信息:http://php.net/manual/en/function.session-id.php

manual 是一个很好的起点。 session_id 不需要启动或管理会话。 PHP 如果您排除 session_id,浏览器(通过 cookie)通常会自动处理此问题。但是,您可以通过指定会话 ID 为每个最终用户维护多个会话。

终于明白了!我举两个例子:

<?php 
session_start();
session_id();
?>

结果 |stbug36ge9efg20cpdjnq83m50(会话 ID)

只要浏览器或选项卡关闭,会话就会被忽略,下次您进入该站点时,您可以管理两个操作的发生: 1. 使用之前的 session_id 开始新会话 2. 或者用一个新的 id 开始一个新的会话 像往常一样,动作 num.2 会发生,但如果你想让 num.1 发生,你必须在 session_start 之前嵌入 session_id 。看看下面的代码:

<?php
session_id("stbug36ge9efg20cpdjnq83m50");
session_start();

?>

我们在这里开始一个新的会话,使用之前的会话 ID。

Session_id()

的用法

您可以轻松编写一个在线访问者计数器 - 每次会话开始时(使用在线),它的 ID 将存储在数据库中。这样我们就可以知道有多少用户在线。