CodeIgniter 3重定向功能不工作


CodeIgniter 3 redirect function not working

我正在重新编码和更新我的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选项卡,它就不会加载任何内容,只是作为一个新选项卡挂起

编辑:我忘了提到,当我使用"刷新"标志(redirect('/user/', 'refresh');)时,它只会将我带到一个大约:空白的页面。

编辑#2:我已经将CI3文件复制到一个新的"项目"中,即使是那些文件也不会使用内置的Welcome_Message视图/控制器组合进行重定向。

添加ob_start();至控制器

<?php
ob_start();
defined('BASEPATH') OR exit('No direct script access allowed');
class Cart extends CI_Controller {
 // code here
}

经过大量的尝试和错误,我发现了我的问题。当我执行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";

在重定向函数中添加base_url()

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

redirect('Admin/index')直到我从函数中删除了echo语句和print_r才工作。