導航:首頁 > 編程語言 > php401

php401

發布時間:2022-07-17 16:10:07

php curl 401時怎麼獲取body

PHP curl可以從伺服器端模擬一個http請求,例如抓取網頁、模擬登陸等。根據選項設置,可以在curl_exec的返回結果中獲取到響應頭和body,但這沒有響應的狀態嗎。想要獲取狀態碼,需要在執行curl_exec後再通過curl_getinfo來獲取。例如:
[php] view plain 在CODE上查看代碼片派生到我的代碼片
$ch = curl_init ();
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com.hk');
curl_setopt($ch, CURLOPT_TIMEOUT, 200);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
#curl_setopt( $ch, CURLOPT_POSTFIELDS, "username=".$username."&password=".$password );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_exec($ch);
$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
另外curl_getinfo還可以獲取很多其他信息,具體請參考:http://php.NET/manual/en/function.curl-getinfo.php 。
[html] view plain 在CODE上查看代碼片派生到我的代碼片
下列選項的值將被作為長整形使用(在option參數中指定):
CURLOPT_INFILESIZE: 當你上傳一個文件到遠程站點,這個選項告訴PHP你上傳文件的大小。
CURLOPT_VERBOSE: 如果你想CURL報告每一件意外的事情,設置這個選項為一個非零值。
CURLOPT_HEADER: 如果你想把一個頭包含在輸出中,設置這個選項為一個非零值。
CURLOPT_NOPROGRESS: 如果你不會PHP為CURL傳輸顯示一個進程條,設置這個選項為一個非零值。注意:PHP自動設置這個選項為非零值,你應該僅僅為了調試的目的來改變這個選項。
CURLOPT_NOBODY: 如果你不想在輸出中包含body部分,設置這個選項為一個非零值。
CURLOPT_FAILONERROR: 如果你想讓PHP在發生錯誤(HTTP代碼返回大於等於300)時,不顯示,設置這個選項為一人非零值。默認行為是返回一個正常頁,忽略代碼。
CURLOPT_UPLOAD: 如果你想讓PHP為上傳做准備,設置這個選項為一個非零值。
CURLOPT_POST: 如果你想PHP去做一個正規的HTTP POST,設置這個選項為一個非零值。這個POST是普通的 application/x-www-from-urlencoded 類型,多數被HTML表單使用。
CURLOPT_FTPLISTONLY: 設置這個選項為非零值,PHP將列出FTP的目錄名列表。
CURLOPT_FTPAPPEND: 設置這個選項為一個非零值,PHP將應用遠程文件代替覆蓋它。
CURLOPT_NETRC: 設置這個選項為一個非零值,PHP將在你的 ~./netrc 文件中查找你要建立連接的遠程站點的用戶名及密碼。
CURLOPT_FOLLOWLOCATION: 設置這個選項為一個非零值(象 「Location: 「)的頭,伺服器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如 「Location: 「的頭)。
CURLOPT_PUT: 設置這個選項為一個非零值去用HTTP上傳一個文件。要上傳這個文件必須設置CURLOPT_INFILE和CURLOPT_INFILESIZE選項.
CURLOPT_MUTE: 設置這個選項為一個非零值,PHP對於CURL函數將完全沉默。
CURLOPT_TIMEOUT: 設置一個長整形數,作為最大延續多少秒。
CURLOPT_LOW_SPEED_LIMIT: 設置一個長整形數,控制傳送多少位元組。
CURLOPT_LOW_SPEED_TIME: 設置一個長整形數,控制多少秒傳送CURLOPT_LOW_SPEED_LIMIT規定的位元組數。
CURLOPT_RESUME_FROM: 傳遞一個包含位元組偏移地址的長整形參數,(你想轉移到的開始表單)。
CURLOPT_SSLVERSION: 傳遞一個包含SSL版本的長參數。默認PHP將被它自己努力的確定,在更多的安全中你必須手工設置。
CURLOPT_TIMECONDITION: 傳遞一個長參數,指定怎麼處理CURLOPT_TIMEVALUE參數。你可以設置這個參數為TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。這僅用於HTTP。
CURLOPT_TIMEVALUE: 傳遞一個從1970-1-1開始到現在的秒數。這個時間將被CURLOPT_TIMEVALUE選項作為指定值使用,或被默認TIMECOND_IFMODSINCE使用。
下列選項的值將被作為字元串:
CURLOPT_URL: 這是你想用PHP取回的URL地址。你也可以在用curl_init()函數初始化時設置這個選項。
CURLOPT_USERPWD: 傳遞一個形如[username]:[password]風格的字元串,作用PHP去連接。
CURLOPT_PROXYUSERPWD: 傳遞一個形如[username]:[password] 格式的字元串去連接HTTP代理。
CURLOPT_RANGE: 傳遞一個你想指定的范圍。它應該是」X-Y」格式,X或Y是被除外的。HTTP傳送同樣支持幾個間隔,用逗句來分隔(X-Y,N-M)。
CURLOPT_POSTFIELDS: 傳遞一個作為HTTP 「POST」操作的所有數據的字元串。
CURLOPT_REFERER: 在HTTP請求中包含一個」referer」頭的字元串。
CURLOPT_USERAGENT: 在HTTP請求中包含一個」user-agent」頭的字元串。
CURLOPT_FTPPORT: 傳遞一個包含被ftp 「POST」指令使用的IP地址。這個POST指令告訴遠程伺服器去連接我們指定的IP地址。這個字元串可以是一個IP地址,一個主機名,一個網路界面名(在UNIX下),或是『-』(使用系統默認IP地址)。
CURLOPT_COOKIE: 傳遞一個包含HTTP cookie的頭連接。
CURLOPT_SSLCERT: 傳遞一個包含PEM格式證書的字元串。
CURLOPT_SSLCERTPASSWD: 傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼。
CURLOPT_COOKIEFILE: 傳遞一個包含cookie數據的文件的名字的字元串。這個cookie文件可以是Netscape格式,或是堆存在文件中的HTTP風格的頭。
CURLOPT_CUSTOMREQUEST: 當進行HTTP請求時,傳遞一個字元被GET或HEAD使用。為進行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request. 注意: 在確認你的伺服器支持命令先不要去這樣做。下列的選項要求一個文件描述(通過使用fopen()函數獲得):
CURLOPT_FILE: 這個文件將是你放置傳送的輸出文件,默認是STDOUT.
CURLOPT_INFILE: 這個文件是你傳送過來的輸入文件。
CURLOPT_WRITEHEADER: 這個文件寫有你輸出的頭部分。
CURLOPT_STDERR: 這個文件寫有錯誤而不是stderr。用來獲取需要登錄的頁面的例子,當前做法是每次或許都登錄一次,有需要的人再做改進了. PHP curl可以從伺服器端模擬一個http請求,例如抓取網頁、模擬登陸等。根據選項設置,可以在curl_exec的返回結果中獲取到響應頭和body,但這沒有響應的狀態嗎。想要獲取狀態碼,需要在執行curl_exec後再通過curl_getinfo來獲取。例如:
[php] view plain 在CODE上查看代碼片派生到我的代碼片
$ch = curl_init ();
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com.hk');
curl_setopt($ch, CURLOPT_TIMEOUT, 200);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
#curl_setopt( $ch, CURLOPT_POSTFIELDS, "username=".$username."&password=".$password );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_exec($ch);
$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
另外curl_getinfo還可以獲取很多其他信息,具體請參考:http://php.NET/manual/en/function.curl-getinfo.php 。
[html] view plain 在CODE上查看代碼片派生到我的代碼片
下列選項的值將被作為長整形使用(在option參數中指定):
CURLOPT_INFILESIZE: 當你上傳一個文件到遠程站點,這個選項告訴PHP你上傳文件的大小。
CURLOPT_VERBOSE: 如果你想CURL報告每一件意外的事情,設置這個選項為一個非零值。
CURLOPT_HEADER: 如果你想把一個頭包含在輸出中,設置這個選項為一個非零值。
CURLOPT_NOPROGRESS: 如果你不會PHP為CURL傳輸顯示一個進程條,設置這個選項為一個非零值。注意:PHP自動設置這個選項為非零值,你應該僅僅為了調試的目的來改變這個選項。
CURLOPT_NOBODY: 如果你不想在輸出中包含body部分,設置這個選項為一個非零值。
CURLOPT_FAILONERROR: 如果你想讓PHP在發生錯誤(HTTP代碼返回大於等於300)時,不顯示,設置這個選項為一人非零值。默認行為是返回一個正常頁,忽略代碼。
CURLOPT_UPLOAD: 如果你想讓PHP為上傳做准備,設置這個選項為一個非零值。
CURLOPT_POST: 如果你想PHP去做一個正規的HTTP POST,設置這個選項為一個非零值。這個POST是普通的 application/x-www-from-urlencoded 類型,多數被HTML表單使用。
CURLOPT_FTPLISTONLY: 設置這個選項為非零值,PHP將列出FTP的目錄名列表。
CURLOPT_FTPAPPEND: 設置這個選項為一個非零值,PHP將應用遠程文件代替覆蓋它。
CURLOPT_NETRC: 設置這個選項為一個非零值,PHP將在你的 ~./netrc 文件中查找你要建立連接的遠程站點的用戶名及密碼。
CURLOPT_FOLLOWLOCATION: 設置這個選項為一個非零值(象 「Location: 「)的頭,伺服器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如 「Location: 「的頭)。
CURLOPT_PUT: 設置這個選項為一個非零值去用HTTP上傳一個文件。要上傳這個文件必須設置CURLOPT_INFILE和CURLOPT_INFILESIZE選項.
CURLOPT_MUTE: 設置這個選項為一個非零值,PHP對於CURL函數將完全沉默。
CURLOPT_TIMEOUT: 設置一個長整形數,作為最大延續多少秒。
CURLOPT_LOW_SPEED_LIMIT: 設置一個長整形數,控制傳送多少位元組。
CURLOPT_LOW_SPEED_TIME: 設置一個長整形數,控制多少秒傳送CURLOPT_LOW_SPEED_LIMIT規定的位元組數。
CURLOPT_RESUME_FROM: 傳遞一個包含位元組偏移地址的長整形參數,(你想轉移到的開始表單)。
CURLOPT_SSLVERSION: 傳遞一個包含SSL版本的長參數。默認PHP將被它自己努力的確定,在更多的安全中你必須手工設置。
CURLOPT_TIMECONDITION: 傳遞一個長參數,指定怎麼處理CURLOPT_TIMEVALUE參數。你可以設置這個參數為TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。這僅用於HTTP。
CURLOPT_TIMEVALUE: 傳遞一個從1970-1-1開始到現在的秒數。這個時間將被CURLOPT_TIMEVALUE選項作為指定值使用,或被默認TIMECOND_IFMODSINCE使用。
下列選項的值將被作為字元串:
CURLOPT_URL: 這是你想用PHP取回的URL地址。你也可以在用curl_init()函數初始化時設置這個選項。
CURLOPT_USERPWD: 傳遞一個形如[username]:[password]風格的字元串,作用PHP去連接。
CURLOPT_PROXYUSERPWD: 傳遞一個形如[username]:[password] 格式的字元串去連接HTTP代理。
CURLOPT_RANGE: 傳遞一個你想指定的范圍。它應該是」X-Y」格式,X或Y是被除外的。HTTP傳送同樣支持幾個間隔,用逗句來分隔(X-Y,N-M)。
CURLOPT_POSTFIELDS: 傳遞一個作為HTTP 「POST」操作的所有數據的字元串。
CURLOPT_REFERER: 在HTTP請求中包含一個」referer」頭的字元串。
CURLOPT_USERAGENT: 在HTTP請求中包含一個」user-agent」頭的字元串。
CURLOPT_FTPPORT: 傳遞一個包含被ftp 「POST」指令使用的IP地址。這個POST指令告訴遠程伺服器去連接我們指定的IP地址。這個字元串可以是一個IP地址,一個主機名,一個網路界面名(在UNIX下),或是『-』(使用系統默認IP地址)。
CURLOPT_COOKIE: 傳遞一個包含HTTP cookie的頭連接。
CURLOPT_SSLCERT: 傳遞一個包含PEM格式證書的字元串。
CURLOPT_SSLCERTPASSWD: 傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼。
CURLOPT_COOKIEFILE: 傳遞一個包含cookie數據的文件的名字的字元串。這個cookie文件可以是Netscape格式,或是堆存在文件中的HTTP風格的頭。
CURLOPT_CUSTOMREQUEST: 當進行HTTP請求時,傳遞一個字元被GET或HEAD使用。為進行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request. 注意: 在確認你的伺服器支持命令先不要去這樣做。下列的選項要求一個文件描述(通過使用fopen()函數獲得):
CURLOPT_FILE: 這個文件將是你放置傳送的輸出文件,默認是STDOUT.
CURLOPT_INFILE: 這個文件是你傳送過來的輸入文件。
CURLOPT_WRITEHEADER: 這個文件寫有你輸出的頭部分。
CURLOPT_STDERR: 這個文件寫有錯誤而不是stderr。用來獲取需要登錄的頁面的例子,當前做法是每次或許都登錄一次,有需要的人再做改進了.

② 瀏覽php時出現401.3無許可權錯誤.急求解決方法高分!

401.3 未經授權:訪問由於 ACL 對所請求資源的設置被拒絕詳細說明401.3 未經授權:訪問由於 ACL 對所請求資源的設置被拒絕
其實這也是一個許可權錯誤,但是這個錯誤的產生與IIS授權並無太大關系。這個錯誤的產生是由操作系統對文件及文件夾的許可權控制引起的。
解決方法:
1、首先在文件夾選項中關閉「使用簡單文件共享」。
2、在站點文件夾上點右鍵——屬性——安全,打開文件夾安全選項,找到IUSR_這個帳號(如果沒有就添加進去),賦予這個帳號相應的讀取,修改等許可權。當然設置這些許可權的時候請仔細考慮,因為這會影響到站點的安全性。

③ php中http驗證[header('HTTP/1.0 401 Unauthorized');]

$sql = "SELECT * FROM tbl_user WHERE
AccountID = '$_SERVER[PHP_AUTH_USER]' AND
AccountPassword = '$_SERVER[PHP_AUTH_PW]'";
這個執行語句改成這樣

④ 在測試PHP代碼時,顯示指定的網頁無法訪問,是什麼原因

IIS狀態代碼的含義
概要
當用戶試圖通過HTTP或文件傳輸協議(FTP)訪問一台正在運行Internet信息服務(IIS)的伺服器上的內容時,IIS返回一個表示該請求的狀態的數字代碼。該狀態代碼記錄在IIS日誌中,同時也可能在Web瀏覽器或FTP客戶端顯示。狀態代碼可以指明具體請求是否已成功,還可以揭示請求失敗的確切原因。
更多信息
日誌文件的位置
在默認狀態下,IIS把它的日誌文件放在%WINDIR\System32\Logfiles文件夾中。每個萬維網(WWW)站點和FTP站點在該目錄下都有一個單獨的目錄。在默認狀態下,每天都會在這些目錄下創建日誌文件,並用日期給日誌文件命名(例如,exYYMMDD.log)。
HTTP
1xx-信息提示
這些狀態代碼表示臨時的響應。客戶端在收到常規響應之前,應准備接收一個或多個1xx響應。
100-繼續。
101-切換協議。
2xx-成功
這類狀態代碼表明伺服器成功地接受了客戶端請求。
200-確定。客戶端請求已成功。
201-已創建。
202-已接受。
203-非權威性信息。
204-無內容。
205-重置內容。
206-部分內容。
3xx-重定向
客戶端瀏覽器必須採取更多操作來實現請求。例如,瀏覽器可能不得不請求伺服器上的不同的頁面,或通過代理伺服器重復該請求。
301-對象已永久移走,即永久重定向。
302-對象已臨時移動。
304-未修改。
307-臨時重定向。
4xx-客戶端錯誤
發生錯誤,客戶端似乎有問題。例如,客戶端請求不存在的頁面,客戶端未提供有效的身份驗證信息。400-錯誤的請求。
401-訪問被拒絕。IIS定義了許多不同的401錯誤,它們指明更為具體的錯誤原因。這些具體的錯誤代碼在瀏覽器中顯示,但不在IIS日誌中顯示:
401.1-登錄失敗。
401.2-伺服器配置導致登錄失敗。
401.3-由於ACL對資源的限制而未獲得授權。
401.4-篩選器授權失敗。
401.5-ISAPI/CGI應用程序授權失敗。
401.7–訪問被Web伺服器上的URL授權策略拒絕。這個錯誤代碼為IIS6.0所專用。
403-禁止訪問:IIS定義了許多不同的403錯誤,它們指明更為具體的錯誤原因:
403.1-執行訪問被禁止。
403.2-讀訪問被禁止。
403.3-寫訪問被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒絕。
403.7-要求客戶端證書。
403.8-站點訪問被拒絕。
403.9-用戶數過多。
403.10-配置無效。
403.11-密碼更改。
403.12-拒絕訪問映射表。
403.13-客戶端證書被吊銷。
403.14-拒絕目錄列表。
403.15-超出客戶端訪問許可。
403.16-客戶端證書不受信任或無效。
403.17-客戶端證書已過期或尚未生效。
403.18-在當前的應用程序池中不能執行所請求的URL。這個錯誤代碼為IIS6.0所專用。
403.19-不能為這個應用程序池中的客戶端執行CGI。這個錯誤代碼為IIS6.0所專用。
403.20-Passport登錄失敗。這個錯誤代碼為IIS6.0所專用。
404-未找到。
404.0-(無)–沒有找到文件或目錄。
404.1-無法在所請求的埠上訪問Web站點。
404.2-Web服務擴展鎖定策略阻止本請求。
404.3-MIME映射策略阻止本請求。
405-用來訪問本頁面的HTTP謂詞不被允許(方法不被允許)
406-客戶端瀏覽器不接受所請求頁面的MIME類型。
407-要求進行代理身份驗證。
412-前提條件失敗。
413–請求實體太大。
414-請求URI太長。
415–不支持的媒體類型。
416–所請求的范圍無法滿足。
417–執行失敗。
423–鎖定的錯誤。
5xx-伺服器錯誤
伺服器由於遇到錯誤而不能完成該請求。
500-內部伺服器錯誤。
500.12-應用程序正忙於在Web伺服器上重新啟動。
500.13-Web伺服器太忙。
500.15-不允許直接請求Global.asa。
500.16–UNC授權憑據不正確。這個錯誤代碼為IIS6.0所專用。
500.18–URL授權存儲不能打開。這個錯誤代碼為IIS6.0所專用。
500.100-內部ASP錯誤。
501-頁眉值指定了未實現的配置。
502-Web伺服器用作網關或代理伺服器時收到了無效響應。
502.1-CGI應用程序超時。
502.2-CGI應用程序出錯。application.
503-服務不可用。這個錯誤代碼為IIS6.0所專用。
504-網關超時。
505-HTTP版本不受支持。
FTP
1xx-肯定的初步答復
這些狀態代碼指示一項操作已經成功開始,但客戶端希望在繼續操作新命令前得到另一個答復。
110重新啟動標記答復。
120服務已就緒,在nnn分鍾後開始。
125數據連接已打開,正在開始傳輸。
150文件狀態正常,准備打開數據連接。
2xx-肯定的完成答復
一項操作已經成功完成。客戶端可以執行新命令。200命令確定。
202未執行命令,站點上的命令過多。
211系統狀態,或系統幫助答復。
212目錄狀態。
213文件狀態。
214幫助消息。
215NAME系統類型,其中,NAME是AssignedNumbers文檔中所列的正式系統名稱。
220服務就緒,可以執行新用戶的請求。
221服務關閉控制連接。如果適當,請注銷。
225數據連接打開,沒有進行中的傳輸。
226關閉數據連接。請求的文件操作已成功(例如,傳輸文件或放棄文件)。
227進入被動模式(h1,h2,h3,h4,p1,p2)。
230用戶已登錄,繼續進行。
250請求的文件操作正確,已完成。
257已創建「PATHNAME」。
3xx-肯定的中間答復
該命令已成功,但伺服器需要更多來自客戶端的信息以完成對請求的處理。331用戶名正確,需要密碼。
332需要登錄帳戶。
350請求的文件操作正在等待進一步的信息。
4xx-瞬態否定的完成答復
該命令不成功,但錯誤是暫時的。如果客戶端重試命令,可能會執行成功。421服務不可用,正在關閉控制連接。如果服務確定它必須關閉,將向任何命令發送這一應答。
425無法打開數據連接。
426Connectionclosed;transferaborted.
450未執行請求的文件操作。文件不可用(例如,文件繁忙)。
451請求的操作異常終止:正在處理本地錯誤。
452未執行請求的操作。系統存儲空間不夠。
5xx-永久性否定的完成答復
該命令不成功,錯誤是永久性的。如果客戶端重試命令,將再次出現同樣的錯誤。500語法錯誤,命令無法識別。這可能包括諸如命令行太長之類的錯誤。
501在參數中有語法錯誤。
502未執行命令。
503錯誤的命令序列。
504未執行該參數的命令。
530未登錄。
532存儲文件需要帳戶。
550未執行請求的操作。文件不可用(例如,未找到文件,沒有訪問許可權)。
551請求的操作異常終止:未知的頁面類型。
552請求的文件操作異常終止:超出存儲分配(對於當前目錄或數據集)。
553未執行請求的操作。不允許的文件名。
常見的FTP狀態代碼及其原因
150-FTP使用兩個埠:21用於發送命令,20用於發送數據。狀態代碼150表示伺服器准備在埠20上打開新連接,發送一些數據。
226-命令在埠20上打開數據連接以執行操作,如傳輸文件。該操作成功完成,數據連接已關閉。
230-客戶端發送正確的密碼後,顯示該狀態代碼。它表示用戶已成功登錄。
331-客戶端發送用戶名後,顯示該狀態代碼。無論所提供的用戶名是否為系統中的有效帳戶,都將顯示該狀態代碼。
426-命令打開數據連接以執行操作,但該操作已被取消,數據連接已關閉。
530-該狀態代碼表示用戶無法登錄,因為用戶名和密碼組合無效。如果使用某個用戶帳戶登錄,可能鍵入錯誤的用戶名或密碼,也可能選擇只允許匿名訪問。如果使用匿名帳戶登錄,IIS的配置可能拒絕匿名訪問。
550-命令未被執行,因為指定的文件不可用。例如,要GET的文件並不存在,或試圖將文件PUT到您沒有寫入許可權的目錄。
對HTTP404狀態碼的理解
HTTP 404 錯誤意味著鏈接指向的網頁不存在,即原始網頁的URL失效,這種情況經常會發生,很難避免,比如說:網頁URL生成規則改變、網頁文件更名或移動位置、導入鏈接拼寫錯誤等,導致原來的URL地址無法訪問;當Web 伺服器接到類似請求時,會返回一個404 狀態碼,告訴瀏覽器要請求的資源並不存在。但是,Web伺服器默認的404錯誤頁面,無論Apache還是IIS,均十分簡陋、呆板且對用戶不友好,無法給用戶提供必要的信息以獲取更多線索,無疑這會造成用戶的流失。
因此,很多網站均使用自定義404錯誤的方式以提供用戶體驗避免用戶流失。一般而言,自定義404頁面通用的做法是在頁面中放置網站快速導航鏈接、搜索框以及網站提供的特色服務,這樣可以有效的幫助用戶訪問站點並獲取需要的信息。
404錯誤的處理方式
(一)定製404錯誤頁面的基本原則
首先應明確的是,404錯誤應工作在伺服器級而不是網頁級。對定製使用動態頁面如PHP腳本類型的404頁時,必須確保在PHP執行前伺服器已經順利地送出「404」狀態碼,不然,一旦執行到了ISAPI級別,返回的狀態碼便只能是「200」或其他如「302」之類的重定向狀態碼了。
其次,在自定義網站的404錯誤頁面時,對設置的錯誤頁面URL鏈接應使用相對路徑而不是絕對路徑,而且自定義404頁面應該放在網站根目錄下。盡管無效鏈接可能是多種形式的URL,但當發生404訪問錯誤時,WEB伺服器會自動將其轉到自定義的當404錯誤頁中,這跟URL的形似沒有關系。
(二)Apache下設置404錯誤頁面
為Apache Server設置 404錯誤頁面的方法很簡單,只需在.htaccess 文件中加入如下內容即可:
ErrorDocument 404 /notfound.php
注意:
1.切記不要將404錯誤轉向到網站主頁,否則可能會導致主頁在搜索引擎中消失
2.切記不要使用絕對URL(例如: 形式),如果使用絕對URL返回的狀態碼是「302」+「200」(已測試)
(三)IIS/ASP.net下設置404錯誤頁面
首先,修改應用程序根目錄的設置,打開 「web.config」 文件編輯,在其中加入如下內容:
<configuration>
<system.web>
<customErrors mode=」On」 defaultRedirect=」error.asp」>
<error statusCode=」404〃 redirect=」notfound.asp」 />
</customErrors>
</system.web>
</configuration>
註:上文例中「error.asp」為系統默認的404頁面,「notfound.asp」為自定義的404頁面,使用時請修改相應文件名。
然後,在自定義的404頁面「notfound.asp」中加入:
<%
Response.Status = 「404 Not Found」
%>
這樣,便可以保證IIS能夠正確地返回「404」狀態碼
(四)在IIS/ASP.net下設置404靜態頁面
設置靜態404錯誤頁面的方法則比較簡單,在IIS管理器中右鍵單擊要管理的網站,打開「屬性」中的「自定義錯誤信息」頁,為「404」設定相應的錯誤信息頁即可

⑤ 誰幫忙看一下 php session_start() 的登陸驗證啊,登陸不了後台。直接轉到了401頁面

建議將session_start()放在第一行,或修改配置文件php.ini,將session.auto_start = 1 這樣不需每個頁面寫session_start();

⑥ php以fastCGI的方式運行時文件系統許可權問題及解決方法

在IIS7.0上以FastCGI方式配置好PHP運行環境,測試可以正常運行PHP程序後,將PHP程序部署上去,導入程序原來的數據和配置信息。很快就有問題出來啦下面我們就詳細記錄下。
今天准備將一個php
demo放在IIS下運行,網站在IIS下的配置是這樣的:
應用程序池是集成模式下的.net
framework
2.0(2.0或4.0沒什麼關系,因為php以fastCGI的方式在跑),
應用程序池標識配置為IIS內置的NETWORKSERVICE,
使用的認證方式為匿名身份驗證。
打開本地的網站,訪問php頁面,
出現了500錯誤。
好吧,是許可權問題,最簡單的解決辦法是把C:的許可權設成Everyone,
並允許完全控制:
重新訪問php頁面,成功了:
上面的方法是夠簡單,但也太不安全了,平時本地搭個demo這樣做沒問題,真正上線的時候,這樣做遲早出問題的。
於是重新設置,把該目錄下的只讀許可權賦給NETWRORKSERVICE帳號再試一下
不過問題還是沒有解決,訪問的時候,出現了401錯誤
錯誤信息中包括顯示登錄用戶為匿名,檢查了網站下的身份驗證(再點擊
匿名身份驗證->編輯),原來網站默認情況下,在登錄方法為匿名時,使用的默認登錄用戶為IUSR(就是我們看到的匿名登錄用戶了)
那麼解決辦法就是:
1.
將IUSR設置為C:的讀許可權,類似之前對NETWORKSERVICE的設置。
2.
或選擇使用應用程序池標識即可。
經試驗,方法1與2都成功。
Note:NETWORKSERVICE在IIS7中隸屬於iis_iusers用戶組,之前對NETWORKSERVICE的設置也可以改為對iis_iusers的設置,同樣也可以解決問題,只是許可權被進一步放寬了而已。
以上所述就是本文的全部內容了,希望大家能夠喜歡。

⑦ php網站報serv-u ftp server 401 Unauthorized錯誤!

FTP安裝的根目錄下有一個 Serv-U-DefaultCertificate.crt 執行一下,把證書導入,應該就可以了。

閱讀全文

與php401相關的資料

熱點內容
程序員製作連線題目 瀏覽:185
女人被精神控制後被侵犯電影 瀏覽:495
安卓開機鍵壞了怎麼開機重啟 瀏覽:796
染島貢作品簡介 瀏覽:801
哥的電影的 瀏覽:897
狼狽電影百度雲 瀏覽:476
dos命令如何跳過程序 瀏覽:619
編譯器沒有游標怎麼辦 瀏覽:871
在天貓app怎麼看天貓積分 瀏覽:224
安卓手機怎麼下載gba電玩之家 瀏覽:771
周三多管理學pdf 瀏覽:462
一部美國電影講的是幾個小孩子 瀏覽:413
用手機怎麼把圖片放到一個文件夾 瀏覽:590
吃奶的電影照片 瀏覽:359
理論電影 台灣 瀏覽:758
日本打真軍電影 瀏覽:389
單片機全閃全亮 瀏覽:986
攻略禁忌肉文 瀏覽:398
安卓大屏導航怎麼看是什麼牌子的 瀏覽:898
美國動畫片主角是一個女孩 瀏覽:467