Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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_Passwords_Bcrypt - Fatal编程技术网

Php 注册表和登录名中的哈希密码不匹配

Php 注册表和登录名中的哈希密码不匹配,php,mysql,passwords,bcrypt,Php,Mysql,Passwords,Bcrypt,我有一个注册表单,允许用户输入密码,我使用crypt散列这个密码 在register表单中,它可以工作,并且密码在数据库中是散列的和安全的,但是当涉及到登录时,密码不匹配,系统不登录 有人能帮我吗 在register.php中哈希密码 在login.php中哈希密码 它不起作用,因为在第一个代码段中,您将$hash保存到members.password中 在第二个代码段中,检查输入的真实密码。您需要先将其修改为哈希: $bcrypt = new Bcrypt(4); $hash = $bcryp

我有一个注册表单,允许用户输入密码,我使用crypt散列这个密码

在register表单中,它可以工作,并且密码在数据库中是散列的和安全的,但是当涉及到登录时,密码不匹配,系统不登录

有人能帮我吗

在register.php中哈希密码 在login.php中哈希密码
它不起作用,因为在第一个代码段中,您将$hash保存到members.password中

在第二个代码段中,检查输入的真实密码。您需要先将其修改为哈希:

$bcrypt = new Bcrypt(4);
$hash = $bcrypt->hash($pass);

$query = sprintf("SELECT user_id, email_address, first_name, user_name 
FROM members
WHERE email_address='%s'AND password= '%s'",
        mysql_real_escape_string($email),
        mysql_real_escape_string(hash));

$sql=mysql_query( $query) or die("error in members table");

$login_check = mysql_num_rows($sql);

if($login_check > 0)
{
    ...

此外,您的代码易受SQL注入攻击,并且使用了不推荐的mysql_*函数。

不要多次问同一个问题。您已经得到了答案,请尝试理解并应用它们!@deceze问题是,我认为它是对的,但它不是,我不知道如何修复,所以我来问问题以获得帮助并理解,因此代码变成这样:require_once('include/blowfish.php')$bcrypt=新的bcrypt(4)$哈希=$bcrypt->hash($pass)$query=sprintf(“从成员中选择用户id、电子邮件地址、名字、用户名,其中电子邮件地址='%s',密码='%s',mysql\u real\u escape\u字符串($email),mysql\u real\u escape\u字符串($hash))$sql=mysql_query($query)或die(“成员表中的错误”)$login\u check=mysql\u num\u行($sql);如果($login\u check>0){$row=mysql\u fetch\u array($sql);$row\u pass=$row['password'];如果($bcrypt->verify($hash,$row['password']){但这会产生另一个不同的散列
$sql=mysql_query( "SELECT user_id, email_address, first_name, user_name 
FROM members 
WHERE email_address='$email'AND password= '$pass' 
LIMIT 1") or die("error in members table");
$login_check = mysql_num_rows($sql);

  if($login_check > 0)
  {
      $row = mysql_fetch_array($sql);
      $row_pass = $row['password'];
      //***********for hashing password***************************//
require_once('include/blowfish.php');
 $bcrypt = new Bcrypt(4);
 if($bcrypt->verify($pass, $row_pass))
  {

          $id = $row['user_id'];
          $_SESSION['user_id'] = $id;

          $firstname = $row['first_name'];
          $_SESSION['first_name']= $firstname;

          $email = $row['email_address'];
          $_SESSION['email_address']= $email;

          $username = $row['user_name'];
          $_SESSION['user_name']= $username;


          mysql_query("UPDATE members SET last_log_date=now() 
WHERE user_id='$id'");

        //$message = "correct email and passworddd!!";  
          header("Location: profile.php");
         // exit();   
  }//close if 
 }//close if 
  else
  {
      $message = "incorrect Email or Password!!";
      //exit();
  }
$bcrypt = new Bcrypt(4);
$hash = $bcrypt->hash($pass);

$query = sprintf("SELECT user_id, email_address, first_name, user_name 
FROM members
WHERE email_address='%s'AND password= '%s'",
        mysql_real_escape_string($email),
        mysql_real_escape_string(hash));

$sql=mysql_query( $query) or die("error in members table");

$login_check = mysql_num_rows($sql);

if($login_check > 0)
{
    ...