Internet Explorer中的Codeigniter登录,会话和重定向问题?

时间:2009-11-09 20:57:55

标签: session codeigniter redirect

我仍然是代码点火器的新手,我在登录系统工作时遇到了问题。

使用Firefox时,登录始终有效。登录始终适用于某些IE7浏览器,但在其他IE7浏览器上始终失败。

在跟踪代码时,我看到models / redux_auth_model.php确实成功验证了用户,它将用户信息写入$ this-> session-> set_userdata()并将其重定向到成员页面我的选择。这是代码:

public function login($identity = false, $password = false)
{
            $identity_column = $this->config->item('identity');
            $users_table     = $this->tables['users'];

            if ($identity === false || $password === false || $this->identity_check($identity) == false)
            {
                return false;
            }

            $query = $this->db->select($identity_column.', email, password, group_id')
                           ->where($identity_column, $identity)
                           ->where('active', 'Active')
                           ->limit(1)
                           ->get($users_table);

        $result = $query->row();

        if ($query->num_rows() == 1)
        {
            //$password = $this->hash_password_db($identity, $password);

           if (!empty($result->activation_code)) { return false; }

                if ($result->password === $password)
                {
                    $this->session->set_userdata($identity_column,  $result->{$identity_column});
                    $this->session->set_userdata('email',  $result->email);
                    $this->session->set_userdata('group',  $result->group_id);
                    return true;
                }
        }

        return false;
}

我在IE7和FF中都进行了$ this->会话的变量转储,并确认在重定向之前所有用户数据都是完整的。会话有我的电子邮件信息,组信息和$ identity_column信息。

但是,在重定向之后,某些IE7浏览器上的会话数据为空,这就是为什么CI不断将我引导出系统的原因。它在其他IE7浏览器上完好无损,并且在Firefox中始终完好无损。

为什么会话数据会依赖浏览器?

有关如何进一步排除故障的任何想法?我很困惑......

12 个答案:

答案 0 :(得分:7)

Codeigniter数据库会话类是一个令人沮丧的问题,最后我使用了这里的插件替换来使用本机会话:https://github.com/EllisLab/CodeIgniter/wiki/Native-session

答案 1 :(得分:6)

我在IE中使用CI Session时遇到了同样的问题。然后我在控制器构造函数中使用下面的标题,它适用于我。

以下是标题:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

答案 2 :(得分:4)

我在浏览器模式下使用IE8时遇到了同样的问题。我发现问题在于匹配用户代理。在会话数据库中,它将useragent保存为IE7,但是从cookie中获取IE8。我已设置$config[sess_match_useragent] = FALSE,问题就解决了。

答案 3 :(得分:3)

会话类在我的几个项目中运行良好,包括IE6 / 7/8支持(包括多个CI版本)。在上面粘贴的代码之外,有一些可能导致这种情况:

  1. 从基类(或您班级代码中的其他位置)调用$this->session->sess_create();会重置您的会话。
  2. 尝试将set_userdata个调用与一个调用相结合,然后将其传递给一个数组。
  3. 确保您的数据中没有任何意外字符(这可能会导致某些浏览器出现问题)。
  4. 确保配置中的会话类设置不是每次请求都在cookie上滚动。
  5. 或者,考虑替代会话类,如Native sessions

答案 4 :(得分:2)

这是某人为第三方修复的问题,它修补了会话控制器。让我把它挖出来。我已经在我的codeigniter设置中使用它,因为它是第一次被注意到。

此问题是IE7 / IE8特有的重定向或帧。

修改

这是我之前找到的参考资料,它帮助我解决了IE问题。希望这是令你头疼的原因: http://www.philsbury.co.uk/blog/code-igniter-sessions

答案 5 :(得分:2)

浏览器存在问题。我把它放在构造函数中的MY_Controller中:

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");

例如:

if($this->uri->segment(1)=='admin') header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");

答案 6 :(得分:2)

当我们遇到这个问题时,我们正在开发一个涉及Facebook标签的应用程序。我们尝试了以上无济于事。这是我们发现的:

  1. IE隐私设置似乎必须是中等或更低
  2. 如果您运行的是网页应用,请确保两个网址中都包含HTTPS协议
  3. 另外,请查看有关Cookie的精简隐私权政策。

答案 7 :(得分:1)

配置文件应用程序config.php

// 'cookie_secure' =  Cookies will only be set if a secure HTTPS connection exists. 
$config['cookie_secure']    = FALSE;

答案 8 :(得分:1)

我通过使用本机php会话而不是cookie(在php本地会话中存储codeigniter session_id)来解决这个问题。

您可以在此处抓取图书馆:https://github.com/staskus/codeigniter-2.--native-session

只需将MY_Session.php文件复制到应用程序/库

即可

答案 9 :(得分:0)

问题是IE拒绝了CI试图设置的cookie。本机会话是一种方式,但是如果您想继续使用CI会话,我已成功完成以下故障排除:

  • 检查config.php中的$ config ['cookie_domain']设置是否为空
  • 从$ config ['sess_cookie_name']中删除下划线,例如将“ci_session”更改为“cisession”
  • 检查服务器时间是否正确

答案 10 :(得分:0)

我讨厌IE!

现在正在为我们的控制器提供P3P解决问题:

class Chupacabra extends CI_Controller {


    function __construct() {
        parent::__construct();
        header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');


    }

答案 11 :(得分:0)

当我尝试使用登录页面在CodeIgnitor中工作时,这个问题困扰着我。会议不会保存。

事实证明,这是由于我从FREEDNS创建的域名包含下划线(_)。我使用句点(.)重命名了域名,并还原了本文中建议的所有代码更改,而Voila,它的工作原理。

感谢您对此页面上的所有评论和贡献,因为他们确实让我走上了调查这一重点的道路。