第一个代码段从两个文本字段中获取数据并发送到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 />";
答案 0 :(得分:8)
因为它们都已设置 - 变量存在于$_GET
数组中。即使它们的值是空字符串。
尝试检查emtpiness
if( isset($_GET['text_first']) && $_GET['text_first'] !== '' )
或
if ( ! empty( $_GET['text_first'] ) ) {
请注意,您不需要使用isset()
,因为如果变量不存在,empty()
不会生成警告。
答案 1 :(得分:0)
如果表单中存在字段,则评估为true。要检查表单是否已正确提交并具有值,我使用以下if语句:
if (isset($_GET['text']) && !empty($_GET['text'])) { // If the value is set and is not empty
// Processing code here..
}
答案 2 :(得分:0)
当您提交没有任何值的表单时,会为变量text_first和text_second发布空值,但是在$ _GET数组中,为它们设置了一个具有空值的键,
即$_GET['text_first']=''
和
$_GET['text_second']=''
,但为两者设定了值。
所以,如果你想检查空虚,请使用empty(),因为isset()在设置时返回true
答案 3 :(得分:0)
这对我有用:
if ( (isset($_POST['DEVICEINPUT'])) && (!empty($_POST['DEVICEINPUT'])) && (trim($_POST['DEVICEINPUT']) !== null) ) {
....
}