gpt4 book ai didi

PHP/MYSQL - 只能显示行中的一个元素,可能是问题?

转载 作者:行者123 更新时间:2023-11-29 05:07:21 24 4
gpt4 key购买 nike

我正在尝试用 PHP/MySQLi 构建登录验证系统。 _POST 数据由 AJAX 请求/jQuery 发送,但我已尽可能简化代码,让您即使没有不必要的数据也能模拟查询。为了简化

,我还省略了字符串验证器( FILTER_SANITIZE_STRING 等)

代码(简化)如下所示:

 $email = "mymail@mail.com";
$haslo = "averyhardpassword12345";

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$output = json_encode(array('type'=>'error', 'text' => 'Email address is not valid.'));
die($output);
}
if(strlen($haslo)<3 || strlen($haslo)>20){
$output = json_encode(array('type'=>'error', 'text' => 'Password must have between 3 and 20 characters.'));
die($output);
}

$mysqli = new mysqli("localhost", "myDbUsername", "myDbPW", "myDbName");

$usercheckquery = "SELECT * FROM users WHERE email='$email'";
$result = $mysqli->query($usercheckquery);
while($row = mysqli_fetch_assoc($result))
$emailbaza = $row['email'];
$haslobaza = $row['haslo'];
echo $haslobaza;
echo $emailbaza;
if (password_verify($haslo, $haslobaza) && $email == $emailbaza && !empty($data)) {
$output = json_encode(array('type'=>'message', 'text' => 'Zalogowano...'));
die($output);
} else {
$output = json_encode(array('type'=>'error', 'text' => 'Podany email lub hasło są nieprawidłowe.'));
die($output);
}

问题是——我没法找出这段代码有什么问题。我的最终 if 语句永远不会返回 true,而且我发现我可以 echo $row['email'],但是当我echo $row['haslo'] 它什么都不返回。

希望有人能告诉我我在哪里犯了错误。

编辑:

哦,haslo 保存在数据库中的 haslo 列中,是通过 password_hash($haslo, PASSWORD_BCRYPT); 生成的。 Haslo 列是 varchar(255)

最佳答案

您的 while 循环需要大括号来包含您对 $row 的所有用法

否则 $row 最终会返回 null 而 $haslobaza 也将为 null(此时会抛出索引错误)

while($row = mysqli_fetch_assoc($result))
{
$emailbaza = $row['email'];
$haslobaza = $row['haslo'];
}

关于PHP/MYSQL - 只能显示行中的一个元素,可能是问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45522391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com