首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP登录表单中对用户进行散列和验证

在PHP登录表单中对用户进行散列和验证
EN

Stack Overflow用户
提问于 2022-02-23 18:16:36
回答 1查看 294关注 0票数 0

我创建了一个简单的登录/注册表单。注册的信息存储在.txt文件中(这只是为了教育目的,而不是实际使用)。

在将其放入the.txt文件之前,我正在对已注册的输入进行散列。当用户登录时,我希望使用password_verify检查哈希。如果哈希与登录输入相同,则将验证用户,因此应该登录。

对于当前代码,即使登录与存储在the.txt文件中的内容相同,它也直接跳到}and语句,该语句指出用户名和/或密码是不正确的。

编辑:如果我输入用户名为123,密码为123,则文本文件显示:

$2y$10$VeZB8AZmL9lAfRQ1qKBxEug8A3RrPxM9JlOAo9prw/UOWU4.XpdqC,$2y$10$kU5AvH4hTgE1cvHmTItIU.pnTsbYvKH9bLl3Bxfy4ig7QZKdVVV46,

我对PHP和编程非常熟悉,任何帮助都很感激:)

代码语言:javascript
复制
    // GETS FORM INPUT  
  if(isset($_POST['username']) && $_POST['password']){
    $username = $_POST['username'];
    $password = $_POST['password'];
   
    $hashName = password_hash($username,PASSWORD_DEFAULT);
    $hashPass = password_hash($password, PASSWORD_DEFAULT);
  }

// LOGIN  
   if($_POST['btn'] == 'Login'){
      userExist($username, $password, $hashName, $hashPass);     
      }

// REGISTER
    else if(($_POST['btn'] == 'Register')){
      $fh = fopen("logininfo.txt", 'a') or die("Unable to open file");

      $login = <<<_END
        $hashName,$hashPass,
        _END;
        fwrite($fh, $login) or die("Unable to write to file");
        fclose($fh);
    }

//VERIFIES USER
    function userExist($username, $password, $hashName, $hashPass){

      $accounts = file_get_contents('logininfo.txt');
      $accArray = explode(',', $accounts);

      print_r($accArray);
      if((password_verify($hashName, $accArray[0])) && (password_verify($hashPass, $accArray[1]))){
        header('Location: index.php');
      }else{
        echo "username and/or password is incorrect";
      }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-23 18:29:23

这里的哈希太多了。

注册用户时,可以存储未散列用户名和使用password_hash()进行散列的密码。

登录时使用未散列用户名恢复该用户的哈希密码,然后使用password_verify()将用户提供的未散列密码与存储的哈希密码进行比较。

password_hash()向密码中添加一个随机盐,并将salt和生成的哈希存储在生成的字符串中。即使您使用相同的密码散列两次,每次也会得到不同的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71242168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档