目錄
php获取当前页面完整URL地址
首頁 後端開發 php教程 php获取当前页面完整URL地址方法

php获取当前页面完整URL地址方法

Jun 20, 2016 pm 01:05 PM
php技巧

php获取当前页面完整URL地址

这篇文章主要介绍了php获取当前页面完整URL地址的函数

使用PHP编写程序的时候,我们常常想要获取当前页面的URL。下面提供一个用于获取当前页面URL的函数以及使用方法:
示例一:

<?php // 说明:获取完整URL

function curPageURL() 
{
  $pageURL = 'http';

  if ($_SERVER["HTTPS"] == "on") 
  {
    $pageURL .= "s";
  }
  $pageURL .= "://";

  if ($_SERVER["SERVER_PORT"] != "80") 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
  } 
  else 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
  }
  return $pageURL;
}
?>

登入後複製

定义该函数之后就可以直接调用了:

<?php echo curPageURL();
?>
登入後複製

上面的函数可以获取当前页面完整的URL,即你在浏览器地址栏看到的内容。但是,有时候我们不想要URL中的参数( ? 号后面的内容),如:http://www.scutephp.com/hello.html?u=123,只想获取http://www.scutephp.com/hello.html,你可以将以上函数按示例二修改。

示例二:

<?php // 说明:获取无参数URL

function curPageURL() 
{
  $pageURL = 'http';

  if ($_SERVER["HTTPS"] == "on") 
  {
    $pageURL .= "s";
  }
  $pageURL .= "://";

  $this_page = $_SERVER["REQUEST_URI"];
  
  // 只取 ? 前面的内容
  if (strpos($this_page, "?") !== false)
  {
    $this_pages = explode("?", $this_page);
    $this_page = reset($this_pages);
  }

  if ($_SERVER["SERVER_PORT"] != "80") 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $this_page;
  } 
  else 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . $this_page;
  }
  return $pageURL;
}
?>

登入後複製

当然也可以采用 $_SERVER['PHP_SELF'] (该变量不返回URL中的参数),

示例三:

<?php // 说明:获取无参数URL

function curPageURL() 
{
  $pageURL = 'http';

  if ($_SERVER["HTTPS"] == "on") 
  {
    $pageURL .= "s";
  }
  $pageURL .= "://";

  if ($_SERVER["SERVER_PORT"] != "80") 
  {
    $pageURL .= $_SERVER["SERVER_NAME"].":" . $_SERVER["SERVER_PORT"] . $_SERVER['PHP_SELF'];
  } 
  else 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER['PHP_SELF'];
  }
  return $pageURL;
}
?>

登入後複製

另外,$_SERVER['REQUEST_URI'] 和 $_SERVER['REQUEST_URL'] 是有稍微区别的:
$_SERVER["REQUEST_URI"] 返回完整的路径,包含参数 ( /directory/file.ext?query=string )
$_SERVER['REQUEST_URL'] 只返回文件路径,不包括参数,( /directory/file.ext ),和 $_SERVER['PHP_SELF'] 差不多,只不过在有些服务器上$_SERVER['REQUEST_URL']不可用!

注意:URL使用rewrite规则的时候,$_SERVER['PHP_SELF'] 和 $_SERVER["REQUEST_URL"] 可能不会返回你想要的东西

最后提醒一点,$_SERVER["REQUEST_URI"] 只有 apache 才支持,想要获取$_SERVER['REQUEST_URI'] 值,可以使用以下方案:

<?php // 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案
function request_uri()
{
  if (isset($_SERVER['REQUEST_URI']))
  {
    $uri = $_SERVER['REQUEST_URI']; 
  }
  else
  {
    if (isset($_SERVER['argv']))
    {
      $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
    }
    else
    {
      $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
    }
  }
  return $uri;
}
?>
登入後複製

再为大家分享两种解决方法:

第一种方法:

<?php /**
 * 获取当前页面完整URL地址
 */
function get_url() {
  $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
  $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
  $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
  $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info);
  return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;
}
 
echo get_url();
?>

登入後複製

第二种方法:

javascript实现

top.location.href  顶级窗口的地址
this.location.href 当前窗口的地址


登入後複製

PHP实现

 

#测试网址:   http://localhost/blog/testurl.php?id=5
//获取域名或主机地址 
echo $_SERVER['HTTP_HOST']."<br>"; #localhost

//获取网页地址 
echo $_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php

//获取网址参数 
echo $_SERVER["QUERY_STRING"]."<br>"; #id=5

//获取用户代理 
echo $_SERVER['HTTP_REFERER']."<br>"; 

//获取完整的url
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
#http://localhost/blog/testurl.php?id=5

//包含端口号的完整url
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
#http://localhost:80/blog/testurl.php?id=5

//只取路径
$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; 
echo dirname($url);
#http://localhost/blog

登入後複製

希望本文所述对大家学习php程序设计有所帮助。


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP中的檔案上傳與下載技巧詳解 PHP中的檔案上傳與下載技巧詳解 Jun 25, 2023 pm 05:57 PM

PHP是一種非常流行的伺服器端程式語言,它在網站開發中被廣泛應用。其中,檔案上傳和下載是網站常用的功能之一,而PHP提供了豐富的函數和技巧來實現這些功能。在本文中,我們將詳細介紹PHP中的檔案上傳和下載技巧,讓你能夠更有效率地開發網站。文件上傳檔案上傳是指把本機電腦中的檔案傳送到遠端伺服器,上傳檔案後我們可以對這些檔案進行儲存、處理和展示等操作。在PHP中

PHP快手API介面呼叫技巧:如何處理介面回傳的錯誤訊息 PHP快手API介面呼叫技巧:如何處理介面回傳的錯誤訊息 Jul 20, 2023 pm 11:22 PM

PHP快手API介面呼叫技巧:如何處理介面回傳的錯誤訊息在使用PHP進行快手API介面呼叫時,我們常會遇到介面回傳錯誤的情況。對於處理介面傳回的錯誤訊息,我們需要進行適當的處理和回饋,以便提高應用程式的穩定性和使用者體驗。本文將介紹一些處理介面傳回錯誤訊息的技巧,並提供對應的程式碼範例。使用try-catch擷取異常在呼叫API介面時,可能會發生一些異常錯誤,

PHP中的分頁技術在框架中的應用方法詳解 PHP中的分頁技術在框架中的應用方法詳解 Jun 09, 2023 am 11:40 AM

隨著網路的快速發展,越來越多的網站需要實現資料分頁功能,以提高使用者的瀏覽體驗。在Web開發中,PHP是最受歡迎的伺服器端程式語言之一,而資料分頁功能是PHP開發中不可或缺的技術。本文將介紹PHP中的分頁技術在框架中的應用方法,並比較不同的分頁方案的優缺點。一、傳統PHP分頁方法在傳統PHP開發中,實作資料分頁功能需要編寫較多的程式碼,並且需要在每個頁面中重

深入了解PHP中替換換行的技巧 深入了解PHP中替換換行的技巧 Mar 20, 2024 pm 06:42 PM

替換PHP中的換行符號是在實際開發中經常會遇到的問題,特別是在處理文字資料時。換行符在不同作業系統中的表示方式可能不一樣,通常在Windows系統中是&quot;&quot;,在Linux系統中是&quot;&quot;。因此,我們需要對換行符號進行統一處理,以確保文字資料的格式正常。本文將深入探討PHP中替換換行符的技巧,並提供具體的程式碼範例。 1.使用PHP內建函數處理換行符PHP提供了一些內建函

PHP程式設計技巧:快速定位數組缺失數字的方法 PHP程式設計技巧:快速定位數組缺失數字的方法 Mar 01, 2024 pm 04:27 PM

PHP程式設計技巧:快速定位數組缺失數字的方法在程式設計中,常常會遇到需要檢查數組中是否缺少某些數字的情況。這時候,我們需要一種快速有效的方法來定位數組中缺少的數字,以便及時處理。本文將介紹一種基於PHP的程式設計技巧,透過具體的程式碼範例來展示快速定位數組中缺少數字的方法。 1.方法一:使用循環遍歷數組首先,我們可以透過循環遍歷數組的方式來檢查數組中缺少的數字。具體步驟

PHP程式設計技巧:如何處理圖片縮放 PHP程式設計技巧:如何處理圖片縮放 Aug 19, 2023 am 10:36 AM

PHP程式設計技巧:如何處理圖片縮放在現代網頁設計中,圖片是不可或缺的一部分,而圖片縮放是常見的操作之一。無論是在展示圖片集合,還是在回應不同大小裝置的需求上,圖片縮放都起到了重要的作用。本文將介紹如何使用PHP程式語言處理圖片縮放,並附上程式碼範例供參考。一、使用GD庫進行圖片縮放GD庫是PHP中一個強大的影像處理庫,我們可以使用它來實現圖片縮放功能。首先,確保

PHP高並發處理技巧解析 PHP高並發處理技巧解析 Aug 10, 2023 pm 06:53 PM

PHP高並發處理技巧解析隨著網路的發展,對於網站的並發訪問量要求也越來越高。而PHP作為一種開發網站的程式語言,面對高並發的存取壓力,需要一些特殊的處理技巧來提高效能和穩定性。本文將介紹一些PHP高並發處理的技巧,並提供程式碼範例。使用PHP-FPMPHP-FPM(FastCGIProcessManager)是PHP官方提供的進程管理器,它可以有效地

掌握PHP開發的50個功能實現技巧與經驗分享 掌握PHP開發的50個功能實現技巧與經驗分享 Nov 22, 2023 pm 04:51 PM

掌握PHP開發的50個功能實現技巧與經驗分享身為PHP開發者,我們時刻都在追求高效率、高品質的程式碼實作。為了提高開發效率和程式碼品質,我們需要累積一些經驗和技巧,以應對各種複雜的開發需求和挑戰。在本文中,我將分享50個實現各種功能的PHP開發技巧與經驗,希望對大家的PHP開發之路有所幫助。使用合適的框架:選擇和熟悉一個適合自己的PHP框架,可以提高開發效率和

See all articles