【问题标题】:Codeigniter cannot refresh page after session destroy and direct会话销毁和引导后 Codeigniter 无法刷新页面
【发布时间】:2013-10-24 07:10:50
【问题描述】:

我有一个用代码点火器编写的 PHP 程序,需要你的帮助!已经尝试了3周!

我有 htaccess mod 重写以制作 http://www.sampleurl.com/controllername 而不是 http://www.sampleurl.com/index.php/controllername

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$0 [PT,L] 
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.

    ErrorDocument 404 /index.php
</IfModule> 

我有一个 Dashboard 控制器(目前用于测试会话。)

public function index()
    {
            $is_logged_in = $this->session->userdata('fb_session');

            $data = array(
                'fb_data' => $is_logged_in,
            );

            if (!isset($is_logged_in) || $is_logged_in != true){
                redirect('/error');
            }


        }

以下是假设终止当前会话并重定向到仪表板页面的功能。

$('#logoutbtn').click(function(){
         $.ajax({
            type:"POST",
            url: "/fbcontroller/killsession",
            datatype: "json",
            success: function(){
                alert("Logout");
            }
         });
    });


 public function killsession(){
           $this->session->sess_destroy();
            redirect('/dashboard');
        }

问题 1:当我从 1 个控制器中的功能重定向到另一个控制器时,重定向在此处失败。萤火虫没有定向到仪表板,而是显示 404 错误,找不到页面。并在响应中显示 /error 页面的所有 HTML 代码。这是否意味着重定向有效?如果是,为什么浏览器不显示?

问题 2:会话被破坏,但即使我刷新 (F5) 时登录页面仍然存在。

【问题讨论】:

  • 我怀疑是 htaccess 导致了所有这些问题。
  • 供您参考,session_destroy();通过销毁会话解决了这个问题,当我进行 F5 刷新时,它会注销用户。但是,重定向后会话在那里很奇怪。

标签: php .htaccess codeigniter codeigniter-2 codeigniter-url


【解决方案1】:

对于 htaccess 我建议:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

并且知道,当您终止会话时,CI 将在您的下一个页面加载时创建一个新的 1(在您的情况下是重定向).. 会话不只是用于用户登录。

别忘了在 app/config/config.php 设置

$config["index_page"] = '';

【讨论】:

  • 嗨 Svetlio,它不能解决 POST ../index.php/fbcontroller/killsession 404 Not Found 650ms 在控制台中的问题。请用你的答案启发我。 :)
  • 那个 killsession 动作在哪里?在 FB 控制器上?
  • 是的,它会杀死从一个类创建的会话。
  • 如果你设置了正确的httaccess,你需要在config.php中设置index_page为空。目前 index.php/ 不应该出现在您的网址中:)
  • 我根据您的命令更改了 ajax URL,但我仍然收到相同的控制台错误。我错过了什么?很抱歉打扰您太多! :(
猜你喜欢
  • 2017-11-19
  • 2012-02-23
  • 2016-11-19
  • 2016-04-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多