php会话未设置

时间:2011-09-08 20:54:06

标签: php

是否可以取消设置特定用户会话(被禁止访问该网站的用户)? 每个会话都包含用户的用户名。

或者是在数据库中编写会话并检查用户是否从该记录中删除的唯一方法?

感谢您的任何建议。

3 个答案:

答案 0 :(得分:1)

PHP不会跟踪已发出的会话ID - 当一个会话cookie进入请求并调用session_start()时,它会在会话保存目录中查找以该会话ID命名的文件(sess_XXXX)并加载它。

除非您的登录系统记录用户当前的会话ID,否则您必须扫描包含用户会话的文件的保存目录,并删除该文件。幸运的是,它可以通过以下简单的方式完成:

$session_dir = session_save_path();
$out = exec("rm -f `grep -l $username $session_dir/*`");

你可能想要一些更安全/更安全的东西,但这是它的基础。

答案 1 :(得分:0)

只需从数据库中删除用户。

我假设您正在检查登录凭据。


您可以为会话添加超时,如下所示:

define('SESSION_EXPIRE', 3600 * 5); //5 hours
if (!isset($_SESSION['CREATED'])) {
    $_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > SESSION_EXPIRE) {
    session_regenerate_id(true);    // change session ID for the current session an invalidate old session ID
    session_destroy();
    session_start();
    $_SESSION['CREATED'] = time();  // update creation time
}

答案 2 :(得分:0)

我认为最好的方法是允许用户发表评论,让PHP读取您的数据库并检查个人是否具有发布权限。如果没有返回错误。

你可以做的另一件事,就是Facebook,每隔几分钟就会有一个AJAX调用检查一个PHP文件。 PHP文件只返回用户是登录还是关闭,如果他们已注销,Javascript会将其重定向到页面外。