PHP Checkbox验证守护者

时间:2015-08-19 15:40:56

标签: php forms validation checkbox

我有一个处理姓名/电话/评论等的评论部分。我也有一个这种形式的复选框。当复选框设置为空时,我得到错误异常。但是如果检查了盒子,并且其他区域不满意,我就无法让这些盒子保持检查,同时将错误抛到别处并重新加载页面。

我尝试将if语句中的值和$response设置为yes,但是如果选中了一个框,则在页面重新加载时会检查所有框。

PHP:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["response"])) {
        $responseErr = "Response is required";
    } else {
        $response = test_input($_POST["response"]);
    }
}


How would you prefer us to respond? Choose all that apply.
<span class="error">* 
    <?php echo $responseErr;?>
</span> 
<br>
<input type="checkbox" name="response" <?php if (isset($response) && $response=="Call") echo "checked";?> value="Call">Call
<input type="checkbox" name="response" <?php if (isset($response) && $response=="Text") echo "checked";?> value="Text">Text
<input type="checkbox" name="response" <?php if (isset($response) && $response=="Email") echo "checked";?> value="Email">E-mail
<br><br>

2 个答案:

答案 0 :(得分:1)

另一种解决方案可能是为每个复选框指定一个唯一的名称(电话响应,电子邮件响应,文本响应),然后单独检查每个复选框。当然,这意味着更多的代码,但我以后很容易实现和管理。

答案 1 :(得分:0)

<强>解决:

有人提到我应该给每个输入他们自己的名字。

How would you prefer us to respond? Choose all that apply.<span class="error">* <?php echo $responseErr;?></span><br>
                <input type="checkbox" name="callResponse" <?php if (isset($callResponse) && $callResponse=="Yes") echo "checked";?> value="Yes">Call
                <input type="checkbox" name="textResponse" <?php if (isset($textResponse) && $textResponse=="Yes") echo "checked";?> value="Yes">Text
                <input type="checkbox" name="emailResponse" <?php if (isset($emailResponse) && $emailResponse=="Yes") echo "checked";?> value="Yes">E-mail<br><br>

此外,在错误检查中,您需要针对空条目测试所有3个输入。否则,即使选中了复选框,也会显示错误消息。

if (empty($_POST["callResponse"]) && empty($_POST["textResponse"]) && empty($_POST["emailResponse"])) {
        $responseErr = "Response is required";
    } else {
        $callResponse = test_input($_POST["callResponse"]);
    }

    if (empty($_POST["callResponse"]) && empty($_POST["textResponse"]) && empty($_POST["emailResponse"])) {
        $responseErr = "Response is required";
    } else {
        $textResponse = test_input($_POST["textResponse"]);
    }

    if (empty($_POST["callResponse"]) && empty($_POST["textResponse"]) && empty($_POST["emailResponse"])) {
        $responseErr = "Response is required";
    } else {
        $emailResponse = test_input($_POST["emailResponse"]);
    }