1、PHP獲取當前類名、方法名
__CLASS__ 獲取當前類名
__FUNCTION__ 當前函數名(confirm)
__METHOD__ 當前方法名 (bankcard::confirm)
__FUNCTION__ 函數名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
__CLASS__ 類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
__METHOD__ 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。
注:這些常量前后均是兩個下划線。
get_class(class name);//取得當前語句所在類的類名
get_class_methods(class name);//取得class name 類的所有的方法名,並且組成一個數組
get_class_vars(class name);//取得class name 類的所有的變亮名,並組成一個數組
2、PHP 獲取URL地址
服務器變量:$_SERVER
使用范例
Php代碼
1. $uri = $_SERVER['REQUEST_URI'];
2. echo $uri;
3. 輸出:/snowing/products
4.
5.
6. $url = 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
7. echo $url;
8. 輸出:http://www.site.com:80/snowing/products
9.
10.
11.$http = (isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!='off')?'https://':'http://';
12.$port = $_SERVER["SERVER_PORT"]==80?'':':'$_SERVER["SERVER_PORT"];
13.$url = $http.$port.$_SERVER["REQUEST_URI"];
14.echo $url;
15.輸出:http://www.site.com/snowing/products
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_SERVER_VARS。
$_SERVER 是一個包含諸如頭部(headers)、路徑(paths)和腳本位置(script locations)的數組。數組的實體由 web 服務器創建。不能保證所有的服務器都能產生所有的信息;服務器可能忽略了一些信息,或者產生了一些未在下面列出的新的信息。這意味着,大量的這些變量在 CGI 1.1 specification 中說明,所以您應該仔細研究它。
這是一個“superglobal”,或者可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中您不需要使用 global $_SERVER; 訪問它,就如同使用 $HTTP_SERVER_VARS 一樣。
$HTTP_SERVER_VARS 包含着同樣的信息,但它不是一個自動全局變量。(注意: $HTTP_SERVER_VARS 和 $_SERVER 是不同的變量,PHP處理它們的方式不同。)
如果設置了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_SERVER 和 $HTTP_SERVER_VARS 數組。相關信息,請參閱安全的相關章節 使用 Register Globals。這些單獨的全局變量不是自動全局變量。
您或許會發現下面列出的某些 $_SERVER 元素並不可用。注意,如果以命令行方式運行 PHP,下面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。
“PHP_SELF”
當前正在執行腳本的文件名,與 document root相關。舉例來說,在URL地址為 http://example.com/test.php/foo.bar 的腳本中使用$_SERVER['PHP_SELF'] 將會得到 /test.php/foo.bar 這個結果。 如果 PHP 以命令行方式運行,該變量無效。
“argv”
傳遞給該腳本的參數。當腳本運行在命令行方式時,argv 變量傳遞給程序 C 語言樣式的命令行參數。當調用 GET 方法時,該變量包含請求的數據。
“argc”
包含傳遞給程序的命令行參數的個數(如果運行在命令行模式)。
“GATEWAY_INTERFACE”
服務器使用的 CGI 規范的版本。例如,“CGI/1.1”。
'SERVER_NAME'
當前運行腳本所在服務器主機的名稱。如果該腳本運行在一個虛擬主機上,該名稱是由那個虛擬主機所設置的值決定。
'SERVER_SOFTWARE'
服務器標識的字串,在響應請求時的頭部中給出。
“SERVER_PROTOCOL”
請求頁面時通信協議的名稱和版本。例如,“HTTP/1.0”。
“REQUEST_METHOD”
訪問頁面時的請求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
“QUERY_STRING”
查詢(query)的字符串。
“DOCUMENT_ROOT”
當前運行腳本所在的文檔根目錄。在服務器配置文件中定義。
“HTTP_ACCEPT”
當前請求的 Accept: 頭部的內容。
“HTTP_ACCEPT_CHARSET”
當前請求的 Accept-Charset: 頭部的內容。例如:“iso-8859-1,*,utf-8”。
“HTTP_ACCEPT_ENCODING”
當前請求的 Accept-Encoding: 頭部的內容。例如:“gzip”。
“HTTP_ACCEPT_LANGUAGE”
當前請求的 Accept-Language: 頭部的內容。例如:“en”。
“HTTP_CONNECTION”
當前請求的 Connection: 頭部的內容。例如:“Keep-Alive”。
“HTTP_HOST”
當前請求的 Host: 頭部的內容。
“HTTP_REFERER”
鏈接到當前頁面的前一頁面的 URL 地址。不是所有的用戶代理(瀏覽器)都會設置這個變量,而且有的還可以手工修改 HTTP_REFERER。因此,這個變量不總是正確真實的。
“HTTP_USER_AGENT”
當前請求的 User_Agent: 頭部的內容。該字符串表明了訪問該頁面的用戶代理的信息。一個典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。您也可以使用 get_browser() 得到這個信息。
“REMOTE_ADDR”
正在瀏覽當前頁面用戶的 IP 地址。
'REMOTE_HOST'
正在瀏覽當前頁面用戶的主機名。反向域名解析基於該用戶的 REMOTE_ADDR。
注: 必須配置 Web 服務器來建立此變量。例如 Apache 需要在 httpd.conf 中有 HostnameLookups On。參見 gethostbyaddr()。
“REMOTE_PORT”
用戶連接到服務器時所使用的端口。
“SCRIPT_FILENAME”
當前執行腳本的絕對路徑名。
“SERVER_ADMIN”
該值指明了 Apache 服務器配置文件中的 SERVER_ADMIN 參數。如果腳本運行在一個虛擬主機上,則該值是那個虛擬主機的值。
“SERVER_PORT”
服務器所使用的端口。默認為“80”。如果你使用 SSL 安全連接,則這個值為您所設置的 HTTP 端口。
“SERVER_SIGNATURE”
包含服務器版本和虛擬主機名的字符串。
“PATH_TRANSLATED”
當前腳本所在文件系統(不是文檔根目錄)的基本路徑。這是在服務器進行虛擬到真實路徑的映像后的結果。
“SCRIPT_NAME”
包含當前腳本的路徑。這在頁面需要指向自己時非常有用。
“REQUEST_URI”
訪問此頁面所需的 URI。例如,“/index.html”。
“PHP_AUTH_USER”
當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是用戶輸入的用戶名。
“PHP_AUTH_PW”
當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是用戶輸入的密碼。
“AUTH_TYPE”
當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是認證的類型。
Ø 獲取訪客來路URL地址信息
不少網站訪問統計程序提供有“來路”信息,客戶查閱統計資料時從中得知訪問者從什么網站連接過來。所謂“來路”,其實就是別人從哪里點擊了你網站的鏈接,即,從什么頁面連接到你的網站。在PHP中,獲取“來路”信息是非常簡單的,我們只需用到referer。HTTP頭攜帶的信息當中包含有一個變量$_SERVER['HTTP_REFERER'],它提供的就是“來路”完整URL地址。以下代碼放入你的PHP頁面腳本,它就能夠打印出連接到該腳本所在頁面的具體地址(即“來路”):
$v_url=$HTTP_REFERER;
print $v_url;
比如,用戶從本站的友情鏈接點擊你的網站,你將得到類似”htttp://www.ilife8.com/code/773.html“的URL地址。就這么簡單。
來路的URL地址可能是很長的。作為來路地址,很多情況下,我們可能只關心它屬於哪個網站,即,網站的虛擬主機名叫什么。一個URL地址包含有諸多實體信息,主要有:
·方案(scheme)- HTTP
·主機(host) – www.ilife8.com
·路徑(path) – /code/773.html
PHP提供一個截取這些實體信息的簡便方案:parse_url()函數。
Ø parse_url()函數
array parse_url ( string url );
parse_url()函數解析一個URL並返回一個關聯數組,包含在URL 中出現的各種組成部分。本函數不是用來驗證給定URL 的合法性的,只是將其分解為下面列出的部分。不完整的 URL 也被接受,parse_url() 會嘗試盡量正確地將其解析。對嚴重不合格的 URL,parse_url() 可能會返回 FALSE 並發出E_WARNING。否則會返回一個關聯數組,其組成部分為(至少有一個):
- scheme - 如 http
- host
- port
- user
- pass
- path
- query - 在問號 ? 之后
- fragment - 在散列符號 # 之后
Example #1 parse_url() 例子
<?php
$url
=
'http://username:password@hostname/path?arg=value#anchor'
;
print_r
(
parse_url
(
$url
));
?>
以上例程會輸出:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
可以看到,可以很容易分解出一個URL的各個部,那如果要拿指定的部分出來的話也很容易,如:
echo parse_url($url,PHP_URL_PATH);
就是在第二個參數中,設定如下的參數:PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY or PHP_URL_FRAGMENT.
parse_url() 是專門用來解析 URL 而不是 URI 的,也不能用於相對 URL。不過為遵從 PHP 向后兼容的需要有個例外,對file:// 協議允許三個斜線(file:///...)。其它任何協議都不能這樣。
Ø pathinfo()函數
mixed pathinfo ( string $path [, int $options ] )
pathinfo() 返回一個關聯數組包含有 path 的信息。包括以下的數組單元:dirname,basename 和 extension。
可以通過參數 options 指定要返回哪些單元。它們包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION。默認是返回全部的單元。如果不是要求取得所有單元,則本函數返回字符串。
Example #1 pathinfo() 例子
<?php
$path_parts
=
pathinfo
(
"/www/htdocs/index.html"
);
echo
$path_parts
[
"dirname"
] .
"\n"
;
echo
$path_parts
[
"basename"
] .
"\n"
;
echo
$path_parts
[
"extension"
] .
"\n"
;
?>
以上例程會輸出:
/www/htdocs
index.html
html
Ø 其他相關函數
dirname() - 返回路徑中的目錄部分
basename() - 返回路徑中的文件名部分