我已使用用户名和密码登录它将成功登录的页面,该页面包含其他页面的链接,但我将会话变量设置为会话变量,但会说会话不可用。
verifylogin.php
<?php
class VerifyLogin extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('login/user','',TRUE);
}
function index()
{
//This method will have the credentials validation
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE)
{
//Field validation failed. User redirected to login page
$this->load->view('index');
}
else
{
//$this->load->view('home_view');
//Go to private area
$password = $this->input->post('password');
if($this->check_data($password))
{
redirect('login_f/home', 'refresh');
}
else
{
$data['username'] = $this->input->post('username');
$data['rannum'] = $this->send_confirm_email();
$this->load->view('/login/verify_code2',$data);
}
}
}
function check_database($password)
{
//Field validation succeeded. Validate against database
$username = $this->input->post('username');
$this->load->model('login/user');
//query the database
$result = $this->user->login($username, $password);
$value = $this->user->user_type($username);
if($result)
{
if($value == 0)
{
$sess_array = array();
foreach($result as $row)
{
$sess_array = array(
//'id' => $row->id,
'username' => $row->username
);
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
}
}
else
{
$this->form_validation->set_message('check_database', 'Invalid username or password');
return false;
}
}
function check()
{
$this->load->view('index');
}
}
?>
home.php
<?php
session_start(); //we need to call PHP's session object to access it through CI
class Home extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
if($this->session->userdata('logged_in'))
{
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$this->load->view('login/home_view', $data);
}
else
{
//If no session, redirect to login page
redirect('login_f/login', 'refresh');
}
}
function logout()
{
$this->session->unset_userdata('logged_in');
session_destroy();
redirect('login_f/home', 'refresh');
}
}
?>
答案 0 :(得分:1)
用户是否有可能被重定向到其他服务器?该会话仅在同一域中可用。来自PHP手册:
访问您网站的访问者会被分配一个唯一ID,即所谓的会话ID。这可以存储在用户端的cookie中,也可以在URL中传播。
会话支持允许您在$ _SESSION超全局数组中的请求之间存储数据。当访问者访问您的站点时,PHP将自动检查(如果session.auto_start设置为1)或您的请求(显式通过session_start()或通过session_register()隐式检查)是否已随请求发送特定会话ID。如果是这种情况,则重新创建先前保存的环境。
我使用了this manual,也许它可以帮助您找到错误。
如果一切正常,还有一件事要检查是否正在创建会话文件。可能存在权限问题。要检查这一点,请创建一个页面:
<?php phpinfo(); ?>
确保session.save_path
目录存在且可写,如果要自动启动会话,则session.auto_start
设置为on。您也可以通过运行命令session_start()
;
在php.ini
文件中设置它(通常位于/etc/php.ini中):
session.auto_start = 1
更改会话文件夹,更改session.save_path
:
session.save_path = "/path/to/session_files"