Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查用户登录和最小化数据库查询的最佳方法?_Php_Mysql - Fatal编程技术网

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

Php 检查用户登录和最小化数据库查询的最佳方法?,php,mysql,Php,Mysql,我想知道如何让用户登录,然后检查他的cookies是否可以继续,cookie有他的用户ID和加密密码。有没有办法在每一页都检查?没有每次都使用mysql 多谢各位 编辑:会话已使用为什么不使用?为什么不使用?您应该使用会话。这次会议是完全可行的。只需在会话中输入值,然后在每个页面上启动会话并检查会话。如果用户拥有该会话,则继续,否则请将其发送到登录页面,您应该使用该会话。这次会议是完全可行的。只需在会话中输入值,然后在每个页面上启动会话并检查会话。如果用户有会话,则继续,否则将其发送到登录页面

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

多谢各位


编辑:会话已使用

为什么不使用?

为什么不使用?

您应该使用会话。这次会议是完全可行的。只需在会话中输入值,然后在每个页面上启动会话并检查会话。如果用户拥有该会话,则继续,否则请将其发送到登录页面,您应该使用该会话。这次会议是完全可行的。只需在会话中输入值,然后在每个页面上启动会话并检查会话。如果用户有会话,则继续,否则将其发送到登录页面

  • 首先从中获取用户名密码,然后验证它
  • 检查数据库中是否存在用户名和密码
  • 如果用户名/密码有效,则在会话上存储一个标志
  • 在每个新页面上检查标志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');
    }
    
  • 首先从中获取用户名密码,然后验证它
  • 检查数据库中是否存在用户名和密码
  • 如果用户名/密码有效,则在会话上存储一个标志
  • 在每个新页面上检查标志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');
    }
    

    您不想将密码存储在cookie中,不管是否加密。您不需要使用MySQL检查会话值。会话值只能由代码设置。它们存储在服务器上,仅由cookie(会话id)标识。用户无法篡改会话值。您不想将密码存储在cookie中,不管是否加密。您不需要使用MySQL检查会话值。会话值只能由代码设置。它们存储在服务器上,仅由cookie(会话id)标识。用户无法篡改会话值。我实际使用会话,主要问题是使用mysqlAm实际使用会话检查值,主要问题是使用mysqlAm实际使用会话检查值,主要问题是使用mysql检查值…@Ronan Dejhero。亲爱的,我想你哪里做错了。当我们谈论会话时,在登录过程中,当我们验证用户时,我们只在会话中放置一次值。然后我们只需检查是否正在进行会话。我们不必再次查询表。我实际上在使用会话,主要问题是用mysql检查值…@Ronan Dejhero。亲爱的,我想你哪里做错了。当我们谈论会话时,在登录过程中,当我们验证用户时,我们只在会话中放置一次值。然后我们只需检查是否正在进行会话。我们不必再次查询表。您只需检查会话变量是否已设置。如果变量包含FALSE,则它将被接受为已登录。您仅检查会话变量是否已设置。如果变量包含FALSE,则它将被接受为已登录。