如果要同时设置多个值,我要检查。 我从isset文档中读到, If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered. If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.

那么,为什么我的代码总是打印输出的值而从不打印“否”?

的PHP

if ( isset( $_POST['thread'],
        $_POST['winkey'],
        $_POST['dkey'],
        $_POST['winrew'],
        $_POST['drew'] )===true ) {
    echo $_POST['thread'];
    echo $_POST['winkey'];
    echo $_POST['dkey'];
    echo $_POST['winrew'];
    echo $_POST['drew'];
}
else echo 'no';

的HTML

<form action="class.php" method="POST">
thread link:<br>
<input type="text" name="thread" >
<br>
win key:<br>
<input type="text" name="winkey" >
<br>
double key:<br>
<input type="text" name="dkey" >
<br>
winrew:<br>
<input type="text" name="winrew" >
<br>
double rew:<br>
<input type="text" name="drew" >
<br>
<input type="checkbox" name="banlist" value="ban">Include banlist<br>
<br>
<input type="submit" value="Submit">
</form> 

#1楼 票数:5 已采纳

提交表单后,您提到的$_POST中的所有变量都将被设置。 如果未发出POST请求,则不会设置任何请求。

我认为您正在寻找empty()来测试是否有任何变量为空。

#2楼 票数:2

可能是因为您在POST表单时设置了值,即使您没有在输入字段中输入任何内容也是如此。 对于这些键,您将获得一个空字符串(对于isset()返回TRUE)。

您可能应该使用!empty()进行检查。

更好的方法可能是使用filter_input_array() 看起来可能像这样。

//define callback function to be used to check if value is empty
function empty_filter($var) {
    if(!empty($var)) return $var;
}

$filter_definitions = array(
    'thread' => array('filter'    => FILTER_CALLBACK,
                      'options'   => 'empty_filter',
                      'error_message'    => 'This field cannot be empty.'), // filter_var_array will ignore this, but you can specify messaging here.
    'winkey' => array('filter'    => FILTER_CALLBACK,
                      'options'   => 'empty_filter',
                      'error_message'    => 'This field cannot be empty.'),
    'dkey' => array('filter'    => FILTER_CALLBACK,
                      'options'   => 'empty_filter',
                      'error_message'    => 'This field cannot be empty.'),
    'winrew' => array('filter'    => FILTER_CALLBACK,
                      'options'   => 'empty_filter',
                      'error_message'    => 'This field cannot be empty.'),
    'drew' => array('filter'    => FILTER_CALLBACK,
                      'options'   => 'empty_filter',
                      'error_message'    => 'This field cannot be empty.')
);

$filtered_post = filter_input_array(INPUT_POST, $filter_definitions, true);

// items not passing filter will show as NULL, so we check for NULL
if(in_array(NULL, $filtered_post)) {
    // you can walk through the filtered array an echo out error messages
    foreach($filtered_post as $key => $value) {
        if(is_null($value)) {
            echo $key . ': ' . $filter_definitions[$key]['error_message'] . '<br>';
        }
    }
} else {
   // validation passed
   // do whatever comes next
}

请注意,您可以为输入数组中的每个键定义不同的过滤条件,例如,您要验证一个字段为电子邮件地址,一个字段为IP地址,一个字段为正则表达式,甚至您自己的自定义验证,您可以指定验证条件,然后一次完成所有操作。

#3楼 票数:0

当您提交表单时,操作页面上的值不见了。 这意味着从输入中获取的东西可能是空字符串,但是您可以考虑这个空字符串,例如数字为零,它没有值但有数字。 在您的情况下,值也会在操作页面上显示,这就是每次打印值时的原因。

您可以在不提交表单时通过在新标签中打开操作页面来进行检查。 没有打印出来,这意味着平均值不会在操作页面上显示。 您的代码应如下所示。

if ( isset( $_POST['thread'],
    $_POST['winkey'],
    $_POST['dkey'],
    $_POST['winrew'],
    $_POST['drew'] )===true ) {
    if ($_POST['thread'] == "" and $_POST['winkey'] == "" and $_POST['dkey'] == "" and $_POST['winrew'] == "" and $_POST['drew'] == ""){
        echo "no";
    } 
    else{
            echo $_POST['thread'];
            echo $_POST['winkey'];
            echo $_POST['dkey'];
            echo $_POST['winrew'];
            echo $_POST['drew'];
    }

}
else echo 'no';

  ask by George Irimiciuc translate from so

未解决问题?本站智能推荐:

4回复

当我尝试回显已发布的字符串时,输出为布尔值

我试图提高我的PHP技能,当我发布姓氏和名字时,echo输出1 1 。 不管我放什么,回声都是1 1 。 为什么我的代码这样做?
3回复

$_POST值存在问题

嘿,我遇到了一个很容易解决的问题,但似乎找不到任何东西。 我有一个表格: 现在我有PHP获取帖子数据: 问题是,即使我没有为其设置值,一切似乎都已设置。 有任何想法吗? 可以解决吗? 谢谢您的帮助。
3回复

PHP多个Isset声明

我正在为RSVP创建PHP表单,并且试图向1个isset变量声明多个$ _POST,但是我一直在代码中遇到错误,这就是我想要做的: 所以我的错误发生在第二个声明行$ guestname1上,我认为这是由于isset之后的第二个逗号引起的,但是我不确定如何声明它? 第一行($ attenda
3回复

带有PHP的HTML表单已设置为无法运行功能(没有错误,什么也没有发生)

我有一个HTML表单: 和PHP isset: 用户输入了一个数字,然后我希望它运行代码,该代码根据输入的数字创建一个带有表中数据的文件,并将文件下载给用户。 这可以将下载代码保存在单独的文件中,并仅在表单操作中调用该文件,但是我需要使用表单在文件中运行它。 我目前在同一页面上还有
2回复

处理表单提交中的发布和会话值

我有这样的代码。 我想做的是: 检查是否有发布值,如果是-执行我的查询并显示结果。 或检查会话值,如果会话在那里有会话值并显示结果。 当我打印会话值时,它将被打印(即在会话中存在author_id ),但是它不在IF循环内。 为什么? 换句话说,我想检查发布值或会话值,并
4回复

复选框增加数据库中的值

是的,这是这些复选框表单问题之一。 我试图使我的问题简短易懂。 我有一个大约25个复选框的表格,分为3组。 每个组为每个复选框提供不同的点。 组1 = 5点/支| 组2 = 8点/支| 组3 = 12点/检查。 我想做的是计算提交时的检查次数,然后将所有内容加到总分中。 简单?
2回复

检查是否设置了多个POST参数的最简单方法?

嗨,所以我想知道检查是否设置了多个 POST 参数的最简单方法。 与其对通过“&&”链接在一起的多个“isset($_POST['example'])”进行长时间的检查,我想知道是否有更简洁的方法。 我最终做的是创建一个数组并循环遍历它: 然后我将调用下面的函数,传入 $params
4回复

如何使用PHP向数据库发送多个复选框/无线电值?

我有一个由大量单选按钮和复选框组成的表单,我想知道将其值保存到数据库的最佳方法是什么。 有几点需要考虑。 所有收音机/复选框都有不同的名称。 我已经为每个收音机/复选框创建了一个新表格,共有30个新列。 我被告知这种方式比在单个列中存储多个复选框值更好。 我正在开发一个基于MV