2015-01-05 4 views
1

$this->session->set_flashdata('success')을 사용하려고했지만 다른 기능으로 리디렉션 한 후에 작동하지 않습니다. 나는이 프로그램을 실행하면CodeIgniter 세션 set_flashdata가 작동하지 않습니다.

<?php 
class Home extends CI_Controller{ 
    public function __construct(){ 
     parent::__construct(); 
     $this->load->helper(array('url','form'); 
     $this->load->library(array('session','template','form_validation'); 
    } 
} 

/* My another function for form_validation and etc */ 

public function login(){ 
    $this->set_login_rules(); 
    if($this->form_validation->run()){ 
     /* inserting data to database */ 
     $this->session->set_flashdata('welcome'); 
     redirect('home/welcome'); 
    } 
    $this->template->display('home'); 
} 

public function welcome(){ 
    if($this->session->flashdata('welcome') !== FALSE){ 
     echo "<script>alert('Flashdata Success! Welcome!</script>"; 
    } 
    else{ 
     echo "<script>alert('Flashdata Failed! Go Away!');</script>"; 
    } 
} 

, 그것은 Flashdata Failed! Go Away! 경고가 하지만 데이터베이스에 삽입 할 로그인 데이터가 테이블에 추가됩니다 보여줍니다 여기 내 코드입니다. 한 가지 더, 가끔 flashdata이 작동 중입니다. 10 회 시도에서, Flashdata Failed! Go Away!을 표시하면 8-9이 시도합니다. 아무도 왜 이런 일이 일어 났는지 말해 줄 수 있습니까? 어떻게 해결할 수 있습니까?

답변

1

당신은 실제로 그래서, 몇 가지 값을 제공해야합니다

$this->session->set_flashdata('welcome', true); 

또는 예를 들어 전체 메시지를 사용할 수 있습니다 :

$this->session->set_flashdata('welcome'); 

이어야

$this->session->set_flashdata('welcome', 'Successfully logged in'); 

등 ...

여기 flashdata에 대한 자세한 정보 : CodeIgniter의 문서에서 https://ellislab.com/codeigniter/user-guide/libraries/sessions.html

+0

'$ message'를 추가하려고했지만 여전히'Flashdata Failed! 어서가! '. 다음과 같은 코드를 생성합니다 :'$ message-> '내 사이트에 오신 것을 환영합니다!''와'flashdata'는 다음과 같은 코드를 생성합니다 :'$ this-> session-> setflashdata ('welcome', $ message)' ')'echo $ this-> sesion-> flashdata ('welcome');과 같은 플래시 데이터를 echo하려고 시도하고 아무것도 표시하지 않습니다. –

+0

유효성 검사를 거치지 않고 뷰 자체에서 시작 페이지로 리디렉션 할 수 있습니까? 유효성 검사가 실패하면 어떻게됩니까? 당신은 그걸 결코 지정하지 않았습니다. – Shomz

+0

실제로'login()'form_validation-> run() 코드를 사용하는 코드가 있습니다. form_validation이 실패하면 다음 코드를 사용하여 홈 페이지를 엽니 다.'$ this-> template-> display ('home')'. 내 업데이트를 확인하십시오. –

0

:

CodeIgniter supports "flashdata", or session data that will only be available for the next server request, and are then automatically cleared. 

귀하의 문제가 리디렉션 때, 과정이 flashdata을 삭제하는 것이 더 이상의 요청이 소요 될 수 있습니다.

일반 세션 또는 쿼리 매개 변수를 사용하십시오.

관련 문제