0

ログインフォームを無効にして3回ログインに失敗した後、n分間ユーザーをロックアウトするCI(PHP)ログインフォームがあります。ロックアウト時間が経過したかどうかを確認するために、(モデル内の) セッションに試行時間を設定し、現在の時間をセッションと比較します。一部のjqueryコードのログインページで試行時間がチェックされます。ただし、jquery スクリプトではセッションが認識されません。

CI モデル (PHP)

if($this->lockIP($ip_address)){
    $this->session->set_userdata('lockout',time());
    return true;
}

CI ビュー (Jquery)

var now = "<?php echo time();?>";
var attempt = "<?php echo $this->session->userdata('lockout');?>";
alert(now - attempt);
4

1 に答える 1

0

config.php の sess_time_to_update パラメータが原因でした。CI はこれを使用して、セッション ID を新しいものに更新します。変更が ajax 呼び出しで発生した場合、CI は新しい Cookie を送信して、ブラウザに新しいセッション ID を伝えます。残念ながら、ブラウザーはこの Cookie を無視して、古いセッション ID を保持しているようです。

そのため、$config['sess_time_to_update'] = $config['sess_expiration']; を設定します。

それを機能させるために私たちが行う一種のトリックです。

于 2013-02-21T07:42:01.153 に答える