我們可以利用header()函式去設定網頁的標頭,來達到我們要的目的,但是要注意,在header()之前不能有任何網頁資料輸出(例如:echo文字到網頁上),因為網頁標頭一定要放在所有網頁資料的最前面...
一、轉頁轉址標頭:
header('Location:http://www.google.com.tw');
二、重新整理標頭:(五秒後)
header('Refresh:5;url=http://www.google.com.tw');
三、內容類型標頭:(純文字)
header('Content-Type:text/plain');
註:瀏覽器會將網頁程式碼以純文字型態呈現,而不在是HTML編碼
四、身分驗證標頭:(防護區域名稱假設為myzone)
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate:Basic realm="myzone"');
exit('<h3>Sorry</h3>');
註1:Basic realm就是防護區域,當正確的使用者名稱和密碼成功地被輸入,瀏覽器就會記住它們,並且不會在相同防護區域中,再為後續的認證標頭展示認證視窗。
註2:exit()它只會在使用者點擊認證視窗的Cancel按鈕時,才會被呼叫。
最基本的範例:
<?php
$username = 'rock';
$password = 'roll';
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
($_SERVER['PHP_AUTH_USER'] != $username) || ($_SERVER['PHP_AUTH_PW'] != $password)) {
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Guitar Wars"');
exit('<h3>Sorry</h3>');
}
?>
備註:
1. header()之前不能有輸出 例如:echo,否則會出現錯誤。
2. header並不是立即執行,例如:
<?php
header("Location: http://www.google.com.tw");
sleep(1);
header("Location: http://www.yahoo.com.tw");
?>
實際上是會導到yahoo,所以,應養成 header Location 之後接exit的習慣,避免程式錯誤。
No comments:
Post a Comment