检查用户登录并最大限度地减少数据库查询的最佳方法


Best method to check user login and minimize database queries?

我如何让用户登录,然后检查他的cookie,看看它们是否可以继续;cookie具有他的用户ID和加密的密码。我可以每一页都查一下吗?每次都不使用MySQL?

编辑:会话已使用

为什么不使用PHP会话?

  1. 首先,获取用户名和密码并进行验证
  2. 请验证数据库中是否存在用户名和密码
  3. 如果用户名/密码有效,请在会话上设置标志
  4. 确认在每个新页面上将标志设置为true

代码在这里。。。

// start the session //
session_start();
// create one flag //
$_SESSION['logged'] = FALSE;
// username, password from form submit //
$username = $_POST['username'];
$password = sha1($_POST['password']);
// check once in database //
$con = new mysqli('localhost', 'my_username', 'my_password', 'my_database');
$sql = "SELECT * FROM `tbl_users` AS `u` WHERE `u`.`username` = ? AND `u`.`password` = ?";
$result = $con->query($sql, array($username, $password));
// if user existed return one row //
if($result->num_rows() == 1) {
    $_SESSION['logged'] = TRUE;
    $_SESSION['username'] = $username;
} else {
    echo "invalid username or password!!";
}

对于所有其他新页面,请检查此

if(isset($_SESSION['logged']) == TRUE) {
    echo 'You are logged' . $_SESSION['username'];
} else {
    header('location:login_form.php');
}

您应该使用会话。会话对此非常可行。只需将值放入会话中,然后在每个页面上启动会话并检查会话。如果用户有会话,则继续进行,否则将他发送到登录页面