2016-04-04 28 views
2

PHPを使用して単純なAPIを作成しようとしていますが、データがファイルに投稿されません。cURLを使用中にデータがphpファイルに投稿されない

$url = "http://localhost/api.php"; 
$session = curl_init(); 
curl_setopt($session, CURLOPT_URL, $url); 
curl_setopt($session, CURLOPT_REFERER, "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); 
curl_setopt($session, CURLOPT_POST, true); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
//curl_setopt($session, CURLOPT_TIMEOUT, 200); 
curl_setopt($session, CURLOPT_HEADER, true); 
curl_setopt($session, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data')); 
curl_setopt($session, CURLOPT_POSTFIELDS, http_build_query(array("process"=>"login","user"=>$_POST['user'],"pass"=>$_PO ST['pass']))); 
printArr2($session); 
$result = curl_exec($session); 
$httpCode = curl_getinfo($session, CURLINFO_HTTP_CODE); 
curl_close($session); 

次は、私は、出力が常にisset($_RESPONSE['process'])の "それ以外" の部分で行うどのようなAPI

if(isset($_RESPONSE['process'])) 
{ 

    if(!strcmp($_RESPONSE['content']['process'],"login")) 
    { 
     $con = dbConnect(); 
     $str = userLogin($con,$_POST['content']['user'],$_POST['content']['pass']); 
     if(is_bool($str)) 
     { 
      $jsonData = json_encode($str); 
      header("HTTP/1.1 200 OK"); 
      header("Content-type: application/json"); 
      echo $jsonData; 
     } 
     else 
     { 
      $jsonData = json_encode($str); 
      header("HTTP/1.1 401 Unauthorised access"); 
      header("Content-type: application/json"); 
      header("Location: ".$_SERVER['HTTP_REFERER']); 
      echo $jsonData; 
     } 
     dbClose($con); 
     exit; 
    } 

    if(!strcmp($_POST['process'],"plagiarism")) 
    { 
     $con = dbConnect(); 
     $user = $_POST['user']; 
     $text = $_POST['text']; 

    } 
} 
else 
{ 
    $jsonData = json_encode(array("Error"=>"No methods called")); 
    if(isset($_SERVER['HTTP_REFERER'])) 
    { 
     header('HTTP\1.1 400', true, 400); 
     header("Content-type: application/json"); 
     header("Location: ".$_SERVER['HTTP_REFERER']); 
     echo $jsonData; 
     exit; 
    } 
    else 
    { 
     echo "Invalid entry"; 
    } 
} 

です。

「プロセス」をURLに追加して取得しようとしました。あなたはPOSTリクエストを行っている

$url = "http://localhost/checkapi.php?process=login"; 
+0

それがどのファイルに掲載さではないのですか?それをどのファイルにも保存していません。 – martin

+0

私はAPIを貼り付けました。それをチェックしてください –

+0

$ _REQUESTと$ _RESPONSEを混在させてしまったと思います。しかし、daniel axelが以下に書いているので、代わりに$ _POSTを使用してください。 –

答えて

1

$ _RESPONSEおよび$ _POSTスーパーグローバルで無効な配列インデックス(['content'])を使用しています。

if(!strcmp($_RESPONSE['content']['process'],"login")) 
    { 
     $con = dbConnect(); 
     $str = userLogin($con,$_POST['content']['user'],$_POST['content']['pass']); 

代わりに次のものが必要です。

if(!strcmp($_POST['process'],"login")) 
    { 
     $con = dbConnect(); 
     $str = userLogin($con,$_POST['user'],$_POST['pass']); 
+0

私はRESPONSEをPOSTに置き換えました。 –

1

、これらの変数にアクセスするための最良の方法は次のとおりです。

vardump($_POST); 

はそうだとすれば、デバッグすることができます前に、あなたのAPIのそれを印刷してみてください。

+0

これは正解ですが、タイプミスです。「var_dump」にする必要があります。 var_dump($ _ POST); –

関連する問題