2015-10-15 83 views
0

我不断收到此错误忽略的session_start:笨 - 一个会议已经开始了 - ()

A PHP Error was encountered

Severity: Notice

Message: A session had already been started - ignoring session_start()

Filename: Session/Session.php

Line Number: 140

在页面上使用此代码:

<body> 
<p><a href="<?php echo site_url("Login_controller")?>">LOGIN</a><p> 
<?php echo $this->session->userdata('Username'); ?> 
</body> 

没有在session_start()上这一页。

我能想到的唯一的事情已经引起了这是在autoload.php我已经做到了这一点:

$autoload['libraries'] = array('database','session'); 

是什么原因造成这个错误?

编辑:登录控制器

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Login_controller extends CI_Controller { 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('User_model','',TRUE); 
    } 


    function index() //Default function that is run when this controller is called.// 
    { 
     $this->load->helper(array('form')); 
     $this->load->view('Login_view'); 
    } 


    function Login() 
    { 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('Username', 'Username', 'trim|required'); 
     $this->form_validation->set_rules('Password', 'Password', 'trim|required|callback_CheckDatabase'); 

     if($this->form_validation->run() == FALSE) 
     { 
      $this->load->view('Login_view'); //Reloads the login view with validation errors if the login attempt is unsuccessful.// 
     } 

     else 
     { 
      redirect('Home_controller'); //Redirect to the homepage on successful login attempt.// 
     } 
    } 


    function CheckDatabase($password) //This function is only run when password validation is correct.// 
    { 
     $username = $this->input->post('Username'); //Sets the username as a $username.// 
     $result = $this->User_model->Login($username, $password); 

     if($result) 
     { 
      $sess_array = array(); 
      foreach($result as $row) 
      { 
       $sess_array = array(//Makes an array of the data to be stored in the session.// 
       'UserID' => $row->UserID, 
       'Username' => $row->Username 
       ); 

       $this->session->set_userdata('logged_in', $sess_array); //Sets $sess_array as the session.// 
      } 

      return TRUE; 
     } 

     else //Ran if the username or password aren't matched in the CIUsers database. Returns error message.// 
     { 
      $this->form_validation->set_message('CheckDatabase', 'Invalid login details.'); 
      return false; 
     } 
    } 
} 
?> 
+0

发表您的控制器以及 –

+0

编辑帖子包含控制器 – user3574766

回答

1

更改为

$this->session->set_userdata('logged_in', $sess_array); 

$this->session->set_userdata($sess_array); 

添加笨会议

例0

方法01

$newdata = array(
        'username' => 'johndoe', 
        'email'  => '[email protected]', 
        'logged_in' => TRUE 
       ); 
//$newdata = array(
//     'UserID' => $row->UserID, 
//     'Username' => $row->Username, 
//     'logged_in' => TRUE 
//    ); 

$this->session->set_userdata($newdata); 

方法02

$this->session->set_userdata('some_name', 'some_value'); 
// $this->session->set_userdata('my_name', 'user3574766'); 
+0

我已经试过了,但对我没有工作。 – Isuru

+0

没有工作我是指? –

0

当你的php.ini文件有session.autostart开启时发生此问题。你需要通过关闭这个功能:

  1. 编辑你的php.ini文件,并将其设置为关闭 - 或联系您的网站托管服务提供商,为您

  2. 做到这一点放置一个的.htaccess文件与下面的值你的web目录的根目录: 的php_flag session.auto_start 0

希望这会有所帮助。