2016-08-20 10 views
0

私はこの質問がフォーラムで何度か尋ねられていますが、どちらの答えも私のために働いていないことを知っています。私はまだURLパラメータを介してデータを送信しようとするたびに空の文字列を取得します。file_get_contents( 'php:// input')はURLパラメータを送信するときに空を返します

これは、PHPコード

  <?php 
        if (!file_get_contents("data:,ok")) { 
           die("Houston, we have a stream wrapper problem."); 
         } 
        print "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . "<BR />"; 
        $data = file_get_contents('php://input'); 
        print "DATA: <pre>"; 
        var_dump($data); 
        $tempArray = json_decode(file_get_contents('generated.json'), true); 
        array_push($tempArray, $data); 
        $jsonData = json_encode($tempArray); 
        file_put_contents('generated.json', $jsonData); 
        print "</pre>"; 
      ?> 
      <form method="post"> 
       <input type="text" name="name" value="ok" /> 
       <input type="submit" name="submit" value="submit"/> 
      </form> 

urlパラメータ

http://localhost/tests/testtest.php?name=what 

を使用して出力変数を渡すの例である:、私はすでにallow_url_fopen = Onを設定している

  Notice: Undefined index: CONTENT_TYPE in C:\Apache24\htdocs\tests\testtest.php on line 5 
      CONTENT_TYPE: 
      DATA: 

post_max_size = 8Mを設定し、まだ希望はない。しかし、送信ボタンをクリックしてデータを送信しようとすると、生のデータがPHP(string(21) "name=ok&submit=submit")に送信されます。

誰かがお手伝いしますか?ありがとう!

+0

http://stackoverflow.com/a/5519834/1005215 –

答えて

2

これはphp://input

PHPで記述されている://入力

PHP://入力はあなたが要求本体から生のデータを読み取ることができます読み取り専用のストリームです。 POSTリクエストの場合は、特殊なphp.iniディレクティブに依存しないので、$ HTTP_RAW_POST_DATAの代わりにphp://入力を使用することをお勧めします。

重要な部分は「POSTreqest」です。

これは、http://www.example.com/tests/testtest.php?name=whatと言うときは、リクエストではなく、GETリクエストを送信することを意味します。したがって、リクエストボディはなく、php://inputで何も読み取ることはできません。


URLパラメータとして渡されたフォーム入力を読み取るには、グローバル$_GET変数を使用することができます。

POST要求を使用する場合は、通常、php://inputによって要求本体を手動で読み取るのではなく、グローバル$_POST配列を使用します。

$_REQUESTは、POSTかGETリクエストかどうか気にしない場合もあります。ただし、ご承知のことWhat's wrong with using $_REQUEST[]?

+0

私はurlパラメータを通してデータを送信することを可能にするために使用できる他の方法を持っていますか? – Jonaii

1

$_SERVER['QUERY_STRING']をお探しですか?

<?php 

// Basic way, but has the risk of E_NOTICE when it is undefined. 
var_dump($_SERVER['QUERY_STRING']); 

// Safe way 
var_dump((string)filter_input(INPUT_SERVER, 'QUERY_STRING'));