CodeIgniter:cookie,会话,太多重定向


CodeIgniter: cookies, sessions, too many redirects?

我使用 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等。