我一直收到这个错误:
遇到PHP错误
严重性:注意
消息:会话已经启动 - 忽略session_start()
文件名:Session / Session.php
行号: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 :(得分:1)
将此更改为
$this->session->set_userdata('logged_in', $sess_array);
此
$this->session->set_userdata($sess_array);
方法01
$newdata = array(
'username' => 'johndoe',
'email' => 'johndoe@some-site.com',
'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');
答案 1 :(得分:0)
当您的PHP.INI文件已打开session.autostart时,会发生此问题。你需要通过以下方式关闭它:
编辑您的PHP.INI文件并将其设置为关闭 - 或联系您的网络托管服务提供商为您执行此操作
使用以下值将.htaccess文件放在网络目录的根目录中: php_flag session.auto_start 0
希望这会有所帮助。