codeigniter
  • flash
  • session
  • 2013-08-12 3 views 2 likes 
    2

    리디렉션 한 번만 리디렉션 한 후 set_flashdata가 바로 작동하지 않습니다.리디렉션 후 CodeIgniter, set_flashdata가 작동하지 않습니다.

    저는이 프로세스에서 하나의 컨트롤러를 사용합니다 - 프로파일 러 컨트롤러. 회원 확인 프로세스를 처리하고 리디렉션의 로그인 페이지도 표시합니다.

    1. 이 세션 set_flashdata ('토픽', 'NewMember가')

    2. 리디렉션 ("로그인")

    3. 경로를 [ '로그인'= '프로파일 : 프로세스는 다음과/로그인의 '

    4. 주제 = $이 세션 flashdata ('주제 ')

    더 깨끗한 디버깅을 위해 모든 데이터베이스 세션 구성을 해제했으며 구성에서 세션 라이브러리가 켜져 있어도 어쨌든 그것을 호출하기 시작했습니다. 어느 쪽도 작동하지 않는 것 같습니다.

    여기 내 코드입니다. 당신이 볼 수 있듯이, 나는 로그 파일 path.log에 경로 정보를 보내고 : 컨트롤러 프로파일 러에서

    , 기능 confirmMember :

    public function confirmMember() 
        { 
        //use_ssl(); 
        $this->form_validation->set_rules('handle', 'Unique Member Name', 'trim|xss_clean|required|min_length[5]|max_length[30]'); 
        $this->form_validation->set_rules('confirmation', 'Confirmation Code', 'trim|xss_clean|required|min_length[20]|max_length[20]|alpha_numeric'); 
    
        if ($this->form_validation->run() === FALSE) {echo "here";exit; 
         $data['handle']=$this->input->post('handle'); 
         $data['confirmation']=$this->input->post('confirmation'); 
         $this->load->view('signing/defaults/header',$data); 
         $this->load->view('defaults/heading',$data); 
         $this->load->view('defaults/banner'); 
         $this->load->view('defaults/banner_right'); 
         $this->load->view('member/temp/index',$data); 
         $this->load->view('defaults/footer',$data); 
        } else { 
    
         $post = $this->input->post(NULL,TRUE); 
         $data['member'] = $this->Signing_model->model_confirmMember($post); 
    
        if ($data['member']['confirmed']!==FALSE) { 
        /* PATH CHECK */ 
        error_log("member confirmation not false\n",3, LOG_DIR.'path.log'); 
        unset($post); 
        $this->session->sess_destroy(); 
        $this->session->set_flashdata('topic', 'newmember'); 
        // $this->session->keep_flashdata('topic'); 
        redirect('login','refresh'); 
        } else { 
        /* PATH CHECK */ 
        error_log("member confirmation IS FALSE\n",3, LOG_DIR.'path.log'); 
        $this->load->view('member/temp/index',$data); 
        } 
    

    내 로그 파일 경로가 올바른 경로를 사용하여 표시되는지 보여줍니다 "회원 확인은 틀린 것이 아닙니다".

    다른 리디렉션이 없으므로 keep_flash 데이터를 사용해 보았습니다.

    또한 '새로 고침'없이 리디렉션을 시도했습니다. 설정/routes.php에서

    :

    public function signIn() 
    { 
        $topic = $this->session->flashdata('topic'); 
        if (isset($topic)) { 
         $message = "topic is set. topic = ".$topic."\n"; 
         if ($topic!==FALSE) { 
           error_log("flash var topic is not false\n", 3, LOG_DIR.'path.log'); 
         } else { 
           error_log("flash var topic is FALSE\n", 3, LOG_DIR.'path.log'); 
         } 
        } else { 
         $message = "topic is NOT set\n"; 
        } 
        error_log($message,3,LOG_DIR.'path.log'); 
    
        exit; 
        ... 
        ... 
    } 
    

    로그 파일이 설정되어 그 주제를 보여주는하지만 거짓이다 :

    <?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
    
    $route['join'] = 'profilers/joinUp'; 
    $route['login'] = 'profilers/signIn'; 
    ... 
    

    로그인 페이지가 프로파일 러 컨트롤러, 위의 쇼 같은 로그인의 기능을 사용합니다.

    "플래시 VAR 주제는 FALSE"

    "항목이 설정되어 있습니다. 주제 ="이 FALSE이기 때문에

    물론 주제 VAR이 설정되지 않았습니다.

    위에서 알 수 있듯이 플래시 데이터 가져 오기 기능을 컨트롤러 기능 시작 부분으로 이동하여 데이터가 손상 될 수있는 항목을 무시합니다.

    +0

    만약'echo $ this-> session-> flashdata ('topic'); die();'를 사용하여 그것을 디버그하려고한다면 어떤 데이터를 얻는가?'confirmMember() {}'또한 작동하지 않는 플래시 데이터입니까? 대신 세션 변수를 사용하면 작동합니까? – Jeemusu

    +0

    아니요. 신속한 회신에 감사드립니다. – earth2jason

    +0

    컨트롤러 상단의 Jeemusu

    답변

    8

    세션을 삭제 한 후에 세션을 다시 시작해야 할 수 있습니다.sess_destory()에 전화 한 후이 추가

    시도 :

    $this->session->sess_create()

    는 또한 세션을 파괴 피할 수 있고, unset() 값 당신은 제거하고 싶습니다.

    +1

    제무 스 도움에 감사드립니다. 또한 리디렉션 전에 동일한 파일 내에서 flashdata를 호출하면 작동하지 않을 수 있습니다. – earth2jason

    관련 문제