CodeIgniter 3重定向功能不起作用

时间:2015-11-13 04:48:32

标签: php codeigniter redirect

我正在重新编码和更新我的CMS我已经在CI2工作到CI3,而对于我的生活,我无法让我的重定向功能在CI3上为我工作。

在重新设计我的模型之外,到目前为止,我的代码与我的CI2代码完全相同。最初我怀疑我的布局挂钩是罪魁祸首,但我完全禁用了他,我仍然没有到达任何地方。

public function login ()
{
    //var_dump(logged_in());
    //if (logged_in())
        redirect('/user/');
}

上面是我的用户控制器的整个登录功能。为了找出这个问题,我已经删除了所有其他代码。我甚至评论过if声明,认为它甚至可能是罪魁祸首。不。

我的logged_in()函数返回TRUE或FALSE,具体取决于我的用户会话中设置的某些内容。这似乎运作正常。据我所知,我的配置设置看起来不错。我有自动加载的URI帮助程序,其他URI帮助程序方法正常运行。

现在为了奇怪的部分。当我访问/ user / login时,不仅我的页面没有重定向,如果我在重定向之前取消注释var_dump()(返回true),并重新评论它,页面不会更新,并且无论如何,我的屏幕上都有bool(true)。如果对var_dump进行了评论,并且我向users/login打开了一个新标签,则它根本不会加载任何内容,而只是挂起作为新标签。

编辑:我忘了提及当我使用'refresh'标志(redirect('/user/', 'refresh');)时,这只是带我到about:空白页面。

编辑#2 :我已将CI3文件复制到新的“项目”中,甚至那些不会使用内置的Welcome_Message视图/控制器组合重定向。

3 个答案:

答案 0 :(得分:5)

通过大量的反复试验,我发现了自己的问题。当我执行var_dump(base_url)时,我发现我是$_SERVER['SERVER_ADDR'],因为我在本地工作,那就是:: 1。我学到的是base_url不像CI2那样工作。 Sadpanda。

Base_url配置变量设置不正确。在config/config.php我的base_url使用单引号设置。允许CI3猜测协议,默认为$_SERVER['SERVER_ADDR'],因为我在本地工作,所以会返回::1。此外,当我将变量设置为'http://localhost/supersecretname'时,使用单引号会弹出与使用自动SERVER_ADDR

时完全相同的问题

通过一些睡眠剥夺的奇迹,我在这里尝试了许多不同的值,并且在某些时候我从单引号切换到双引号。

因此,找到了解决方案。

$config['base_url'] = "http://localhost/supersecretname";

答案 1 :(得分:2)

添加ob_start();到控制器

<?php
ob_start();
defined('BASEPATH') OR exit('No direct script access allowed');

class Cart extends CI_Controller {
 // code here

}

答案 2 :(得分:0)

在重定向功能中添加base_url()

 redirect(base_url().'user', 'refresh');