3
如果我忽略302,我看到redirect()
停止輸出,但header()
沒有。 redirect()
使用header()
來設置302響應。不同的行爲,相同的功能。是什麼賦予了?爲什麼相同的重定向功能給我不同的行爲
一些背景:我正在用CodeIgniter構建一個網站,我正在玩網站應該如何處理客人和成員。
擴展CI核心:
class MY_Controller extends CI_Controller {
if (! $authenticated) redirect('/login');
}
現在控制器:
class Members_only extends MY_Controller {
function index()
{
// Display members only content
}
}
後來我想,如果愛麗絲(未經驗證的訪問者)忽略了302迴應是什麼?她可以在重定向之後看到其他內容嗎?所以我測試了它,現在我完全困惑。有兩種功能可用於發送302重定向。
header('Location: http://mywebsite.com/login', TRUE, 302);
而且從CI的網址助手:
redirect('/login');
下面是它看起來像從裏面:
function redirect($uri = '', $method = 'location', $http_response_code = 302)
{
if (! preg_match('#^https?://#i', $uri))
{
$uri = site_url($uri);
}
switch($method)
{
case 'refresh' : header("Refresh:0;url=".$uri);
break;
default : header("Location: ".$uri, TRUE, $http_response_code);
break;
}
exit;
}
site_url()
正在恢復「http://mywebsite.com/login 」。
有人能指出我在這裏失蹤了什麼嗎?
我正要回答我自己的問題了。我怎麼錯過了那個出口,我不知道... – Rob
碰巧是我們最好的:) –