例如,在這裏:在PHP中的「header()」函數之後是否執行了命令?
<?php
session_start();
if (!isset($_SESSION['is_logged_in'])) {
header("Location: login.php");
die();
}
?>
<Some HTML content>
是die()
真的有必要嗎?
例如,在這裏:在PHP中的「header()」函數之後是否執行了命令?
<?php
session_start();
if (!isset($_SESSION['is_logged_in'])) {
header("Location: login.php");
die();
}
?>
<Some HTML content>
是die()
真的有必要嗎?
在這裏真的需要die()嗎?
這是:否則,客戶端仍然會在響應正文中獲取HTML代碼。標頭請求客戶端終止並轉到新頁面,但它不能強制它。
客戶端總是可以繼續收聽響應,並接收之後輸出的所有內容,這是一個致命的安全漏洞,例如,在保護登錄區域中的敏感數據時。
是的。簡單地生成標題,即使是Location
標題,也不會終止當前腳本。 HTML輸出將在例如一個數據包嗅探器。
我發現:http://www.figured-it-out.com/figured-out.php?sid=181
所以根據這一點,似乎有些瀏覽器只是停止接收HTML內容,並直接重定向到新的頁面,其他瀏覽器,如IE瀏覽器仍等待,直到頁面加載準備就緒。
是的,需要die()
。對header("Location: some-location.php")
的調用將指定的標頭(本例中爲302重定向)發送到瀏覽器;但它不會終止腳本。如果重定向語句之後的行包含可能無意中執行的PHP代碼,則這變得更加重要。因此,如果想要發送重定向報頭並中止任何進一步處理,您必須調用die
,exit
,return
或任何其他類似的構造。
請注意,在發送重定向頭之後,可以執行進一步處理。