2017-11-03 1 views
0

비밀번호를 변경하기 전에 내 관리자에게 비밀번호 변경 기능이 있습니다. 사용자 비밀번호를 잘못 입력하면 사용자 이름 비밀번호를 다시 입력하도록 요청하여 유효성을 검사하고 있습니다. 현재 플래시 데이터 설정 중입니다. 그리고 사용자를 로그 아웃하십시오. 그래서 그는 주요 로그인 패널에 올 때 그 오류를 참조해야 할 것은 지금 여기 내 코드입니다세션 플래시 데이터가 아약스에서 작동하지 않습니다

컨트롤러 방법

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({ 
      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 } ?> 

이제 플래시 데이터가 정상적으로 작동합니다. 다른 많은 페이지에서 사용하고 있습니다. 내가 아약스와 함께 사용할 때 어떻게 든 설정되지 않습니다! 어떤 도움?

+0

플래시 데이터는 리디렉션 할 때까지 작동하지 않습니다. AJAX No Way –

+0

에서 특정 시나리오를 어떻게 구현할 수 있습니까? –

답변

1

내가 된답니다 문서에서 flashdata에 대해 무엇을 얻을 :

CodeIgniter의 만 다음 요청 할 수있을 것 "flashdata", 또는 세션 데이터를 지원하며, 자동으로 지워집니다. 위 설명에서

, 당신의 change_password_credentials_error 세션만이 "사용자/로그 아웃"컨트롤러에서 사용 가능하고 컨트롤러는 처리 후 삭제 . 이제 로그인 페이지로 리디렉션 된 후 flashdata 세션을 사용할 수 없습니다.

$ status 변수를 확인한 후 로그인 세션을 지우고 기본 로그인 페이지로 직접 이동/리디렉션하십시오.

+0

나는 생각을 좋아하지 만, 내가 이런 유형의 시나리오를 가지고 있다고 가정 해 볼 수 있습니다! 그래서 플래시 데이터가 아약스로 설정 될 수 없다는 것을 의미합니까? –