1. php中header()作用
header的用法
標頭 (header) 是伺服器以 HTTP 協義傳 HTML 資料到瀏覽器前所送出的字串,在標頭
與 HTML 文件之間尚需空一行分隔。有關 HTTP 的詳細說明,可以參 RFC 2068 官方文件
(http://www.w3.org/Protocols/rfc2068/rfc2068)。在 PHP 中送回 HTML 資料前,需先
傳完所有的標頭。
注意: 傳統的標頭一定包含下面三種標頭之一,並只能出現一次。
Content-Type: xxxx/yyyy
Location: xxxx:yyyy/zzzz
Status: nnn xxxxxx
在新的多型標頭規格 (Multipart MIME) 方可以出現二次以上。
使用範例
範例一: 本例使瀏覽器重定向到 PHP 的官方網站。
Header("Location: http://www.php.net";);
exit;
>?
範例二: 要使用者每次都能得到最新的資料,而不是 Proxy 或 cache 中的資料,可以使用下列的標頭
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
>?
範例三: 讓使用者的瀏覽器出現找不到檔案的信息。
header("Status: 404 Not Found");
>?
範例四:讓使用者下載檔案。
header("Content-type: application/x-gzip");
header("Content-Disposition: attachment; filename=文件名\");
header("Content-Description: PHP3 Generated Data");
?>
header重定向 就等價於替用戶在地址欄輸入url
---------------------------------
//剛好找到比較詳細的資料!
2. PHP語言解釋
Header函數的功能是輸出 HTTP 協議的標頭到瀏覽器。
//設置地址被永久的重定向
header('HTTP/1.1 301 Moved Permanently');
//轉到一個新網址,這個網址由變數$siteurl和$request_uri動態生成
header('Location: '.$siteurl.$request_uri);
還有很多其他的header,具體請查閱html手冊,以下是一些相對常用的:
範例一: 本例用來重導用戶到 PHP 的官方網站。
<?php
Header("Location: http://www.php.net");
exit;
?>
範例二: 欲讓用戶每次都能得到最新的資料,而不是 Proxy 或 cache 中的資料,可以使用下列的標頭
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
範例三: 讓用戶的瀏覽器出現找不到文件的信息。
<?php
header("Status: 404 Not Found");
?>
範例四: [email protected] (28-Apr-1999) 提供讓用戶下載文件的範例。
header("Content-type: application/x-gzip");
header("Content-Disposition: attachment; filename=some-file.tar.gz");
header("Content-Description: PHP3 Generated Data");
3. php動態頁面設置了header("Status: 404 Not Found");但返回200狀態
if($id!=1){
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
exit();
}
或者
if($id!=1){
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
exit();
}
4. 用php設置header返回404 但是頁面空白 是不是和php.ini/nginx有關
404 not found
未找到該網頁,說明此網頁已經在伺服器被刪除或被改名。在安全助手裡添加黑名單,把這個網站的網址輸入進去。不讓他彈出。
404是對NOT FOUND這種錯誤情況的一個編碼,HTTP協議的錯誤信息在不同軟體、不同的語言描述可能不同,但是其代碼是統一的,以便瀏覽器能夠正確識別和處理。
5. tp5 關於自定義404頁面的,有大神來看下嗎
1、對於存在的網頁內容由於路徑改變而導致訪問不了時,可在IIS中定義404錯誤指向一個動態頁面,在頁面裡面使用301永久重定向跳轉到新的地址,此時伺服器返回301狀態碼。2、設置404指向一個設計好的html文件,此時頁面返回的404狀態碼。現在的idc提供商基本都提供404設置的功能,直接上傳文件設置即可。在IIs中設置方法:打開IIS管理器-->點擊要設置自定義404的網站的屬性-->點擊自定義錯誤選項-->選中404頁-->選中並打開編輯屬性-->設置成URL-->URL里填寫「/err404.html」-->按確定退出再把做好的err404.html頁面上傳到網站根目錄下。此處在「消息類型」中一定要選擇「文件」或「默認值」,而不要選擇「URL」,不然,將導致返回「200」狀態碼。3、把404指向一個動態頁面,比如error.asp,如果不在頁面裡面進行設置,僅僅是返回提示的HTML代碼,將導致頁面返回200狀態碼,這是不正確的,我們可以在顯示完提示內容後,增加語句:Response.Status="404NotFound",這樣就保證頁面返回404狀態碼。4、Apache下設置404錯誤頁面。為ApacheServer設置404錯誤頁面的方法很簡單,只需在.htaccess文件中加入如下內容即可,ErrorDocument404/notfound.php。404頁面就是當用戶訪問某網站時,點擊了錯誤的鏈接時,所返回的頁面。最常見的出錯提示:404NotFound。其目的就是告訴瀏覽者其所請求的頁面不存在或鏈接錯誤,同時引導用戶使用網站其他頁面而不是關閉窗口離開。錯誤頁面的文字可以自定義,有些網站沒有設置404錯誤頁面,或者是直接採取的跳轉到首頁,這樣一般都說對搜索引擎不是很友好。導致網頁404錯誤的原因一般來說有幾種情況:1、無法在所請求的埠上訪問Web站點。2、Web服務擴展鎖定策略阻止本請求。3、MIME映射策略阻止本請求。4、網站更新改版,但某些局部板塊沿用原來的模塊,而原有的模塊調用的文件已經被刪除或轉移了路徑。5、跟蹤訪問的各類腳碼或CSS文件無效但調用代碼依然存在。6、某個目錄直接刪除(導致一段時間該目錄的文件在被爬行時全部報404NotFound錯誤)7、網頁URL生成規則改變、網頁文件更名或移動位置、導入鏈接拼寫錯誤等,導致原來的URL地址無法訪問
6. php中header() 有什麼用
header的用法
標頭 (header) 是伺服器以 HTTP 協義傳 HTML 資料到瀏覽器前所送出的字串,在標頭
與 HTML 文件之間尚需空一行分隔。有關 HTTP 的詳細說明,可以參 RFC 2068 官方文件
(http://www.w3.org/Protocols/rfc2068/rfc2068)。在 PHP 中送回 HTML 資料前,需先
傳完所有的標頭。
注意: 傳統的標頭一定包含下面三種標頭之一,並只能出現一次。
Content-Type: xxxx/yyyy
Location: xxxx:yyyy/zzzz
Status: nnn xxxxxx
在新的多型標頭規格 (Multipart MIME) 方可以出現二次以上。
使用範例
範例一: 本例使瀏覽器重定向到 PHP 的官方網站。
Header("Location: http://www.php.net";);
exit;
>?
範例二: 要使用者每次都能得到最新的資料,而不是 Proxy 或 cache 中的資料,可以使用下列的標頭
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
>?
範例三: 讓使用者的瀏覽器出現找不到檔案的信息。
header("Status: 404 Not Found");
>?
範例四:讓使用者下載檔案。
header("Content-type: application/x-gzip");
header("Content-Disposition: attachment; filename=文件名\");
header("Content-Description: PHP3 Generated Data");
?>
header重定向 就等價於替用戶在地址欄輸入url
7. php中如何讓頁面返回404錯誤代碼呢
一般在空間商的網站裡面的個人控制面板裡面都有頁面錯誤設置,不不用那麼麻煩。
8. 為什麼php頁面頂部加了header("HTTP/1.1 404 not found");代碼,程序還是往下執行
不會,他只會返回一個404狀態碼,還會向下執行。
9. 安裝PHP是報錯,求助
主頁index.php代碼如下:
PHP code?
<?php
require 'lib/core/DBAccess.class';
require 'lib/core/Object.class';
require 'action/default/WebBase.class.php';
require 'action/default/WebLoginBase.class.php';
require 'config.php';
//print_r($_SERVER);exit;
$para=array();
if(isset($_SERVER['PATH_INFO'])){
$para=explode('/', substr($_SERVER['PATH_INFO'],1));
if($control=array_shift($para)){
if(count($para)){
$action=array_shift($para);
}else{
$action=$control;
$control='index';
}
}else{
$control='index';
$action='main';
}
}else{
$control='index';
$action='main';
}
$control=ucfirst($control);
if(strpos($action,'-')!==false){
list($action, $page)=explode('-',$action);
}
$file=$conf['action']['modals'].$control.'.class.php';
if(!is_file($file)) notfound('找不到控制器');
try{
require $file;
}catch(Exception $e){
print_r($e);
exit;
}
if(!class_exists($control)) notfound('找不到控制器1');
$jms=new $control($conf['db']['dsn'], $conf['db']['user'], $conf['db']['password']);
$jms->debugLevel=$conf['debug']['level'];
if(!method_exists($jms, $action)) notfound('方法不存在');
$reflection=new ReflectionMethod($jms, $action);
if($reflection->isStatic()) notfound('不允許調用Static修飾的方法');
if(!$reflection->isFinal()) notfound('只能調用final修飾的方法');
$jms->controller=$control;
$jms->action=$action;
$jms->charset=$conf['db']['charset'];
$jms->cacheDir=$conf['cache']['dir'];
$jms->setCacheDir($conf['cache']['dir']);
$jms->actionTemplate=$conf['action']['template'];
$jms->prename=$conf['db']['prename'];
$jms->title=$conf['web']['title'];
if(method_exists($jms, 'getSystemSettings')) $jms->getSystemSettings();
if($jms->settings['switchWeb']=='0'){
$jms->display('close-service.php');
exit;
}
if(isset($page)) $jms->page=$page;
if($q=$_SERVER['QUERY_STRING']){
$para=array_merge($para, explode('/', $q));
}
if($para==null) $para=array();
$jms->headers=getallheaders();
if(isset($jms->headers['x-call'])){
// 函數調用
header('content-Type: application/json');
try{
ob_start();
echo json_encode($reflection->invokeArgs($jms, $_POST));
ob_flush();
}catch(Exception $e){
$jms->error($e->getMessage(), true);
}
}elseif(isset($jms->headers['x-form-call'])){
// 表單調用
$accept=strpos($jms->headers['Accept'], 'application/json')===0;
if($accept) header('content-Type: application/json');
try{
ob_start();
if($accept){
echo json_encode($reflection->invokeArgs($jms, $_POST));
}else{
json_encode($reflection->invokeArgs($jms, $_POST));
}
ob_flush();
}catch(Exception $e){
$jms->error($e->getMessage(), true);
}
}elseif(strpos($jms->headers['Accept'], 'application/json')===0){
// AJAX調用
header('content-Type: application/json');
try{
//echo json_encode($reflection->invokeArgs($jms, $para));
echo json_encode(call_user_func_array(array($jms, $action), $para));
}catch(Exception $e){
$jms->error($e->getmessage());
}
}else{
// 普通請求
header('content-Type: text/html;charset=utf-8');
//$reflection->invokeArgs($jms, $para);
call_user_func_array(array($jms, $action), $para);
}
$jms=null;
function notfound($message){
header('content-Type: text/plain; charset=utf8');
header('HTTP/1.1 404 Not Found');
die($message);
}
10. PHP中關於 header問題~~
$_POST['Submit']為真並且$_POST['password'] != $_POST['password2']時才能跳轉到signup.php?error=pass