【发布时间】:2019-06-26 14:59:04
【问题描述】:
您好, 有一个基本的注册/登录表单,只是使用 password_hash 将哈希存储在数据库中。检查密码登录有问题
尽量不要煮过头 :)
<?php
session_start();
require_once 'conn.php';
if(ISSET($_POST['login'])){
if($_POST['user_name'] != "" || $_POST['password'] != ""){
$username = $_POST['user_name'];
$password = $_POST['password'];
$sql = "SELECT * FROM `users` WHERE `user_name`=? AND `password`=? ";
$query = $conn->prepare($sql);
$query->execute(array($username,$password));
$row = $query->rowCount();
$fetch = $query->fetch();
if($row > 0) {
$_SESSION['user'] = $fetch['user_id'];
header("location: home.php");
} else{
echo "<script>alert('Detalii Incorecte'); window.location='login.php'</script>";
}
}else{
"<script>alert('Completeaza tot!'); window.location='login.php'</script>";
}
}
?>
好的,我在这里错了 当我存储纯文本时,这非常有效...... 当我应用 pasword_hash 时,我很难“重写”我的代码以匹配散列密码列
【问题讨论】:
-
A 500 错误是一种通用错误消息,几乎涵盖了脚本可能出错的每一件事。检查您的服务器错误日志以找出确切的错误消息。
-
我在这里看到的明显错误是
$hashed在你尝试使用之前没有创建。 -
另外,
$row是一个数字,在查询中应引用电子邮件。 -
为什么不绑定邮箱就准备报表?
-
哇.. tnx 的回复.. 但太多的空白让我无法回答每个人 :D 。无论如何,$hashed 应该在注册文件中,对吧?我有密码。关于 $row,我认为它会检查包含的任何值。欢迎任何解释。我对php.net/manual/en/function.password-verify.php 进行了攻击,但老实说,我不明白......但是。谢谢
标签: php