Home  >  Article  >  Backend Development  >  php gets the complete URL address of the current page, php gets the current url_PHP tutorial

php gets the complete URL address of the current page, php gets the current url_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 09:02:10932browse

php gets the complete URL address of the current page, php gets the current url

When writing programs in PHP, we often want to get the URL of the current page. The following provides a function for obtaining the current page URL and how to use it:
Example 1:

<&#63;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;
}
&#63;>

After defining this function, you can call it directly:

<&#63;php
 echo curPageURL();
&#63;>

The above function can get the complete URL of the current page, which is what you see in the browser address bar. However, sometimes we don’t want the parameters in the URL (the content after the ? number), such as: http://www.ludou.org/hello.html?u=123, we just want to get http://www.ludou. org/hello.html, you can modify the above function as shown in Example 2.

Example 2:

<&#63;php
// 说明:获取无参数URL

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

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

  $this_page = $_SERVER["REQUEST_URI"];
  
  // 只取 &#63; 前面的内容
  if (strpos($this_page, "&#63;") !== false)
  {
    $this_pages = explode("&#63;", $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;
}
&#63;>

Of course, you can also use $_SERVER['PHP_SELF'] (this variable does not return parameters in the URL),

Example 3:

<&#63;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;
}
&#63;>

In addition, $_SERVER['REQUEST_URI'] and $_SERVER['REQUEST_URL'] are slightly different:
$_SERVER["REQUEST_URI"] Returns the complete path, including parameters (/directory/file.ext?query=string)
$_SERVER['REQUEST_URL'] Only returns the file path, excluding parameters, (/directory/file.ext), which is similar to $_SERVER['PHP_SELF'], except in $_SERVER['REQUEST_URL'] is not available on some servers!

Note: When the URL uses rewrite rules, $_SERVER['PHP_SELF'] and $_SERVER["REQUEST_URL"] may not return what you want

One last reminder, $_SERVER["REQUEST_URI"] is only supported by apache. If you want to get the value of $_SERVER['REQUEST_URI'], you can use the following solution:

<&#63;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'] .'&#63;'. $_SERVER['argv'][0];
    }
    else
    {
      $uri = $_SERVER['PHP_SELF'] .'&#63;'. $_SERVER['QUERY_STRING'];
    }
  }
  return $uri;
}
&#63;>

I will share with you two more solutions:

First method:

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

Second method:

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


  • PHP implementation

#测试网址:   http://localhost/blog/testurl.php&#63;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'].'&#63;'.$_SERVER['QUERY_STRING'];
#http://localhost/blog/testurl.php&#63;id=5

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

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

I hope this article will help you learn PHP programming.

Articles you may be interested in:

  • php Get the complete url address
  • PHP URL address get function code (port, etc.) Recommended
  • PHP as form Obtained URL address default http string function code
  • Detailed explanation of obtaining email address based on PHP CURL
  • PHP uses CURL to obtain the address instance after 302 jump
  • PHP obtain Function of the current complete URL address

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1086646.htmlTechArticlephp gets the complete URL address of the current page, php gets the current url When writing programs in PHP, we often want to get The URL of the current page. The following provides a method for getting the current page UR...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn