2017-11-03 12 views
0

パスワードを変更する前に私の管理者にパスワード変更機能があります。ユーザーパスワードを間違えた場合にユーザーに再度パスワードを入力するように依頼して検証しています。ユーザをログアウトさせる。彼はメインのログインパネルに来るときので、彼は今ここにエラーが表示されるはずです私のコードセッションフラッシュデータがAjaxで動作しない

コントローラメソッド

public function checkpassword(){ 
     $this->check_unique_id_from_db_for_secuity(); 
     $unique_id=base64_decode($this->uri->segment(3)); 
     $data = $this->input->post(); 
     $data['unique_id']=$unique_id; 
     $status=$this->User_model->validate_user_loged_in_for_change_password($data); 
     if($status){ 
      echo "true"; 
      exit(); 
     } 
     else 
     { 
      $this->session->set_flashdata('change_password_credentials_error',"Your Username/Password was incorect account was logged out for secutiry reasons!"); 
      echo "false"; 
      exit(); 
     } 
    } 

メインのログインページ

のAJAXリクエスト

$.ajax({ 
      type: 'post', 
      url: '<?php echo base_url()."User/checkpassword/".$this->uri->segment(3).""; ?>', 
      data:{ "login_username" : $("#login_username").val(), "login_password" : $("#login_password").val() }, 
      success: function (data) { 
       if(data=="true"){ 
        window.location.href="<?php echo base_url()."User/changepassword_view/".$this->uri->segment(3)."";?>"; 
       } 
       else 
       { 
        window.location.href="<?php echo base_url()."User/logout";?>"; 
       } 
      } 

     }); 

PHPスクリプトです

<?php 
    if($this->session->flashdata('change_password_credentials_error')){?> 
     <script>toastr["success"]("<?php echo $this->session->flashdata('change_password_credentials_error')?>");</script> 
    <?php } ?> 

現在、フラッシュデータはうまく機能しています。他の多くのページで使用していますしかし、私は何とかAjaxでそれを使用しているとき、それは設定されていません!どんな助け?

+0

リダイレクトするまで、フラッシュデータは機能しません。 AJAX No Way –

+0

では、どのように特定のシナリオを実装できますか? –

答えて

1

私はCodeIgniterのドキュメントからflashdataについて何を得る:

CodeIgniterのが唯一の次の要求のために利用できるようになります「flashdata」、またはセッションデータをサポートして、自動的にクリアされます。説明以上のことから

、あなたのchange_password_credentials_errorセッションのみとなります「ユーザー/ログアウト」コントローラで利用可能とコントローラが処理後にクリア。したがって、今度はログインページにリダイレクトされた後、flashdataセッションは利用できません。

この場合、$ statusの変数をチェックしてから、ログインセッションをクリアしてから、メインログインページに直接移動してください。

+0

私はアイディアが好きですが、私はこのタイプのシナリオを持っていると仮定できます!だから、フラッシュデータはajaxに設定することはできないのですか? –