2017-04-11 66 views
2

我卡在這裏,當我註冊,並希望將控制器重定向到另一個控制器顯示儀表板,那時創建的會話不能在重定向控制器上工作。這裏是我的示例代碼。當重定向到另一個控制器會話不起作用在codeigniter

我註冊控制器:

class Signup extends CI_Controller { 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->helper('url'); 
    $this->load->model('admin_model'); 
    $this->load->library('form_validation'); 
    $this->load->helper('cookie'); 
    $this->load->library('session'); 
    $this->load->library('email'); 
    $this->load->helper('string'); 
    $this->load->library('upload'); 
} 

public function index() { 
    if(!$_POST) { 
     $this->load->view('web_pages/signup/signup'); 
    } else { 
      $insert_data = array(
      'firstName' => $signup_data['firstName'], 
      'lastName' => $signup_data['lastName'], 
      'email' => $signup_data['email'], 
      'password' => $signup_data['password'], 
      'phoneNo' => $signup_data['phoneNo'], 
      'userType' => $signup_data['userType'], 
      'image' => $image, 
      'createDate' => date('Y-m-d H:i:s') 
      ); 
      $this->db->insert('users', $insert_data); 
      $this->session->set_userdata(array(
        'user_id'  => $insert_data['email'], 
        'userType'  => $insert_data['userType'], 
        'status'  => TRUE 
       )); 

      redirect('dashboard'); //another controller. 
     } 
    } 
} 

下面是我儀表控制器

class Dashboard extends CI_Controller { 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->helper('url'); 
    $this->load->model('admin_model'); 
    $this->load->library('form_validation'); 
    $this->load->helper('cookie'); 
    $this->load->library('session'); 
    $this->load->library('email'); 
    $this->load->helper('string'); 
    $this->load->library('upload'); 
} 

public function index() { 
    print_r($_SESSION); die; 
} 

} 

儀表盤上方控制器不顯示任何信息。

請幫幫我。提前致謝。

+0

條目是否您的任何數據插入到了數據庫?我認爲'$ signup_data'不會有任何數據。使用'$ this-> input-> post('email')' – theEUG

+0

yes @theEUG你是對的'$ signup_data'沒有定義,所以它會變成空白,然後會話值也變成空白,原因是會話不工作 – ImBS

+0

我試着用數據,我能夠在第一個控制器上打印會話值,但我沒有得到下一個控制器。 – saddam

回答

1

使用

public function index() { 
$this->load->library('session'); 
print_r($this->session->all_userdata()); 
} 

請與下面PARAMS配置文件打印在會話中的數據

$config['sess_expiration'] = 8600; 
$config['sess_match_useragent'] = FALSE; 

而且檢查Cookie配置

$config['cookie_prefix'] = ""; 
$config['cookie_domain'] = ""; 
$config['cookie_path'] = "/"; 

請在autoload.php會話

$autoload['libraries'] = array('session'); //in autoload.php 
+0

我試過了,但沒有打印我在第一個控制器中設置的會話。 – saddam

+0

好吧,嘗試打印之前,你重定向。檢查會話是否有數據。 –

+0

是的,它顯示會話數據,但我想要在另一個控制器上打印會話數據。 – saddam

0

看到這個更新的代碼段

if(!$_POST) { 
     $this->load->view('web_pages/signup/signup'); 
    } else { 
      $insert_data = array(
      'firstName' => $this->input->post('firstName'), 
      'lastName' => $this->input->post('lastName'), 
      'email' => $this->input->post('email'), 
      'password' => $this->input->post('password'), 
      'phoneNo' => $this->input->post('phoneNo'), 
      'userType' => $this->input->post('userType'), 
      'image' => $image, 
      'createDate' => date('Y-m-d H:i:s') 
      ); 
      $this->db->insert('users', $insert_data); 
      $this->session->set_userdata(array(
        'user_id'  => $this->input->post('email'), 
        'userType'  => $this->input->post('userType'), 
        'status'  => TRUE 
       )); 

      redirect('dashboard'); //another controller. 
     } 
    } 

然後,只需訪問會話數據

echo $this->session->userdata('firstname'); 
+0

但是在哪裏創建名稱爲'firstname'的會話。 – saddam

+0

@saddy您需要將我的示例中的變量名稱替換爲要訪問的值的名稱。所以如果你想使用userType,你可以使用$ this-> userdata('userType'); – theEUG

+0

@ theEUG我經歷了這個仍然不工作。 – saddam

相關問題