13

php://input存在/設定されているかどうかを確認する必要があります。それはphpで動作しisset()ますか?それを確認する適切な方法は何ですか?

4

4 に答える 4

18

file_get_contents()(読み取り用)+empty()またはブール変換(テスト用)でテストしてみてください:

<?php
$input = file_get_contents('php://input');

if ($input) {
   // exists
} else {
   // not exists
}

php.netから:

注: PHP 5.6 より前では、 で開いたストリームphp://inputは 1 回しか読み取ることができませんでした。ストリームはシーク操作をサポートしていませんでした。ただし、SAPI の実装によっては、別の php://input ストリームを開いて読み取りを再開できる場合があります。これは、リクエスト本文のデータが保存されている場合にのみ可能です。通常、これは POST リクエストに当てはまりますが、PUT や PROPFIND などの他のリクエスト メソッドには当てはまりません。

于 2013-09-25T17:46:04.517 に答える
2

php://inputusingの内容を取得しfile_get_contents、戻り値をチェックして、実際に設定されているかどうかを確認できます。

$input = file_get_contents("php://input");
if ($input) {    
    // set     
}
else {
   // not set
}
于 2013-09-25T17:45:56.873 に答える
1

変数が存在し、null でない場合は true を返します

$foo = 'bar';
var_dump(isset($foo));        -> true

$baz = null;
var_dump(isset($baz));        -> false

var_dump(isset($undefined));  -> false
于 2013-10-14T10:51:55.587 に答える
-2

このようなセットであるかどうかを確認できる POST リクエストからユーザー入力を取得しているとします。

 if(isset($_POST['var_name']))
 {
      //for additional checking  like if  it's not  empty do this
      if(!empty($_POST['var_name']))
      {
           //Do whatever you want here
      }
 }
于 2013-09-25T17:50:10.650 に答える