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