當前位置:首頁 » 編程語言 » php獲取頭信息

php獲取頭信息

發布時間: 2023-09-20 00:03:34

php使用nginx如何獲取請求頭

Nginx的http模塊在處理HTTP請求時對環境變數的封裝與Apache有所不同。除了支持一些與HTTP協議相關的通用的變數之外,還支持一系列Nginx自有的變數,如Nginx配置目錄下fastcgi_params.default文件里的$server_protocol、$nginx_version等。正如這個文件中的示例的用途,這些變數可以在配置fastcgi時傳遞給cgi程序,使其可以作為cgi程序的環境變數來使用。然而,即便是Nginx有了這些自有的變數也無法完全滿足所有的需求。

了解Jquery的朋友會發現,Jquery在實現Ajax時會通過setRequestHeader(『X-Requested-With』, 『xmlhttprequest』)方法自動添加一個值為「xmlhttprequest」自定義的請求頭」X-Requested-With」來標識這是一個Ajax請求,以期處理這個請求的後端能夠通過判斷這個標識來識別請求類型。那麼這個時候PHP是如何來獲取這個自定義參數的值的呢?

熟悉Apache和PHP的人一定會第一時間想到$_SERVER["HTTP_X_REQUESTED_WITH"],不錯,這對黃金搭配早就把這個問題給完美解決了,但Nginx卻不然,這是由Nginx對其自身工作的定位決定的——Nginx只負責HTTP。在Nginx眼裡,PHP只是它的一個後端,形象點來說,它只管分發請求,而不管發給誰。這就意味著,我們無法期待Nginx像Apache一樣給我們自動完成一些自定義參數到PHP的傳遞,只有自力更生。簡單點說就是,想要直接像$_SERVER["HTTP_X_REQUESTED_WITH"]這樣來調用自定義請求頭參數的值的話,你就必須手工將其添加到fastcgi_params的配置中,明確告知cgi程序接收,否則Nginx會將其遺棄。

配置環境變數的方法可參照fastcgi_params.default這個文件,在前面的博客「Nginx下虛擬主機環境變數的配置方法」中也提到過。針對上述例子,只需在fastcgi_params文件中增加一行即可:

?12 # for Ajax fastcgi_param HTTP_X_REQUESTED_WITH $http_x_requested_with;
這樣,重載Nginx配置後就可以之間在PHP中調用$_SERVER["HTTP_X_REQUESTED_WITH"]來判斷請求類型了。其中需要注意以下兩點:

一、自定義請求頭部的名稱不應該包括空白、冒號、換行和下劃線。

Nginx在處理客戶端請求header頭時,會將名稱中的中橫線」-」替換為下劃線」_」,並將所有字母小寫再加上」$http_」來作為該名稱對應的變數名。例如上述Jquery的例子中setRequestHeader(『X-Requested-With』, 『xmlhttprequest』),在HTTP請求頭中為一行字元串:」X-Requested-With: xmlhttprequest」,經Nginx處理後將自動生成一個名為$http_x_requested_with的變數,其值為」xmlhttprequest」。尤其注意中橫線」-」替換為下劃線」_」這個規則,這意味著請求參數名稱中如果含有下劃線,Nginx將無法正確識別。

二、$_SERVER["HTTP_X_REQUESTED_WITH"]中的索引,也即「fastcgi_param HTTP_X_REQUESTED_WITH $http_x_requested_with;」中加紅部分,是可以自由命名的,當前這種命名格式是為了保持和Apache保持一致。
..

⑵ php怎樣調用公共網頁頭部及尾部 謝謝!

通過 include() 或 require() 函數,您可以在伺服器執行 PHP 文件之前在該文件中插入一個文件的內容。除了它們處理錯誤的方式不同之外,這兩個函數在其他方面都是相同的。include() 函數會生成一個警告(但是腳本會繼續執行),而 require() 函數會生成一個致命錯誤(fatal error)(在錯誤發生後腳本會停止執行)。

這兩個函數用於創建可在多個頁面重復使用的函數、頁眉、頁腳或元素。

這會為開發者節省大量的時間。這意味著您可以創建供所有網頁引用的標准頁眉或菜單文件。當頁眉需要更新時,您只更新一個包含文件就可以了,或者當您向網站添加一張新頁面時,僅僅需要修改一下菜單文件(而不是更新所有網頁中的鏈接)。
include() 函數
include() 函數可獲得指定文件中的所有文本,並把文本拷貝到使用 include 函數的文件中。

例子 1
假設您擁有一個標準的頁眉文件,名為 "header.php"。如需在頁面中引用這個頁眉文件,請使用 include() 函數,就像這樣:

<html>
<body>

<?php include("header.php"); ?>

<h1>Welcome to my home page</h1>

<p>Some text</p>

</body>
</html>例子 2
現在,假設我們有一個在所有頁面上使用的標准菜單文件。請看下面這個 "menu.php":

<html>
<body>

<a href="http://www.w3school.com.cn/default.php">Home</a> |
<a href="http://www.w3school.com.cn/about.php">About Us</a> |
<a href="http://www.w3school.com.cn/contact.php">Contact Us</a>三個文件,"default.php"、"about.php" 以及 "contact.php" 都引用了 "menu.php" 文件。這是 "default.php" 中的代碼:

<?php include("menu.php"); ?>

<h1>Welcome to my home page</h1>

<p>Some text</p>

</body>
</html>如果您在瀏覽器中查看 "default.php" 的源代碼,應該類似這樣:

<html>
<body>

<a href="default.php">Home</a> |
<a href="about.php">About Us</a> |
<a href="contact.php">Contact Us</a>

<h1>Welcome to my home page</h1>
<p>Some text</p>

</body>
</html>同時,當然,我們也將用相同的方法處理 "about.php" 和 "contact.php"。通過使用引用文件,在您需要重命名鏈接、更改鏈接順序或向站點添加另一張網頁時,只要簡單地更新 "menu.php" 文件中的文本即可。
require() 函數
require() 函數與 include() 相同,不同的是它對錯誤的處理方式。

include() 函數會生成一個警告(但是腳本會繼續執行),而 require() 函數會生成一個致命錯誤(fatal error)(在錯誤發生後腳本會停止執行)。

如果在您通過 include() 引用文件時發生了錯誤,會得到類似下面這樣的錯誤消息:

PHP 代碼:
<html>
<body>

<?php
include("wrongFile.php");
echo "Hello World!";
?>

</body>
</html>錯誤消息:
Warning: include(wrongFile.php) [function.include]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line 5

Warning: include() [function.include]:
Failed opening 'wrongFile.php' for inclusion
(include_path='.;C:\php5\pear')
in C:\home\website\test.php on line 5

Hello World!請注意,echo 語句依然被執行了!這是因為警告不會中止腳本的執行。

現在,讓我們使用 require() 函數運行相同的例子。

PHP 代碼:
<html>
<body>

<?php
require("wrongFile.php");
echo "Hello World!";
?>

</body>
</html>錯誤消息:
Warning: require(wrongFile.php) [function.require]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line 5

Fatal error: require() [function.require]:
Failed opening required 'wrongFile.php'
(include_path='.;C:\php5\pear')
in C:\home\website\test.php on line 5由於在致命錯誤發生後終止了腳本的執行,因此 echo 語句不會執行。

正因為在文件不存在或被重命名後腳本不會繼續執行,因此我們推薦使用 require() 而不是 include()。

⑶ php怎麼判斷一個url是不是圖片

比較簡單吧。直接去請求這個url,會返回信息頭,裡面的content-type 如果是顯示了image/gif或者什麼

⑷ 如何在php中獲取curl請求的請求頭信息及相應頭信息

<?php
$url='http://demo.zjmainstay.cn';
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_HEADER,true);//返回頭信息
curl_setopt($ch,CURLOPT_NOBODY,true);//不返回內容
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//返回數據不直接輸出
$content=curl_exec($ch);//執行並存儲結果
curl_close($ch);
echo$content;

更多關於phpcURL的內容,請參考我的博客《PHPcURL應用》
http://www.zjmainstay.cn/php-curl

⑸ php怎麼獲取頁面頭的content-length

做一個andriod系統,測試的時候是在android 2.2系統上測試的一切正常,等發布的時候發現個小問題,就是當程序有更新時,需要重新下載APK,為了友好,做了個進度條,但是在 2.2以上的系統中進度條不會走動,部分代碼如下: HttpURLConnection con...

⑹ 如何在php中獲取curl請求的請求頭信息及相應頭信息

獲取請求頭信息,可以在curl_exec函數執行前,添加代碼curl_setopt($ch,CURLINFO_HEADER_OUT,true);在curl_exec函數執行後,通過 curl_getinfo($ch,CURLINFO_HEADER_OUT) 來獲取curl執行請求的請求數據。
獲取響應頭信息,可以在curl_exec函數執行前,添加代碼 curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_NOBODY,true); 之後 通過curl_exec函數來獲取響應頭信息。獲取設置 curl_setopt($ch, CURLOPT_NOBODY,false);然後對curl_exec獲取的值通過\r\n\r\n進行分割截取第一部分即為響應頭信息。

⑺ jsp中request.getHeader()獲取客戶端的各種信息,那php中什麼方法來獲取

伺服器變數 $_SERVER 詳解:

1、$_SESSION['PHP_SELF'] -- 獲取當前正在執行腳本的文件名

2、$_SERVER['SERVER_PROTOCOL'] -- 請求頁面時通信協議的名稱和版本。例如,「HTTP/1.0」。

3、$_SERVER['REQUEST_TIME'] -- 請求開始時的時間戳。從 PHP 5.1.0 起有效。和time函數效果一樣。

4、$_SERVER['argv'] -- 傳遞給該腳本的參數。我試了下,get方法可以得到$_SERVER['argv'][0];post方法無法給他賦值。

5、$_SERVER['SERVER_NAME'] -- 返回當前主機名。

6、$_SERVER['SERVER_SOFTWARE'] -- 伺服器標識的字串,在響應請求時的頭信息中給出。 如Microsoft-IIS/6.0

7、$_SERVER['REQUEST_METHOD'] -- 訪問頁面時的請求方法。例如:「GET」、「HEAD」,「POST」,「PUT」。

8、$_SERVER['QUERY_STRING'] -- 查詢(query)的字元串(URL 中第一個問號 ? 之後的內容)。

9、$_SERVER['DOCUMENT_ROOT'] -- 當前運行腳本所在的文檔根目錄。在伺服器配置文件中定義。 如E:\server

10、$_SERVER['HTTP_ACCEPT'] -- 當前請求的 Accept: 頭信息的內容。

11、$_SERVER['HTTP_ACCEPT_CHARSET'] -- 當前請求的 Accept-Charset: 頭信息的內容。例如:「iso-8859-1,*,utf-8」。

12、$_SERVER['HTTP_ACCEPT_ENCODING'] -- 當前請求的 Accept-Encoding: 頭信息的內容。例如:「gzip」。

13、$_SERVER['HTTP_ACCEPT_LANGUAGE'] -- 當前請求的 Accept-Language: 頭信息的內容。例如:「en」。

14、$_SERVER['HTTP_CONNECTION'] -- 當前請求的 Connection: 頭信息的內容。例如:「Keep-Alive」。

15、$_SERVER['HTTP_HOST'] -- 當前請求的 Host: 頭信息的內容。

16、$_SERVER['HTTP_REFERER'] -- 鏈接到當前頁面的前一頁面的 URL 地址。

17、$_SERVER['HTTP_USER_AGENT'] -- 返回用戶使用的瀏覽器信息。也可以使用 get_browser() 得到此信息。

18、$_SERVER['HTTPS'] -- 如果通過https訪問,則被設為一個非空的值,否則返回off.

19、$_SERVER['REMOTE_ADDR'] -- 正在瀏覽當前頁面用戶的 IP 地址。

20、$_SERVER['REMOTE_HOST'] -- 正在瀏覽當前頁面用戶的主機名。反向域名解析基於該用戶的 REMOTE_ADDR。如本地測試返回127.0.0.1

21、$_SERVER['REMOTE_PORT'] -- 用戶連接到伺服器時所使用的埠。我在本機測試沒通過,不知道什麼原因。

22、$_SERVER['SCRIPT_FILENAME'] -- 當前執行腳本的絕對路徑名。如返回E:\server\index.php

23、$_SERVER['SERVER_ADMIN'] -- 該值指明了 Apache 伺服器配置文件中的 SERVER_ADMIN 參數。如果腳本運行在一個虛擬主機上,則該值是那個虛擬主機的值

24、$_SERVER['SERVER_PORT'] -- 伺服器所使用的埠。默認為「80」。如果使用 SSL 安全連接,則這個值為用戶設置的 HTTP 埠。

25、$_SERVER['SERVER_SIGNATURE'] -- 包含伺服器版本和虛擬主機名的字元串。

26、$_SERVER['PATH_TRANSLATED'] -- 當前腳本所在文件系統(不是文檔根目錄)的基本路徑。這是在伺服器進行虛擬到真實路徑的映像後的結果。 Apache 2 用 戶可以使用 httpd.conf 中的 AcceptPathInfo On 來定義 PATH_INFO。

27、$_SERVER['SCRIPT_NAME'] -- 包含當前腳本的路徑。這在頁面需要指向自己時非常有用。__FILE__ 包含當前文件的絕對路徑和文件名(例如包含文件)。

28、$_SERVER['REQUEST_URI'] -- 訪問此頁面所需的 URI。例如,「/index.html」。

29、$_SERVER['PHP_AUTH_DIGEST'] -- 當作為 Apache 模塊運行時,進行 HTTP Digest 認證的過程中,此變數被設置成客戶端發送的「Authorization」HTTP 頭內容(以便作進一步的認證操作)。

30、$_SERVER['PHP_AUTH_USER']-- 當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的用戶名。

31、$_SERVER['PHP_AUTH_PW'] -- 當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的密碼。

32、$_SERVER['AUTH_TYPE']--當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是認證的類型。

熱點內容
pythonif比較 發布:2025-02-02 05:24:03 瀏覽:259
已連接的無線網如何知道密碼 發布:2025-02-02 04:53:51 瀏覽:634
android編程入門經典pdf 發布:2025-02-02 04:46:19 瀏覽:57
安卓什麼軟體測試手機電池 發布:2025-02-02 04:28:52 瀏覽:996
手機上傳快 發布:2025-02-02 04:27:46 瀏覽:308
電腦配置詳解圖解都有哪些 發布:2025-02-02 04:26:27 瀏覽:716
景區應該有什麼配置 發布:2025-02-02 04:09:08 瀏覽:120
c語言與java工作 發布:2025-02-02 03:59:57 瀏覽:283
qq買什麼不要支付密碼 發布:2025-02-02 03:50:29 瀏覽:495
android讀取視頻 發布:2025-02-02 03:46:57 瀏覽:827