How to kill a/all php sessions?

后端 未结 9 1234
暖寄归人
暖寄归人 2020-11-28 10:07

I have a very basic php session login script. I want to force logout of a certain user or force logout of all users.

How can I read all sessions made to my website,

9条回答
  •  青春惊慌失措
    2020-11-28 10:34

    Clearling all sessions at once would require first knowing which session.save_handler is being used to store sessions and locating the session.save_path in order to delete all sessions. For deleting the current session only, refer to the documentation for session_destroy().

    Here are some common examples for deleting all sessions using standard file and memcached save handlers:

    Using file save handler

    foreach(glob(ini_get("session.save_path") . "/*") as $sessionFile) {
        unlink($sessionFile);
    }
    

    Using memcached save handler

    $memcached = new Memcached;
    $memcached->addServers($listOfYourMemcachedSesssionServers);
    
    // Memcached session keys are prefixed with "memc.sess.key." by default
    $sessionKeys = preg_grep("@^memc\.sess\.key\.@", $memcached->getAllKeys());
    $memcached->deleteMulti($sessionKeys);
    

    Of course, you might want to consider only doing this out of band from your normal HTTP client requests, since cleaning up large session storage may take some time and have inadvertent side effects in a normal request life cycle.

提交回复
热议问题