2011-06-17 21 views
0

私は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に提出されます。

ログイン試行に失敗した後、別の入力フィールド(captcha)がフォームに追加されます。例えば

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

しかし、問題は、余分なフィールドが追加され、フォームが、その後に提出されたときに、どのようcheck_loginメソッドはこの時間キャプチャフィールドがフォームに追加されたことを知っているだろうし、それができないことです空白のまま。

ありがとうございました。

答えて

0

ISSET($ _POST [ 'キャプチャ'])

または

ます$ this->入力 - >ポスト( 'キャプチャ')ではない。この条件のいずれかがある場合はFALSE

に等しいですmeet、form_validationにルールを追加します。

1

CI sessionライブラリまたはPHP $_SESSION arrayを使用する必要があります。個人的には、セッションlibに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); 

その時点で、あなたはあなたのビューに$試行を渡すことができます。

関連する問題