表格验证问题

时间:2011-06-17 07:11:02

标签: php validation codeigniter

我对CodeIgniter中的表单验证有疑问:

<? form_open('user/check_login' ?>
  <fieldset id="login_fields">
     <label for="login">Login</label>
          <input name="login" type="text" class="textfield" id="login" />
     <label for="password">Password</label>
          <input name="password" type="password" class="textfield" id="password" />
     <input type="submit" name="Submit" value="Login" />
  </fieldset>
</form>

如上所示,表单将提交给用户控制器中的check_login方法。

在一定数量的不成功登录尝试后,我会在表单中包含另一个输入字段(验证码)。例如

<? if ($attempts > 3) { ?>
<label for="captcha">captcha</label>
          <input name="captcha" type="text" class="textfield" id="captcha" />
<? } ?>

但问题是,当添加额外字段,然后提交表单时,check_login方法将如何知道此时在表单中添加了验证码字段,并且不能留空。

感谢。

2 个答案:

答案 0 :(得分:1)

您需要使用CI session库或PHP $_SESSION array。就个人而言,我会在会话库中使用flash_data。

$this->load->library('session');
$attempts = $this->session->flashdata('fails');
if(!is_numeric($attempts)) $attempts = 0;
else $attempts++;
$this->session->set_flashdata('fails', $attempts);

此时,你可以将$尝试传递给你的视图,你应该很好。

答案 1 :(得分:0)

isset($ _POST ['captcha'])

$ this-&gt; input-&gt; post('captcha')不等于FALSE

如果符合任何条件,则将规则添加到form_validation。