私はログインコントローラをcaptchaで作成し、コールバックルールを使ってcaptchaの入力をチェックし、検証しました。codeigniterセッションが同じコントローラの他のメソッドで動作していません
したがって、セッションを使用して同じコントローラ内の別のメソッドにcaptcha変数を送信しようとしました。
セッションを別の関数でエコーすると、セッションが動作しません。それは、同じ機能でそれをエコーしようとするときにのみ機能します。
ここでは、コードです:
1.ログイン機能
public function login()
{
if($this->auth->is_logged_in() === TRUE)
{
redirect(base_url()."dashboard");
}
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
$this->form_validation->set_rules('captcha', 'Captcha', 'required|callback_check_captcha');
if($this->form_validation->run() == FALSE)
{
$cap = $this->created_captcha();
$data['cap_img'] = $cap['image'];
$data['title'] = 'Form Login Administrator';
$this->session->set_userdata('captcha', $cap['word']);
$sess = $this->session->userdata('captcha');
echo ' <br/> FIRST SESSION : '.$sess . ' --- ';
$this->load->view('form-login', $data);
}
else
{
$check_login = $this->auth->do_login($username,$password);
if($check_login == FALSE)
{
$this->session->set_flashdata('msg', 'Your username or password wrong, please repeat again !!!');
redirect(base_url().'login');
}
else
{
$lastlogin = $this->dbm->update('users', array('userid'=>$this->session->userdata('userid')), array('lastlogin'=>date('Y-m-d H:i:s')));
$this->session->unset_userdata('captcha');
redirect(base_url().'dashboard');
}
}
}
2.チェックcapthca機能
public function check_captcha($input)
{
echo '<br/> SECOND SESSION : '. $this->session->userdata('captcha') . ' --- ' .
'<br/> POST INPUT : '.$input.' --- ';
if($input === $this->session->userdata('captcha'))
{
return TRUE;
}
else
{
$this->form_validation->set_message('check_captcha', 'you input the wrong %s!');
return FALSE;
}
}
私はセッションライブラリを置くことを試みたが、コンストラクタですが、それでも同じです。
function __construct()
{
parent::__construct();
$this->load->library('session');
$this->userid = $this->session->userdata('userid');
$this->load->helper('captcha');
}
ここが間違っていますか?助けてください、ありがとう。
編集: これはクロムブラウザでのみ発生します。
前にコードの行を次のよう
入れ? –
configディレクトリのautoload.phpにロードされています。 – Ikhsan