我目前正在为我的大学项目工作忘记密码页面。这是我使用的代码:
<?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数据库?或者你们认为最好的其他任何方式?
我真的需要你的帮助,因为我还是新手,还在学习。感谢您的帮助,并提前感谢您。