리디렉션 한 번만 리디렉션 한 후 set_flashdata가 바로 작동하지 않습니다.리디렉션 후 CodeIgniter, set_flashdata가 작동하지 않습니다.
저는이 프로세스에서 하나의 컨트롤러를 사용합니다 - 프로파일 러 컨트롤러. 회원 확인 프로세스를 처리하고 리디렉션의 로그인 페이지도 표시합니다.
이 세션 set_flashdata ('토픽', 'NewMember가')
리디렉션 ("로그인")
경로를 [ '로그인'= '프로파일 : 프로세스는 다음과/로그인의 '
주제 = $이 세션 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이 설정되지 않았습니다.
위에서 알 수 있듯이 플래시 데이터 가져 오기 기능을 컨트롤러 기능 시작 부분으로 이동하여 데이터가 손상 될 수있는 항목을 무시합니다.
만약'echo $ this-> session-> flashdata ('topic'); die();'를 사용하여 그것을 디버그하려고한다면 어떤 데이터를 얻는가?'confirmMember() {}'또한 작동하지 않는 플래시 데이터입니까? 대신 세션 변수를 사용하면 작동합니까? – Jeemusu
아니요. 신속한 회신에 감사드립니다. – earth2jason
컨트롤러 상단의 php 태그 바로 다음에'session_start();'가 없으면 추가하십시오. – Jeemusu