3

最初のスニペットは、2 つのテキスト フィールドからデータを取得し、 に送信しaction script.phpます。if問題は、テキスト フィールドに何も入力しなくても、両方のステートメントが true と評価されることです。何故ですか ?

try.php

<form method='get' action='./action_script.php'>
        <input type="text" id="text_first" name="text_first" /> <br />
        <input type="text" id="text_second" name="text_second"/> <br />
        <input type="submit" id="submit" />
</form>

action_script.php

<?php

  if(isset($_GET['text_first'])) {
        echo "Data from the first text field : {$_GET['text_first']} <br>";
  }
  if(isset($_GET['text_second'])) {
        echo "Data from the second text field : {$_GET['text_second']} <br>";
  }

  echo "After the if statement <br />";
4

4 に答える 4

8

両方が設定されているため、変数は$_GET配列に存在します。それらの値が空の文字列であっても。

空き状況もチェックしてみてください

 if( isset($_GET['text_first']) && $_GET['text_first'] !== '' ) 

また

if ( ! empty( $_GET['text_first'] ) ) {

変数が存在しない場合は警告を生成しないisset()ため、使用する必要がないことに注意してください。empty()

于 2013-03-19T12:53:13.643 に答える
0

これは私のために働いた:

if ( (isset($_POST['DEVICEINPUT'])) && (!empty($_POST['DEVICEINPUT'])) && (trim($_POST['DEVICEINPUT']) !== null) ) {

....

}
于 2015-01-06T07:45:55.547 に答える
0

フィールドがフォームに存在する場合、true と評価されます。フォームが適切に送信され、値があるかどうかを確認するには、次の if ステートメントを使用します。

if (isset($_GET['text']) && !empty($_GET['text'])) { // If the value is set and is not empty
    // Processing code here..
}
于 2013-03-19T12:55:47.557 に答える
0

値を指定せずにフォームを送信すると、変数 text_first と text_second に空の値がポストされますが、$_GET 配列では、null 値を持つキーが設定されます$_GET['text_first']=''

$_GET['text_second']=''

、しかし、値は2つに設定されています。

したがって、空であることを確認したい場合は、設定時に isset() が true を返すため、 empty() を使用します。

于 2013-03-19T13:16:19.700 に答える