php獲取當前頁面完整url地址實例
來源:程序員人生 發布時間:2013-11-15 13:27:56 閱讀次數:2633次
在php中我們要獲取 當前頁面完整url地址需要使用到幾個常用的php全局變量函數了,主要是以$_SERVER[]這些變量,下面我來給各位看一個獲取當前頁面完整url地址程序吧。
先來看一些PHP變量:
$_SERVER[ 'SERVER_NAME' ] #當前運行腳本所在服務器主機的名稱。
$_SERVER[ 'QUERY_STRING' ] #查詢(query)的字符串。
$_SERVER[ 'HTTP_HOST' ] #當前請求的 Host: 頭部的內容。
$_SERVER[ 'HTTP_REFERER' ] #鏈接到當前頁面的前一頁面的 URL 地址。
$_SERVER[ 'SERVER_PORT' ] #服務器所使用的端口
$_SERVER[ 'REQUEST_URI' ] #訪問此頁面所需的 URI。
有了些面函數我們就可以開始了,先來看一些base方法.
baseUrl的兩種方法
方法一代碼如下:
-
- function baseUrl($uri=''){
- $baseUrl = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https://' : 'http://';
- $baseUrl .= isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : getenv('HTTP_HOST');
- $baseUrl .= isset($_SERVER['SCRIPT_NAME']) ? dirname($_SERVER['SCRIPT_NAME']) : dirname(getenv('SCRIPT_NAME'));
- return $baseUrl.'/'.$uri;
- }
方法二代碼如下:
-
-
-
-
- function baseUrl()
- {
-
- $currentPath = $_SERVER['PHP_SELF'];
-
- $pathInfo = pathinfo($currentPath);
-
- $hostName = $_SERVER['HTTP_HOST'];
-
- $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://' ? 'https://' : 'http://';
-
- return $protocol.$hostName.$pathInfo['dirname']."/";
- }
方法三代碼如下:
- <?php
-
-
-
-
- function get_page_url(){
- $url = (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') ? 'https://' : 'http://';
- $url .= $_SERVER['HTTP_HOST'];
- $url .= isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : urlencode($_SERVER['PHP_SELF']) . '?' . urlencode($_SERVER['QUERY_STRING']);
- return $url;
- }
- echo get_page_url();
- ?>
下面說明一下獲取當前頁面完整路徑的方法,代碼如下:
- <?php
- function getFullUrl(){
- # 解決通用問題
- $requestUri = '';
- if (isset($_SERVER['REQUEST_URI'])) { #$_SERVER["REQUEST_URI"] 只有 apache 才支持,
- $requestUri = $_SERVER['REQUEST_URI'];
- } else {
- if (isset($_SERVER['argv'])) {
- $requestUri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
- } else if(isset($_SERVER['QUERY_STRING'])) {
- $requestUri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
- }
- }
-
- $scheme = emptyempty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
- $protocol = strstr(strtolower($_SERVER["SERVER_PROTOCOL"]), "/",true) . $scheme;
- $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
- # 獲取的完整url
- $_fullUrl = $protocol . "://" . $_SERVER['SERVER_NAME'] . $port . $requestUri;
- return $_fullUrl;
- }
echo getFullUrl();注:由于php沒有內置的函數,我們需要對url上的參數進行組合,從而實現整個url.
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈