我放弃了,这个php代码仍然有问题。我将在数据库中以密码收到电子邮件。 你能解决这个吗?请帮助我
`$ password =“”; $ email =“”; $ valid = 0;
if (isset($_POST['email'])){
$email = $_POST['email'];
}
if (isset($_POST['password'])){
$password = md5($_POST['password']);
}
$con = mysqli_connect("localhost", "root","", "user");
$result = mysqli_query($con, "SELECT email,password FROM user");
if (mysqli_connect_errno()){
echo "Failed: ". mysqli_connect_error();
}
while ($row = mysqli_fetch_row($result)){
if ($row[3] == $email && $row[5] == $password){
$valid = 1;
if(isset($_POST['remember'])){
setcookie('Home', "true", time()+(30*86400));
}
}
}
if ($valid != 1){
echo "<script>window.alert('email atau password salah!')</script>";
}else {
echo "<script>window.alert(\"Login success!\")</script>";
//header('Location:Home.html');
}
mysqli_close($con);
?>`
答案 0 :(得分:1)
基于“ 我将在数据库中获取电子邮件的密码”,听起来mysqli_fetch_row
正在返回电子邮件作为结果行中的第六个元素(即$row[5]
)。
第一件事:留意@Jay Blanchard的建议非常重要“ 永远不要存储纯文本密码! ”实现{{3} },然后插入password_hash()
。
您是否考虑过使用password_verify
?这将返回一个关联数组,因此可以通过名称而不是相对顺序来访问列。
if子句示例为:
if ($row['email'] == $email && password_verify($password, $row['password']))
对人类来说要容易得多。