首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法接收带有密码验证的mysqli记录

无法接收带有密码验证的mysqli记录
EN

Stack Overflow用户
提问于 2016-04-25 10:48:43
回答 1查看 78关注 0票数 2

我刚刚开始使用php,但我不太擅长它,我需要验证我的用户的密码和用户名后,他们传递,我想开始与那个用户的user_id会话。但每次我试图回音user_id,我就什么也得不到。希望有人能帮我这个忙。是我的密码:

代码语言:javascript
复制
<?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呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-25 10:53:04

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

代码语言:javascript
复制
 $result = mysqli_query($conn , $query);// first time
  if($conn->query($query) == TRUE){// second time

只需注释或删除$result = mysqli_query($conn , $query);// first time

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

代码语言:javascript
复制
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?以防止它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36838421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档