PHP 獲取當前類名、方法名、URL地址


  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 的信息。包括以下的數組單元:dirnamebasename 和 extension

可以通過參數 options 指定要返回哪些單元。它們包括:PATHINFO_DIRNAMEPATHINFO_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() - 返回路徑中的文件名部分


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM