入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

php使用session来控制仅有一个账号登录应用

创建时间:2017-07-28 投稿人: 浏览次数:145

首先使用一个浏览器来访问应用的一个页面 multex_session1.php

要记录当前账号所使用的sessionId,使用session_id()获取到当前的sessionId

然后用另一个浏览器和同一个账号访问另一个页面 multex_session2.php

在该页面中会找到该账号之前使用的sessionId,然后清除该sessionId保存的所有内容,然后重新写入session值,并将新的sessionId写入redis中

清除旧的sessionId使用的方法有 session_start()       session_unset()   session_write_close()


具体代码:multex_session1.php

<?php
    
    $redis = new Redis();
    $redis->connect("192.168.1.102",6379);
    session_start();
    $curSessionId = session_id();
    echo "sessionId=".$curSessionId."<br/>";
    $userSession = $redis->get("online:1");
    echo "userSession:{$userSession},user_id:{$_SESSION["user_id"]},user_name:{$_SESSION["user_name"]}";

    $_SESSION["user_id"] = 1;
    $_SESSION["user_name"] = "areyouok";

    $redis->set("online:1", $curSessionId);
    $redis->expire("online:1", 1800);
    session_write_close();

multex_session2.php

<?php
    session_start();
    $curSessionId = session_id();
    echo "sessionId=".$curSessionId."<br/>";
    session_write_close();

    $redis = new Redis();
    $redis->connect("192.168.1.102",6379);
    $oldSession = $redis->get("online:1");
    if (!empty($oldSession) && !empty($curSessionId) && $curSessionId != $oldSession) {
        echo "oldSession not equal new sessionId<br/>";
        $redis->set("online:1", $curSessionId);
        $redis->expire("online:1", 1800);

        session_id($oldSession);
        session_start();
        if (ini_get("session.use_cookies")) {
            $params = session_get_cookie_params();
            echo "arrive here,".json_encode($params)."<br/>";
            setcookie(session_name(), "", time() - 42000,
                $params["path"], $params["domain"],
                $params["secure"], $params["httponly"]
            );
        }
        unset($_SESSION["user_id"]);
        unset($_SESSION["user_name"]);
        session_unset();
        session_write_close();
    
        session_id($curSessionId);
        session_start();    
        echo "oldSession:{$oldSession},user_id:{$_SESSION["user_id"]},user_name:{$_SESSION["user_name"]}";
        $_SESSION["user_id"] = 1;
        $_SESSION["user_name"] = "areyouok";    
        session_write_close();
    }


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。