PHP 获取当前类名、方法名、URL地址
? 1、PHP獲取當前類名、方法名
??__CLASS__ 獲取當前類名
??__FUNCTION__ 當前函數(shù)名(confirm)
??__METHOD__ 當前方法名 (bankcard::confirm)
?
__FUNCTION__??? 函數(shù)名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數(shù)被定義時的名字(區(qū)分大小寫)。在 PHP 4 中該值總是小寫字母的。
__CLASS__??? 類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時的名字(區(qū)分大小寫)。在 PHP 4 中該值總是小寫字母的。
__METHOD__??? 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區(qū)分大小寫)。
注:這些常量前后均是兩個下劃線。
get_class(class name);//取得當前語句所在類的類名
get_class_methods(class name);//取得class name 類的所有的方法名,并且組成一個數(shù)組
get_class_vars(class name);//取得class name 類的所有的變亮名,并組成一個數(shù)組
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)的數(shù)組。數(shù)組的實體由?web?服務器創(chuàng)建。不能保證所有的服務器都能產生所有的信息;服務器可能忽略了一些信息,或者產生了一些未在下面列出的新的信息。這意味著,大量的這些變量在?CGI 1.1 specification?中說明,所以您應該仔細研究它。?
這是一個“superglobal”,或者可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數(shù)或方法中您不需要使用?global $_SERVER;?訪問它,就如同使用?$HTTP_SERVER_VARS?一樣。?
$HTTP_SERVER_VARS?包含著同樣的信息,但它不是一個自動全局變量。(注意:?$HTTP_SERVER_VARS?和?$_SERVER?是不同的變量,PHP處理它們的方式不同。)
如果設置了?register_globals?指令,這些變量也在所有腳本中可用;也就是,分離了?$_SERVER?和?$HTTP_SERVER_VARS?數(shù)組。相關信息,請參閱安全的相關章節(jié)?使用?Register Globals。這些單獨的全局變量不是自動全局變量。?
您或許會發(fā)現(xiàn)下面列出的某些?$_SERVER?元素并不可用。注意,如果以命令行方式運行?PHP,下面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。?
“PHP_SELF”?
當前正在執(zhí)行腳本的文件名,與?document root相關。舉例來說,在URL地址為?http://example.com/test.php/foo.bar?的腳本中使用$_SERVER['PHP_SELF']?將會得到?/test.php/foo.bar?這個結果。?如果?PHP?以命令行方式運行,該變量無效。?
“argv”?
傳遞給該腳本的參數(shù)。當腳本運行在命令行方式時,argv?變量傳遞給程序?C?語言樣式的命令行參數(shù)。當調用?GET?方法時,該變量包含請求的數(shù)據(jù)。?
“argc”?
包含傳遞給程序的命令行參數(shù)的個數(shù)(如果運行在命令行模式)。?
“GATEWAY_INTERFACE”?
服務器使用的?CGI?規(guī)范的版本。例如,“CGI/1.1”。?
'SERVER_NAME'?
當前運行腳本所在服務器主機的名稱。如果該腳本運行在一個虛擬主機上,該名稱是由那個虛擬主機所設置的值決定。?
'SERVER_SOFTWARE'?
服務器標識的字串,在響應請求時的頭部中給出。?
“SERVER_PROTOCOL”?
請求頁面時通信協(xié)議的名稱和版本。例如,“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”?
當前執(zhí)行腳本的絕對路徑名。?
“SERVER_ADMIN”?
該值指明了?Apache?服務器配置文件中的?SERVER_ADMIN?參數(shù)。如果腳本運行在一個虛擬主機上,則該值是那個虛擬主機的值。?
“SERVER_PORT”?
服務器所使用的端口。默認為“80”。如果你使用?SSL?安全連接,則這個值為您所設置的?HTTP?端口。?
“SERVER_SIGNATURE”?
包含服務器版本和虛擬主機名的字符串。?
“PATH_TRANSLATED”?
當前腳本所在文件系統(tǒng)(不是文檔根目錄)的基本路徑。這是在服務器進行虛擬到真實路徑的映像后的結果。?
“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地址信息
不少網(wǎng)站訪問統(tǒng)計程序提供有“來路”信息,客戶查閱統(tǒng)計資料時從中得知訪問者從什么網(wǎng)站連接過來。所謂“來路”,其實就是別人從哪里點擊了你網(wǎng)站的鏈接,即,從什么頁面連接到你的網(wǎng)站。在PHP中,獲取“來路”信息是非常簡單的,我們只需用到referer。HTTP頭攜帶的信息當中包含有一個變量$_SERVER['HTTP_REFERER'],它提供的就是“來路”完整URL地址。以下代碼放入你的PHP頁面腳本,它就能夠打印出連接到該腳本所在頁面的具體地址(即“來路”):
$v_url=$HTTP_REFERER;
print $v_url;
比如,用戶從本站的友情鏈接點擊你的網(wǎng)站,你將得到類似”htttp://www.ilife8.com/code/773.html“的URL地址。就這么簡單。
來路的URL地址可能是很長的。作為來路地址,很多情況下,我們可能只關心它屬于哪個網(wǎng)站,即,網(wǎng)站的虛擬主機名叫什么。一個URL地址包含有諸多實體信息,主要有:
·方案(scheme)- HTTP
·主機(host)?–?www.ilife8.com
·路徑(path)?–?/code/773.html
PHP提供一個截取這些實體信息的簡便方案:parse_url()函數(shù)。
?
??parse_url()函數(shù)
array?parse_url ( string?url );
parse_url()函數(shù)解析一個URL并返回一個關聯(lián)數(shù)組,包含在URL?中出現(xiàn)的各種組成部分。本函數(shù)不是用來驗證給定URL?的合法性的,只是將其分解為下面列出的部分。不完整的?URL?也被接受,parse_url()?會嘗試盡量正確地將其解析。對嚴重不合格的?URL,parse_url()?可能會返回?FALSE?并發(fā)出E_WARNING。否則會返回一個關聯(lián)數(shù)組,其組成部分為(至少有一個):
- 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); 就是在第二個參數(shù)中,設定如下的參數(shù):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://?協(xié)議允許三個斜線(file:///...)。其它任何協(xié)議都不能這樣。
?
??pathinfo()函數(shù)
mixed?pathinfo?(?string?$path?[,?int?$options?] )
pathinfo()?返回一個關聯(lián)數(shù)組包含有?path?的信息。包括以下的數(shù)組單元:dirname,basename?和?extension。
可以通過參數(shù)?options?指定要返回哪些單元。它們包括:PATHINFO_DIRNAME,PATHINFO_BASENAME?和?PATHINFO_EXTENSION。默認是返回全部的單元。如果不是要求取得所有單元,則本函數(shù)返回字符串。
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??其他相關函數(shù)
dirname()?-?返回路徑中的目錄部分
basename()?-?返回路徑中的文件名部分
轉載于:https://www.cnblogs.com/sdgf/p/5685047.html
總結
以上是生活随笔為你收集整理的PHP 获取当前类名、方法名、URL地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Openlayers3 加载百度地图,天
- 下一篇: yum 配置