0

在应用程序的每个页面上,我都会检查用户是否已登录。我最近意识到我的脚本结构不合理并进行了一些更改。我想知道这种新方法是否为未登录的用户实现了正确的操作顺序。

<?php
ob_start();
session_start();

if ($_SESSION['loggedin'] !== true) {
    $_SESSION['messages'][] = '<li>User Not Logged In</li>';
    session_write_close();
    ob_end_clean();
    header('Location: login.php');
    exit;
}
else {
    // execute page
}
?>

在此脚本之前,该ob_start()调用位于登录检查部分下方,因此会导致重定向问题,因为它session_start()会产生自己的标头。

我还想知道脚本是否为登录检查提供足够的安全性。

4

1 回答 1

1

这部分代码是完整且安全的,但是为了提高安全性,您必须提及一些事情,您需要在将有价值的数据(如在会话中的“登录”中)之后使用session_regenerate_id重新生成会话 ID。

而且我认为最好将 IF 部分放在函数上并省略 else 它有助于您的代码更简单。并且您还可以删除以下行:

session_write_close();
ob_end_clean();
于 2013-06-29T20:27:06.483 回答