MD5哈希:忘记密码页面

时间:2017-09-29 03:18:22

标签: php mysql hash passwords md5

我目前正在为我的大学项目工作忘记密码页面。这是我使用的代码:

  <?php
  $db = new mysqli('localhost', 'root', '', 'ilearn');
  if(isset($_POST['submit'])):
    extract($_POST);
    if($old_password!="" && $password!="" && $confirm_pwd!="") :
     $user_id = '1';
     $old_pwd=md5(mysqli_real_escape_string($db,$_POST['old_password']));
     $pwd=md5(mysqli_real_escape_string($db,$_POST['password']));
     $c_pwd=md5(mysqli_real_escape_string($db,$_POST['confirm_pwd']));
     if($pwd == $c_pwd) :
        if($pwd!=$old_pwd) :
          $db_check=$db->query("SELECT * FROM `singup` WHERE `id`='$user_id' AND `password` ='$old_pwd'");
          $count=mysqli_num_rows($db_check);
          if($count==1) :
              $fetch=$db->query("UPDATE `singup` SET `password` = '$pwd' WHERE `id`='$user_id'");
              $old_password=''; $password =''; $confirm_pwd = '';
              $msg_sucess = "Kata Laluan berjaya ditukar";
           else:
             $error = "Kata laluan yang anda masukkan tidak tepat";
           endif;
         else :
           $error = "Kata laluan dan kata laluan baru adalah sama. Cuba lagi!";
         endif;
     else:
       $error = "Kata laluan baru tidak sama. Semak semula!";
     endif;
    else :
      $error = "Sila isikan semua ruang yang tersedia";
    endif;   
  endif;
 ?> 

Evrything工作正常。我可以更改密码。但后来,我意识到如果数据库中的密码是md5散列形式而不是普通字符串,我只能更改密码。

例如:如果数据库中的密码是25f9e794323b453885f5181f1b624d0b,我可以更改密码。但如果数据库中的密码为123456789,则无法更改密码。

- 我计划将用户密码设置为其身份证号码,以便他们可以在以后第一次登录该页面时更改密码。

这里的问题是,有什么方法可以让页面在数据库中读取密码作为普通字符串,并且只有在用户更改密码时才以md5哈希格式存储新密码?或者我必须手动将每个用户密码转换为md5才能上传到mysql数据库?或者你们认为最好的其他任何方式?

我真的需要你的帮助,因为我还是新手,还在学习。感谢您的帮助,并提前感谢您。

0 个答案:

没有答案