我已经创建了两个用于登录和API的PHP文件。在第一个文件中,我创建了一个函数来检查注册表中给定的凭据,如果匹配则将状态设置为1。设置为1发送登录成功。但是即使我输入了错误的密码,它也会成功返回登录。查询或条件有关吗?
***好吧,我在这里通过更改== s解决了答案,这是为React本机应用程序编写的。在我将那些==添加到API文件之前,登录工作良好,现在无法正常登录。但是当我用邮递员尝试api时,它将返回真实结果。如果我输入了错误的密码,它将返回405,如果输入了正确的密码,则返回200。但是在应用程序中的登录无法正常工作。当我删除更改时,它会起作用。
<?php
function Database()
{
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "chatapp";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}
function login($connection, $phoneNo, $password){
$newmessag = "SELECT * FROM registration WHERE phone_number='$phoneNo' AND password ='$password'";
$result = $connection->query( $newmessag);
$count = $result->num_rows;
if($count> 0)
{
$status =1;
}else
{
$status =0;
}
return $status;
}
?>
API文件
<?php
include('new.php');
header("Content-Type:application/json");
$method = $_SERVER['REQUEST_METHOD'];
$myJson= file_get_contents('php://input');
$myData = json_decode($myJson);
if($method== 'POST')
{
if(isset($myData))
{
$phoneNo = $myData->phone_number;
$password = $myData->password;
if(isset($phoneNo) && isset($password))
{
$status = login(Database(), $phoneNo, $password);
if($status == 1)
{
deliver_response(200, "login sucess", $phoneNo);
}else if ($status == 0)
{
deliver_response(405, "login failed", $phoneNo);
}
}
}else{
deliver_response(403, "Forbidden",$myData);
}
}
else
{
deliver_response(403, "Forbidden", $myData);
}
function deliver_response($status, $statusMessage, $data){
header("HTTP/1.1 $status $statusMessage");
header('Content-Type: application/json');
$response['status'] = $status;
$response['status_message'] = $statusMessage;
$response['data'] = $data;
$jres = json_encode($response);
echo $jres;
}
?>
答案 0 :(得分:1)
使用=
代替==
和==
代替=
的错字。
您需要使用=
来分配值,并使用==
进行比较。
将if($status = 1)
替换为if($status == 1)
,将else if ($status = 0)
替换为else if ($status == 0)
。
出于相同的原因,还出于相同的原因,将$status ==1
中的$status = 1
替换为$status ==0
,将$status = 0
替换为login
,因为这里需要分配值。>