検索
ホームページphp教程php手册php获取当前页面完整URL地址,php获取当前url

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

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

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

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

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

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

示例二:

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

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

示例三:

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

另外,$_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'] 值,可以使用以下方案:

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

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

第一种方法:

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

第二种方法:

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


  • PHP实现

#测试网址:   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

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

您可能感兴趣的文章:

  • php 获取完整url地址
  • PHP URL地址获取函数代码(端口等) 推荐
  • PHP为表单获取的URL 地址预设 http 字符串函数代码
  • 基于PHP CURL获取邮箱地址的详解
  • PHP使用CURL获取302跳转后的地址实例
  • PHP获取当前完整URL地址的函数
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター