我对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方法将如何知道此时在表单中添加了验证码字段,并且不能留空。
感谢。
答案 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。