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;
}
这是我调用方法的地方:
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);