3

第一个片段从两个文本字段中获取数据并发送到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 语句

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 数组中为它们设置了一个带有空值的键,即$_GET['text_first']=''

$_GET['text_second']=''

, 但值是为两者设置的。

因此,如果您想检查是否为空,请使用 empty() ,因为 isset() 在设置时返回 true

于 2013-03-19T13:16:19.700 回答
0

这对我有用:

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

....

}
于 2015-01-06T07:45:55.547 回答