在PHP Codeigniter中重定向

Ale*_*duc 2 php redirect codeigniter

我在使用Code Igniter时遇到了一些问题,我觉得有些东西我不明白,因为我无法让我的重定向和标题工作.情况如下:

输入站点时,将调用默认的"home"控制器.

    public function initialize()
{
    printf("CONSTRUCTION OF HOME CONTROLLER - \n");
     //   print_r($_SESSION);
        //TODO : CONSIDER CREATING A LIBRARY TO AVOID WRITING THIS OFTEN. NOT

    // SESSION TROLLING DETECTION
        if( isset($_SESSION['banana']))
        {
            echo "SPLITTING THE TRUTH";
        }   

   // GETTING AS SERIOUS AS GREG     
        if( !isset($_SESSION['username']))
        {
            printf("USERNAME IS NOT SET. SETTING UP THE LOGIN PAGE. \n");
            redirect('home_invite');
        }
        else
        {
            $this->load->view('welcome_message');
        }
}

public function index()
{
    //INITIALIZING THE PATH USED FOR THIS NAVIGATION
    printf("TROLLING THE BEGINNING OF THIS CONTROLLER HOME - ");
     $this->initialize();
     printf("TROLLING THE END OF THIS CONTROLLER  HOME - ");
   //TODO : CONSIDER CREATING A LIBRARY TO AVOID WRITING THIS OFTEN
}
Run Code Online (Sandbox Code Playgroud)

索引调用初始化谁验证用户是否已经有一个包含用户名的会话变量.如果是这种情况,我们将继续检查他的权限级别等,并加载相应的视图.那不是问题.

如果会话未启动,我想加载"登录"视图,此处称为"home_invite".我想将他重定向到那个页面.但是,如果我使用此代码,页面将显示404错误.

如果我使用$this->load->view('home_invite')它,它有效,但我不明白,我觉得这不是我想要它做的.

为什么重定向不能在这种情况下工作?

Ben*_*rne 5

使用该redirect()方法重定向到URL.因此,您需要传递一个完整的URL(因为它使用header()根据RFC1 for HTTP1.1需要完整URL的功能).

这意味着你可以使用

redirect(site_url('home_invite'));
Run Code Online (Sandbox Code Playgroud)

这会将您的用户重定向到http://www.yoursite.com/home_invite

这意味着您必须拥有一个名为home_invite的控制器,因为您无法从URL加载视图.同样,您可以在现有控制器中创建一个方法,并使用routes.php文件将/ your_controller/home_invite伪装成/ home_invite

该site_url()函数也是您已经包含使用的URL帮助程序的一部分redirect().

如果你不想使用site_url(),你也可以像这样硬编码URL

redirect('http://www.yoursite.com/home_invite');
Run Code Online (Sandbox Code Playgroud)