我刚刚开始使用php,但我不太擅长它,我需要验证我的用户的密码和用户名后,他们传递,我想开始与那个用户的user_id会话。但每次我试图回音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呢?
发布于 2016-04-25 10:53:04
问题不在于password_verify函数。mysqli_query存在问题,因为您执行了两次查询
$result = mysqli_query($conn , $query);// first time
if($conn->query($query) == TRUE){// second time只需注释或删除$result = mysqli_query($conn , $query);// first time
要获取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注入读取How can I prevent SQL injection in PHP?以防止它。
https://stackoverflow.com/questions/36838421
复制相似问题