使用API​​的登录功能始终返回登录成功条件

时间:2018-07-14 05:24:24

标签: php json api react-native login

我已经创建了两个用于登录和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;
}

?>

1 个答案:

答案 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,因为这里需要分配值。