为什么我的登录方法失败?

时间:2017-09-03 21:48:25

标签: php android

  1. createUser方法有效,但loginUser方法不断返回true无效的登录参数。它将用户注册到数据库中,但无法将其登录:

    {"error":true,"message":"Invalid login parameters!"}
    

    我正在使用Postman

    测试我的代码

    这些是方法:

    public function createUser($username,$pass,$email){
        if($this->isUserExist($username,$email)){
            return 0;
        }else{
            $password = md5($pass);
            $stmt = $this->con->prepare("INSERT INTO `users`(`id`,`username`, `password`, `email`) VALUES (null, ?, ?, ?);");
                                        $stmt->bind_param("sss",$username,$password,$email);
    
            if($stmt->execute()){
                return 1;
            }else{
                return 2;
            }
        }
    }
    
    public function userLogin($username, $pass){
        $password = md5($pass);
        $stmt = $this->con->prepare("SELECT `id` FROM `users` WHERE `username` = ? AND `password` = ?");
        $stmt->bind_param("ss", $username,$password);
        $stmt->execute();
        //$stmt->store_result();
        return $stmt->num_rows > 0;
    }
    
    public function getUserByUsername($username){
        $stmt = $this->con->prepare("SELECT * FROM `users` WHERE `username` = ?");
        $stmt->bind_param("s",$username);
        $stmt->execute();
        return $stmt->get_result()->mysqli_fetch_assoc();
    }
    
    private function isUserExist($username, $email){
       $stmt = $this->con->prepare("SELECT `id` FROM `users` WHERE `username` = ? OR `email` = ?");
       $stmt->bind_param("ss", $username,$email);
       $stmt->execute();
       $stmt->store_result();
       return $stmt->num_rows > 0;
    }
    
  2. 这是我调用方法的地方:

    require_once '../includes/DbOperations.php';
    $response = array();
    
    if($_SERVER['REQUEST_METHOD']=='POST'){
        if(isset($_POST['username']) and isset($_POST['password'])){
            $db = new DbOperations();
            if($db->userLogin($_POST['username'],$_POST['password'])){
            $user = $db->getUserByUsername($_POST['username']);
            $response['error'] = false;
            $response['id'] = $user['id'];
            $response['email'] = $user['email'];
            $response['username'] = $user['username'];
    
        }else{
            $response['error'] = true;
            $response['message'] = "Invalid login parameters!";
        }
    
        }else{
            $response['error'] = true;
            $response['message'] = "Required fields are missing!";
        }
    }
    
    echo json_encode($response);
    

0 个答案:

没有答案