我一直试图解决这个问题一段时间,并且遇到一些新问题。
我需要在将表单提交到数据库之前必须检查一个复选框(需要他们确认useragreement的注册表单)。
我不确定我哪里出错了,甚至在经过其他几篇关于此事的帖子后我也没有运气。
下面是适用的代码的主要部分,任何可以提供一些指导的人都会非常感激。
(复选框的具体代码位于每个部分的底部,作为表单的最新添加内容)
从验证
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;
从实际表格处理
if(Token::check(Input::get('token'))) {
$validate = new Validate();
$validation = $validate->check($_POST, array(
'username' => array(
'required' => true,
'min' => 2,
'max' => 20,
'unique' => 'users'),
'password' => array(
'required' => true,
'min' => 6),
'password_again' => array(
'required' => true,
'matches' => 'password'),
'firstname' => array(
'required' => false,
'min' => 2,
'max' => 50),
'lastname' => array(
'required' => false,
'min' => 2,
'max' => 50),
'dob' => array(
'required' => false),
'gender' => array(
'required' => false),
'nationality' => array(
'required' => false),
'email' => array(
'required' => true,
'min' => 6,
'unique' => 'email'),
'email_again' => array(
'required' => true,
'matches' => 'email'),
'useragreement' => array(
'accepted' => true)
));
HTML
<div class="regfieldcheck">
<label for="useragreement"><span class="requiredfield">*</span> I agree to the User Agreement.</label>
<input id="useragreement" type="checkbox" />
</div>
答案 0 :(得分:1)
您的HTML表单仅指定用于javascript / css目的的id="useragreement"
。
获得&#34; useragreement&#34;在$_POST
数组中(所以你的函数可以看到它),你需要指定&#34; name&#34;太
尝试更改此内容......
<input id="useragreement" type="checkbox" />
到此......
<input id="useragreement" name="useragreement" type="checkbox" />
答案 1 :(得分:1)
回到基础。 首先,我将为复选框指定一个名称......
<input id="useragreement" type="checkbox" name="useragreement"/>
在您发布表单数据的页面上,只需插入
var_dump($_POST);
然后,您可以查看已发布的数据。您可以选中勾选框和未勾选的勾选框并查看不同的结果。
然后,您可以使用简单的IF
语句。
所以......
if(isset($_POST['useragreement'])){
if($_POST['useragreement']){
//If True (ticked)
}else{
//If Fale (unticked)
}
}