Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP验证中的复选框_Php_Html - Fatal编程技术网

PHP验证中的复选框

PHP验证中的复选框,php,html,Php,Html,我一直在试图弄明白这一点,现在有问题,因为我是新的PHP 我需要有一个复选框,必须在表格提交到数据库之前进行检查(登记表需要他们确认用户协议) 我不确定我会错在哪里,即使在浏览了关于这个问题的其他几篇文章之后,我也没有任何运气 下面是适用的主要代码位,任何能提供一些指导的人都将不胜感激 (复选框的特定代码位于每个部分的底部,作为最新添加到表单中的代码) 来自验证 public function check($source, $items = array()) { foreach($ite

我一直在试图弄明白这一点,现在有问题,因为我是新的PHP

我需要有一个复选框,必须在表格提交到数据库之前进行检查(登记表需要他们确认用户协议)

我不确定我会错在哪里,即使在浏览了关于这个问题的其他几篇文章之后,我也没有任何运气

下面是适用的主要代码位,任何能提供一些指导的人都将不胜感激

(复选框的特定代码位于每个部分的底部,作为最新添加到表单中的代码)

来自验证

public function check($source, $items = array()) {
    foreach($items as $item => $rules) {
        foreach($rules as $rule => $rule_value) {

            $value = trim($source[$item]);

            if($rule === 'required' && $rule_value === true && empty($value)) {
                $this->addError("{$item} is required.");
            } else if (!empty($value)) {

                switch($rule) {
                    case 'min':
                        if(strlen($value) < $rule_value) {
                            $this->addError("{$item} must be a minimum of {$rule_value} characters.");
                        }
                    break;
                    case 'max':
                        if(strlen($value) > $rule_value) {
                            $this->addError("{$item} must be a maximum of {$rule_value} characters.");
                        }
                    break;
                    case 'matches':
                        if($value != $source[$rule_value]) {
                            $this->addError("{$rule_value} must match {$item}.");
                        }
                    break;
                    case 'unique':
                        $check = $this->_db->get('users', array($item, '=', $value));
                        if($check->count()) {
                            $this->addError("{$item} is already in use.");
                        }
                    break;
                    case 'accepted':
                        if(!isset($_POST['useragreement'])){
                            $this->addError("You must agree to our terms and conditions");
                        }
                    break;
HTML


*我同意用户协议。

您的HTML表单仅指定仅用于javascript/css目的的
id=“useragreement”

要在
$\u POST
数组中获得“useragreement”(以便您的函数可以看到它),您还需要指定“name”

试着改变这个

<input id="useragreement" type="checkbox" />

对此

<input id="useragreement" name="useragreement" type="checkbox" />

回到基础。 首先,我会为复选框指定一个名称

 <input id="useragreement" type="checkbox" name="useragreement"/>
然后,您可以查看已发布的数据。您可以在勾选和取消勾选复选框的情况下尝试此操作,并查看不同的结果

然后,您可以创建一个简单的
IF
语句。 所以


谢谢,但事实并非如此,我只是检查了一下以确保OK,不用担心,但请记住将name=“useragreement”保存在那里,否则PHP将永远看不到它!可能想在那里包装一个isset
if(isset($\u POST['useragreement'])){
如果它没有在数组中显示,那么它将不会被提交?为什么会这样?你确定它被包装在
标记和
提交
按钮所在的保存
标记中。你没有给你的复选框命名。因此它永远不会出现在$\u POST中
<input id="useragreement" name="useragreement" type="checkbox" />
 <input id="useragreement" type="checkbox" name="useragreement"/>
var_dump($_POST);
if(isset($_POST['useragreement'])){
    if($_POST['useragreement']){
      //If True (ticked)
    }else{
      //If Fale (unticked)
    }
}