在 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) {
我通过 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":"********************"}'
谁能指出我遗漏了什么?
试试这个:
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) {