在 PHP 文件中获得成功的错误条件

Wrong condition getting successful in PHP file

我通过 PHP 做了一个简单的 API 来配置和检查与服务器的连接。

代码如下:

<?php
ini_set('display_errors', 1);
session_start();
require_once("common.php");
$api_get="*******************";
$api_post="**********************";

if (isset($_GET["apikey"])){
    if ($_GET["apikey"]=="$api_get"){
        // Takes raw data from the request
        $json = file_get_contents('php://input');
        // Converts it into a PHP object
        $data = json_decode($json,true);
        $post=$data["api_secret"];
        if ($api_post==$post){
            $_SESSION["status"]="authenticatedfor:".$_GET["command"];
            $_SESSION["username"]=$_POST["username"];
            $_SESSION["password"]=$_POST["password"];
            $_SESSION["quota"]=$_POST["quota"];
            $_SESSION["email"]=$_POST["email"];
            if ($_GET["command"]="createacct"){
                header("Location:createaccount");
                exit;
            }
            elseif ($_GET["command"]="terminateacct"){
                header("Location:terminateacc");
                exit;
            }
            elseif ($_GET["command"]="suspendacct"){
                header("Location:suspendacc");
                exit;
            }
            elseif ($_GET["command"]="unsuspendacct"){
                header("Location:unsuspendacc");
                exit;
            }
            elseif ($_GET["command"]="sync"){
                header("Location:sync");
                exit;
            }
            elseif ($_GET["command"]="accessreset"){
                header("Location:passwordreset");
                exit;
            }
            elseif ($_GET["command"]="verifyconn"){
                header("Content-Type: application/json");
                $data=array("response" => "success");
                echo json_encode($data);
                exit;
            }
            else {
                header("Content-Type: application/json");
                $data=array("response" => "no_command");
                echo json_encode($data);
            }
        }
        else {
            header("Content-Type: application/json");
            $data=array("response" => "wrong_secret");
            echo json_encode($data);
        }
    }
    else {
        header("Content-Type: application/json");
        $data=array("response" => "wrong_key");
        echo json_encode($data);
    }
}
else {
    header("Content-Type: application/json");;
    $data=array("response" => "no_key");
    echo json_encode($data);
    exit;
}
?>

当我使用所有正确的凭据发出 CURL JSON 请求时,响应出现“no_key”,当我写 api_get 或 api_post 错误时,它显示“错误密钥”和“错误的秘密”。 我正在发出类似 curl -X POST https://hostname.com/auth?command=verifyconn&apikey=*********************** -H 'Content-Type: application/json' -d '{"api_secret":"********************"}'

的 HTTP 请求

谁能指出我遗漏了什么?

试试这个:

curl -X POST 'https://hostname.com/auth?command=verifyconn&apikey=***********************' -H 'Content-Type: application/json' -d '{"api_secret":"********************"}'

你在这一行遇到错误

if ($_GET["apikey"]=="$api_get"){

您可以在比较之前打印这两个值。 对于调试,检查两个变量值,如

var_dump($_GET["apikey"]);
var_dump($api_get);

也这样比较

if ($_GET["apikey"]== $api_get) {