0

クエリがオプションでaget() またはapost()として実行され$id = $_POST['id']、null値が取得される可能性がある場合は、これらのいずれかが、投稿された可能性のある変数の存在をテストするための優れた方法です。

if (!empty($_POST['id'])){ $id = $_POST['id'];}else{$id = FALSE;}

if (isset($_POST['id'])){ $id = $_POST['id'];}else{$id = FALSE;}

$id = isset($_POST['id']) ? $_POST['id'] : FALSE;

または他の好ましい方法はありますか?それらはすべて$_REQUEST()2回実行され、より良い方法があると思うようになります。

ありがとう!

4

5 に答える 5

1

私は一緒に行きます:

$id = isset($_POST['id']) && strlen($_POST['id']) > 0 ? (int)$_POST['id'] : FALSE;

最初に変数が設定されているかどうかを確認し、次に長さが0より長いかどうかを確認します。

私の意見では、正しくインデントすれば5行のコードは必要ないので、読みやすくなります。これにより、読みにくくなり、ファイルが長くなります。

 if (isset($_POST['id'])){ 
   $id = $_POST['id'];
 }else{
   $id = FALSE;
 }

また、IDとして単純なものに$ _POSTを使用する場合は、(int)$ _POST['id']を使用してintにキャストするだけです。そうすれば、あなたは確実に番号を持っています。

于 2013-03-01T19:32:47.280 に答える
1

私は使うだろう

if (isset($_POST['id']) && strlen($_POST['id'])) $id = (int)$_POST['id'];

テストする

  • 値が設定されている場合(通知をトリガーしないように)、および
  • 空の文字列の場合''

の問題empty()は、0と0.0を空として扱うことです。これは、値が0になることがあるため、問題になる可能性があります。

isset()単独での問題は、 ''(空の文字列)が設定されたものとして扱われるため、誰かが特定のフィールドに入力せずにフォームを送信した場合、isset()TRUEを返すことでフォームを通過させることです。strlen()ゼロ以外の長さの値が実際に存在するかどうかを確認するためにあります。

于 2013-03-01T19:38:52.510 に答える
0

すべてを使用できますが、最初のオプションが確認するための最良の方法です。

if (!empty($_POST['id'])){ $id = $_POST['id'];}else{$id = FALSE;}

次のことが考慮されempty()ます。

  • ""(空の文字列)
  • 0(整数として0)
  • 0.0(フロートとして0)
  • 「0」(文字列として0)
  • ヌル
  • FALSE
  • array()(空の配列)
  • $ var; (宣言された変数ですが、値はありません)

isset()nullかどうかだけをチェックします。

于 2013-03-01T19:19:18.510 に答える
0
function getByKey($arr, $key, $default = false) {
   return isset($arr[$key]) ? $arr[$key] : $default;
}

$id = getByKey($_POST, 'id');

他の方法は次のようなものです

   $id = filter_input(INPUT_POST, 'id', FILTER_VALIDATE_INT, array(
        'options' => array(
            'min_range' => 1, 
            'max_range' => 255,
            'default' => 1,
         )
   ));
于 2013-03-01T19:36:07.753 に答える
0

クエリがオプションでget()またはpost()として実行される場合

クエリ文字列(つまり、とcontainsの両方)で投稿された場​​合はどう$_GETなり$_POSTますidか?

POST /yourscript.php?id=4
Host: yoursite.com

id=3

どちらを使用するかを選択する必要がありますid(これは完全にあなた次第です)。

他の人が提案しているものの代わりに、PHPの組み込みフィルター関数を使用できます。

$id = filter_input(INPUT_POST, 'id', FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
于 2013-03-01T19:50:28.280 に答える