我在使用 Code Igniter 时遇到了一些问题,我觉得有些东西我不明白,因为我无法让我的重定向和 header 正常工作。情况如下:
进入站点后,将调用默认的“home” Controller 。
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
}
索引调用初始化谁验证用户是否已经有一个包含用户名的 session 变量。如果是这种情况,我们将继续检查他的权限级别等,并加载相应的 View 。这不是问题所在。
如果 session 未启动,我想加载“登录” View ,此处称为“home_invite”。我想将他重定向到该页面。但如果我使用这段代码,页面将显示 404 错误。
如果我使用 $this->load->view('home_invite')
,它可以工作,但我不明白,我觉得这不是我想要的。
为什么重定向在这种情况下不起作用?
最佳答案
使用 redirect()
方法重定向到 URL。因此,您需要向其传递一个完整的 URL(因为它使用 header()
函数,根据 HTTP1.1 的 RFC 需要一个完整的 URL。
这意味着您可以使用
redirect(site_url('home_invite'));
这会将您的用户重定向到 http://www.yoursite.com/home_invite
这意味着您必须有一个名为 home_invite 的 Controller 可用,因为您无法从 URL 加载 View 。同样,您可以在现有 Controller 中创建一个方法,并使用 paths.php 文件将/your_controller/home_invite 伪装为/home_invite
site_url()
函数也是您已包含以使用 redirect()
的 URL 帮助程序的一部分。
如果您不想使用 site_url()
,您也可以像这样对 URL 进行硬编码
redirect('http://www.yoursite.com/home_invite');
关于php - PHP Codeigniter 中的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073484/