> php教程 > php手册 > php获取当前页面完整URL地址,php获取当前url

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-13 08:48:32
원래의
1102명이 탐색했습니다.

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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

로그인 후 복사

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

1

2

3

<&#63;php

 echo curPageURL();

&#63;>

로그인 후 복사

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

示例二:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<&#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中的参数),

示例三:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<&#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'] 值,可以使用以下方案:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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

로그인 후 복사

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

第一种方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<&#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实现

1

2

top.location.href  顶级窗口的地址

this.location.href 当前窗口的地址

로그인 후 복사
  • PHP实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#测试网址:   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으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿