8

php://inputlocalhost で正常に動作しています。しかし、サーバーでは空を返します。私のサイトへの入力 (リクエスト) はjson( REST - アプリケーション/json タイプ) であるため、$_POST機能しませんでした (この質問を読んでください)。

$_POST は、form-data や x-www-urlencoded などのキーと値のペア タイプの入力で動作します

キー1=値1&キー2=値2&キー3=値3

application/json入力として(RESTで)使用しています。

{'key1':'value1','key2':'value2','key3':'value3'} のように

これは を使用して処理することはできません$_POST。しかし、を使用php://inputすると、そのデータを読み取るのに役立ちます。

私のコード

class Webservice_Controller extends CI_Controller {
    public $json_input_data;
    public function __construct(){
        parent::__construct();
        $this->json_input_data = json_decode(file_get_contents('php://input'),TRUE);
    }
    public function json_input($label){
        if(isset($this->json_input_data[$label])) return $this->json_input_data[$label];
        else return NULL;
    }
}

上記のコードは別の Web サーバーでも正常に動作しますが、現在の Web サーバーでは動作しません。:(

Web サーバーが へのアクセスを拒否しているようphp://inputです。

php で json 入力を読み取る他の方法はありますか?

4

2 に答える 2

4

私はこれが古いことを知っていますが、他の人を助けるかもしれません:

json 内の一重引用符には注意してください

json_decode に関する PHP ドキュメントから:

the name and value must be enclosed in double quotes
single quotes are not valid 

$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null
于 2014-04-01T01:54:48.737 に答える