Heim > php教程 > php手册 > 如何用php获取当前页面的URL地址(附代码)

如何用php获取当前页面的URL地址(附代码)

PHPz
Freigeben: 2018-10-17 14:34:11
Original
2194 Leute haben es durchsucht

这篇文章主要介绍了php获取当前页面完整URL地址的函数,感兴趣的小伙伴们可以参考一下

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

示例一:

<?php
// 说明:获取完整URL
function curPageURL() 
{
  $pageURL = &#39;http&#39;;
  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;
}
?>
Nach dem Login kopieren

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

<?php
 echo curPageURL();
?>
Nach dem Login kopieren

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

示例二:

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

function curPageURL() 
{
  $pageURL = &#39;http&#39;;

  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;
}
?>
Nach dem Login kopieren

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

示例三:

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

function curPageURL() 
{
  $pageURL = &#39;http&#39;;

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

  if ($_SERVER["SERVER_PORT"] != "80") 
  {
    $pageURL .= $_SERVER["SERVER_NAME"].":" . $_SERVER["SERVER_PORT"] . $_SERVER[&#39;PHP_SELF&#39;];
  } 
  else 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER[&#39;PHP_SELF&#39;];
  }
  return $pageURL;
}
?>
Nach dem Login kopieren

另外,$_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[&#39;REQUEST_URI&#39;] 值的通用解决方案
function request_uri()
{
  if (isset($_SERVER[&#39;REQUEST_URI&#39;]))
  {
    $uri = $_SERVER[&#39;REQUEST_URI&#39;]; 
  }
  else
  {
    if (isset($_SERVER[&#39;argv&#39;]))
    {
      $uri = $_SERVER[&#39;PHP_SELF&#39;] .&#39;?&#39;. $_SERVER[&#39;argv&#39;][0];
    }
    else
    {
      $uri = $_SERVER[&#39;PHP_SELF&#39;] .&#39;?&#39;. $_SERVER[&#39;QUERY_STRING&#39;];
    }
  }
  return $uri;
}
?>
Nach dem Login kopieren

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

第一种方法:

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

第二种方法:

javascript实现

top.location.href  顶级窗口的地址
this.location.href 当前窗口的地址
Nach dem Login kopieren

PHP实现

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

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

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

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

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

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

//只取路径
$url=&#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;].$_SERVER["REQUEST_URI"]; 
echo dirname($url);
#http://localhost/blog
Nach dem Login kopieren

【相关教程推荐】

1. php编程从入门到精通全套视频教程
2. php从入门到精通 
3. bootstrap教程

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage