我使用 CodeIgniter 2.2 创建了一个网站,但我在会话和 cookie 方面遇到了一些问题。
使用此配置(在应用程序/配置/中(在本地主机中一切正常:
$config['base_url'] = 'http://localhost:8888/project/';
...
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;
但是当我在我的服务器上上传网站时,当我的 CI 网站为 (domain.com/test/( 时,当我转到子文件夹时,我要么得到一个带有这些配置的ERR_TOO_MANY_REDIRECTS:
$config['cookie_domain'] = "";
$config['cookie_domain'] = ".domain.com";
出现这样的错误后,转到 domain.com/other 也不起作用。我必须退出网络浏览器才能回来。
所以我尝试了我在这里的线程上找到的另一个配置,我再也找不到了,现在它是登录进程(会话(不起作用。
$config['cookie_domain'] = str_replace("http:/","",str_replace("https://","", $config['base_url']));
用于登录的方法如下:
视图/模板/标题.php
<form method="post" action="<?php echo site_url('verifylogin/');?>">
<input type="text" size="20" name="username" placeholder="username"/><br/>
<input type="password" size="20" name="password" placeholder="password"/><br/>
<input type="submit" value="Log in"/>
<input type="hidden" name="current" value="http://<?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>" /><br/>
</form>
控制器/验证登录.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class VerifyLogin extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('users_model','',TRUE);
// does not seem to work $this->load->driver('session');
}
function index()
{
$data['title'] = 'Log in';
//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');
$this->form_validation->run();
redirect($this->input->post('current'), 'refresh');
return $data;
}
function check_database($password)
{
//Field validation succeeded. Validate against database
$username = $this->input->post('username');
//query the database
$result = $this->users_model->login($username, $password);
if($result)
{
$sess_array = array();
foreach($result as $row)
{
$sess_array = array(
'id' => $row->id,
'username' => $row->name
);
$this->session->set_userdata('logged_in', $sess_array);
$set = $this->users_model->get_settings($row->id);
$this->session->set_userdata('settings', $set);
}
return TRUE;
}
else
{
$this->form_validation->set_message('check_database', 'Invalid username or password');
return FALSE;
}
}
}
?>
尝试清除您的浏览历史记录,cookie等。