標籤:
1、$_SERVER["SCRIPT_NAME"]
說明:包含當前指令碼的路徑
2、$_SERVER["PHP_SELF"]
說明:當前正在執行指令碼的檔案名稱
3、$_SERVER["QUERY_STRING"]
說明:查詢(query)的字串
4、$_SERVER["REQUEST_URI"]
說明:訪問此頁面所需的URI
執行個體:
1.http://blog.snsgou.com/ (直接開啟首頁)
結果:
$_SERVER["SCRIPT_NAME"] = "/index.php"$_SERVER["PHP_SELF"] = "/index.php"$_SERVER["QUERY_STRING"] = ""$_SERVER["REQUEST_URI"] = "/"
2.http://blog.snsgou.com/?p=222 (附帶查詢)
結果:
$_SERVER["SCRIPT_NAME"] = "/index.php"$_SERVER["PHP_SELF"] = "/index.php"$_SERVER["QUERY_STRING"] = "p=222"$_SERVER["REQUEST_URI"] = "/?p=222"
3.http://blog.snsgou.com/index.php?p=222&q=biuuu
結果:
$_SERVER["SCRIPT_NAME"] = "/index.php"$_SERVER["PHP_SELF"] = "/index.php"$_SERVER["QUERY_STRING"] = "p=222&q=biuuu"$_SERVER["REQUEST_URI"] = "/index.php?p=222&q=biuuu"
4.http://blog.snsgou.com/123/123.php/abc/def?id=222&name=jack
$_SERVER["SCRIPT_NAME"] = "/123/123.php"$_SERVER["PHP_SELF"] = "/123/123.php/abc/def"$_SERVER["QUERY_STRING"] = "id=222&name=jack"$_SERVER["REQUEST_URI"] = "/123/123.php/abc/def?id=222&name=jack"
5.http://blog.snsgou.com/123/123.php/abc/def.bat?id=222&name=jack
$_SERVER["SCRIPT_NAME"] = "/123/123.php"$_SERVER["PHP_SELF"] = "/123/123.php/abc/def.bat"$_SERVER["QUERY_STRING"] = "id=222&name=jack"$_SERVER["REQUEST_URI"] = "/123/123.php/abc/def.bat?id=222&name=jack"
- $_SERVER["SCRIPT_NAME"] 擷取當前指令碼的路徑,如:index.php
- $_SERVER["PHP_SELF"] 當前正在執行指令碼的檔案名稱
- $_SERVER["QUERY_STRING"] 擷取查詢語句,執行個體中可知,擷取的是?後面的值
- $_SERVER["REQUEST_URI"] 擷取http://blog.snsgou.com後面的值,包括/
總結一下,對於SCRIPT_NAME、PHP_SELF、QUERY_STRING、REQUEST_URI,深入瞭解將有利於我們 在$_SERVER函數中正確調用這四個值。
一般地: $_SERVER["REQUEST_URI"] = $_SERVER["PHP_SELF"] . ‘?‘ . $_SERVER["QUERY_STRING"]
注意:當有地址修正時,情況有些變化,如:
/class 重寫到 /index.php?app=class&mod=Index&act=index
此時:
$_SERVER[‘PHP_SELF‘] 值等於 /index.php
$_SERVER[‘QUERY_STRING‘] 值等於 /index.php?app=class&mod=Index&act=index
$_SERVER["REQUEST_URI"] 值等於 /class
uchome系統中處理技巧:
//處理REQUEST_URIif (!isset($_SERVER[‘REQUEST_URI‘])) { $_SERVER[‘REQUEST_URI‘] = $_SERVER[‘PHP_SELF‘]; if (isset($_SERVER[‘QUERY_STRING‘])) $_SERVER[‘REQUEST_URI‘] .= ‘?‘ . $_SERVER[‘QUERY_STRING‘];}if ($_SERVER[‘REQUEST_URI‘]) { $temp = urldecode($_SERVER[‘REQUEST_URI‘]); if (strexists($temp, ‘<‘) || strexists($temp, ‘"‘)) { $_GET = shtmlspecialchars($_GET); // XSS }}
延伸閱讀:
PHP擷取當前頁面的URL
PHP擷取當前網域名稱$_SERVER[‘HTTP_HOST‘]和$_SERVER[‘SERVER_NAME‘]的區別
PHP的$_SERVER[‘PHP_SELF‘]造成的XSS漏洞攻擊及其解決方案
$_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]