检查用户登录和最小化数据库查询的最佳方法?

时间:2011-06-09 08:56:22

标签: php mysql

我想知道如何让用户登录,然后检查他的cookie是否可以继续,cookie有他的用户ID和加密密码。有没有办法检查每一页?每次不使用mysql?

谢谢。

编辑:会话已用

3 个答案:

答案 0 :(得分:3)

为什么不使用PHP sessions

答案 1 :(得分:1)

  1. 首先获取用户名密码,验证无论如何。
  2. 检查数据库中是否存在用户名和密码。
  3. 如果用户名/密码有效,则在会话中存储一个标志
  4. 在每个新页面上检查标志为真
  5. 代码在这里......

    // 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');
    }
    

答案 2 :(得分:0)

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