2011-06-17 95 views
0

我有大約笨表單驗證一個問題:表單驗證問題

<? 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在用戶控制方法。

經過一定數量的失敗登錄嘗試後,我會在表單中包含另一個輸入字段(captcha)。例如

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

但問題是,當額外的字段添加,並提交表單那麼,如何check_login方法就會知道,這一次的驗證碼字段在形式添加,並且不能留空。

謝謝。

回答

0

isset($ _POST [ '驗證碼'])

$這 - >輸入 - >交的( '驗證碼')不等於FALSE

如果任何的這種條件是見面,將規則添加到form_validation。

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); 

在這一點上,你可以通過$嘗試你的看法,你應該是好的。