gpt4 book ai didi

php - 无法通过密码验证接收 mysqli 记录

转载 作者:行者123 更新时间:2023-11-29 02:17:47 27 4
gpt4 key购买 nike

我刚开始使用 php,但我并不是很擅长。我需要在我的用户密码和用户名通过后验证我想与该用户 user_id 开始 session 。但是每次我尝试回显 user_id 时,我什么也得不到。希望有人可以帮助我。是我的代码:

<?php
require_once "config.php";
$username = $_POST['username'];
$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_DEFAULT);
if (strlen($username) > 0 && strlen($hash) > 0){
$query = "SELECT user_id FROM keep_user WHERE username = '$username' AND password = '$hash'";
$result = mysqli_query($conn , $query);
if($conn->query($query) == TRUE){
if(password_verify($password, $hash)){
session_start();
$_SESSION['user_id'] = $user_id;
echo $user_id;
echo "succes";
}else{
echo "error-1".$conn->error;
}
}else{
echo "error-2".$conn->error;
exit;
}
}else{
echo "error".$conn->error;
exit;
}
?>

它确实回显成功,所以我猜那部分很好,但为什么无法检索 user_id?

最佳答案

问题不在于 password_verify 函数。 mysqli_query 有问题,因为您执行了两次查询

 $result = mysqli_query($conn , $query);// first time
if($conn->query($query) == TRUE){// second time

只需注释或删除 $result = mysqli_query($conn , $query);//第一次

要获取 user id 表单查询,您需要将其获取为

if ($result = $conn->query($query)) {
/* fetch associative array */
$row = $result->fetch_assoc() ;
$user_id=$row["user_id"];
$_SESSION['user_id'] = $user_id;

}

session_start(); 位于页面顶部。

您的脚本已针对 sql 注入(inject)打开阅读 How can I prevent SQL injection in PHP?为了防止它

关于php - 无法通过密码验证接收 mysqli 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838421/

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