【问题标题】:Codeigniter redirect() doesnt work in Opera browserCodeigniter 重定向()在 Opera 浏览器中不起作用
【发布时间】:2013-01-11 09:35:57
【问题描述】:

我基本上做的是:

else
{
    // redirect to home/login
    redirect('home/login');
    return null;
}

它似乎适用于所有主流浏览器,但不适用于 Opera。我找不到问题。也许你们知道,我怎么能解决这个问题?提前谢谢你。

解决方案 重新安装并重置为默认设置修复了该错误。好像我有一些奇怪的重定向配置。

【问题讨论】:

  • Opera 到底发生了什么?还发回了哪些标头?
  • 我认为在运行 redirect() 之前正在输出内容。如果您在 index.php 中启用 error_reporting(E_ALL),您是否会收到类似于“标头已发送”的错误?

标签: php codeigniter redirect header opera


【解决方案1】:

尝试使用 PHP 标头:

header("Location:your/site/url/home/login");
exit;

【讨论】:

  • 我修改了ans试试
【解决方案2】:

我认为它应该通过提供完整的网址来工作。
试试这个:

别的 { // 重定向到主页/登录 重定向(base_url()。'home/login'); 出口(); }

【讨论】:

  • 我昨天和今天尝试了所有可能的方法.. 没有任何效果,也许我有一些砖砌的歌剧配置?
  • 你的歌剧版本是多少?你能告诉我们吗?
  • 重新安装后,它的工作原理应该是这样...好像我有一些奇怪的重定向错误,我通常不使用 Opera 作为浏览器.. 仅用于测试。
【解决方案3】:

CodeIgniter 的 redirect(..) 方法支持两种重定向模式(location 发送回 Location: 标头,refresh 输出刷新标签)。

默认情况下(您正在使用的那个)它使用location,它应该可以正常工作,但仅在您之前没有向浏览器输出任何内容的情况下(忽略输出缓冲)。

如果一切都失败了,您可以随时尝试使用refresh 模式,如下所示:

redirect('/home/login', 'refresh');

【讨论】:

    【解决方案4】:

    PHP 中的位置标头函数需要使用完整的绝对 URL。与相关浏览器一起工作的浏览器不遵守规范,他们只是在做他们所做的,因为他们对他们认为你想要实现的目标做出假设。

    将 URL 更改为绝对 URL,看看是否可以解决问题。

    【讨论】:

      【解决方案5】:

      解决方案

      重新安装并重置为默认设置修复了该错误。好像我有一些奇怪的重定向配置。

      【讨论】:

        【解决方案6】:

        使用服务器端重定向。对于 php,它看起来像这样:

        <?php
        /* This will give an error. 
         * Note the output above, which is before the header() call */
        
        header('Location: http://www.example.com/');
        exit;
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-11
          • 1970-01-01
          • 1970-01-01
          • 2011-12-07
          • 1970-01-01
          • 2021-09-07
          • 2021-11-30
          相关资源
          最近更新 更多