对两个文本输入的值使用GET


Using GET for the values of two text inputs

我在获取两个文本输入的值时遇到一些困难:

<form action="search.php">
<input type="text" name="q1">
<input type="text" name="q2" >
<input type="submit" name="submit" value="Search" />
</form>

这是search.php页面:

$q1 = @$_GET['q1'];
$q2 = @$_GET['q2'];
if(isset($q1) && isset($q2)) {
$var= "$q1, $q2";
}
if(isset($q1) && empty($q2)) {
$var= "$q1";
}

q1q2都填写并发送时,它可以完美地工作。然而,当只有q1输入被填写并发送时(留下q2空白),它仍然使用第一个if语句——if(isset($q1) && isset($q2)——而不是第二个——if(isset($q1) && empty($q2)来创建$var。为什么会发生这种情况?

您正在设置$q1$q2,因此isset($q1)isset($q2)将始终返回true。试着

if(isset($_GET['q1']) && isset($_GET['q2'])) {

或测试空值:

if(empty($q1) && empty($q2)) {
即使没有输入任何值,也会设置

$q2。这是一个有效的表单字段(尽管包含一个空字符串)。

你在赋值时同时设置了$q1和$q2:

$q1 = @$_GET['q1'];
$q2 = @$_GET['q2'];

在用户没有填写第二个字段的情况下,$q2被设置为空字符串。

字符串为空与字符串为空是不一样的。

看一下PHP手册中关于isset的页面:http://php.net/manual/en/function.isset.php

if ($q1 != '' && $q2 != '') {
    $var = "$q1, $q2";
} elseif($q1 != '') {
    $var = "$q1";
}

它们都被传递-但没有填充?我在想一个条件句,更像是:

!empty($_GET['q1']) && ($_GET['q1'] != '')

这些组合应该会有所帮助。我想象q1 &