php的URL重定向header()函数


// URL重定向

function redirect($url, $time=0, $msg=”) {

//多行URL地址支持

$url = str_replace(array(“\n”, “\r”), ”, $url);

if ( empty($msg) )

$msg = “系统将在{$time}秒之后自动跳转到{$url}!”;

if (!headers_sent()) {

// redirect

if (0 === $time) {

header(‘Location: ‘ . $url);

} else {

header(“refresh:{$time};url={$url}”);

echo($msg);

}

exit();

} else {

$str = “”;

if ($time != 0)

$str .= $msg;

exit($str);

}

}

//url重定向2

function redirect($url) {

echo “

”;

exit();

}

用HTTP头信息

也就是用PHP的HEADER函数。PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Context-type: xxx/xxx"),页面的属性("No cache", "Expire")等等。

用HTTP头信息进行PHP重定向到另外一个页面的方法如下:


<?php

$url = "www.111cn.net";

if (!empty($url))

{

Header("HTTP/1.1 303 See Other"); //这条语句可以不写

Header("Location: $url");

}

?>

注意一下,"Localtion:"后面有一个空格,下面整理了一个全面的函数。


/**

* get_redirect_url()

* Gets the address that the provided URL redirects to,

* or FALSE if there's no redirect.

*

* @param string $url

* @return string

*/

function get_redirect_url($url){

$redirect_url = null;

$url_parts = @parse_url($url);

if (!$url_parts) return false;

if (!isset($url_parts['host'])) return false; //can't process relative URLs

if (!isset($url_parts['path'])) $url_parts['path'] = '/'

$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);

if (!$sock) return false;

$request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1rn";

$request .= 'Host: ' . $url_parts['host'] . "rn";

$request .= "Connection: Closernrn";

fwrite($sock, $request);

$response = ''

while(!feof($sock)) $response .= fread($sock, 8192);

fclose($sock);

if (preg_match('/^Location: (.+?)$/m', $response, $matches)){

return trim($matches[1]);

} else {

return false;

}

}

/**

* get_all_redirects()

* Follows and collects all redirects, in order, for the given URL.

*

* @param string $url

* @return array

*/

function get_all_redirects($url){

$redirects = array();

while ($newurl = get_redirect_url($url)){

if (in_array($newurl, $redirects)){

break;

}

$redirects[] = $newurl;

$url = $newurl;

}

return $redirects;

}

/**

* get_final_url()

* Gets the address that the URL ultimately leads to.

* Returns $url itself if it isn't a redirect.

*

* @param string $url

* @return string

*/

function get_final_url($url){

$redirects = get_all_redirects($url);

if (count($redirects)>0){

return array_pop($redirects);

} else {

return $url;

}

}

时间: 2024-08-01 06:46:24

php的URL重定向header()函数的相关文章

php header函数的常用http头设置

  这篇文章主要介绍了php header函数的常用http头设置,本文直接给出代码实例,代码中包含详细注释,需要的朋友可以参考下 ? 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 //ok header('HTTP/1.1 200 OK'); //设置一个404头:

PHP header()函数常用方法总结

 这篇文章主要介绍了PHP header()函数常用方法.总结了常见的用法,需要的朋友可以参考下 //定义编码  代码如下:header( 'Content-Type:text/html;charset=utf-8 '); //Atom  代码如下:header('Content-type: application/atom+xml'); //CSS  代码如下:header('Content-type: text/css'); //Javascript  代码如下:header('Conten

iOS 防 DNS 污染方案调研 --- 302等 URL 重定向业务场景

概述 302等 URL 重定向业务场景需要解决的问题: 302 等重定向状态码,如何正确执行跳转逻辑,要求跳转后,依然需要执行 IP 直连逻辑,多次 302,也能覆盖到. 302等 URL 重定向业务场景问题主要集中在 POST 请求上,解决方案的方向大致有几种: 将请求方式统一替换为 GET 解决 POST 请求时的重定向问题 将 URL 统一替换为 GET,这种方案在客户端这边是成本最低的,如果团队中达成一致是最好的.不过限制也是显而易见的.那么我们就着重讨论下如何解决 POST 请求时的重

php header函数的常用http头设置_php实例

//ok header('HTTP/1.1 200 OK'); //设置一个404头: header('HTTP/1.1 404 Not Found'); //设置地址被永久的重定向 header('HTTP/1.1 301 Moved Permanently'); //转到一个新地址 header('Location: http://www.example.org/'); //文件延迟转向: header('Refresh: 10; url=http://www.example.org/');

PHP中header()函数有什么用?常见header 状态

什么是头信息? 这里只作简单解释,详细的自己看http协议. 在 HTTP协议中,服务器端的回答(response)内容包括两部分:头信息(header) 和 体内容,这里的头信息不是HTML中的<head></head>部分,同样,体内容也不是<BODY>< /BODY>.头信息是用户看不见的,里面包含了很多项,包括:服务器信息.日期.内容的长度等.而体内容就是整个HTML,也就是你所能看见的全 部东西. 头信息有什么用呢? 头信息的作用很多,最主要的有下

php header函数输入图片IE不显示问题

刚开始img.php文件跳转到文件是这样写的 header("Location:图片的绝对网址"); 然后就发现了IE下不能显示图片,全都显示叉,而且直接在IE中输入img.php的网址,网页会跳转到图片网址,但是却提示: HTTP Error 403. The request URL is forbidden. 错误. 修改方法就是: header("Location:图片的相对地址"); 原来是路径问题,分析一下如果是使用绝对地址估计header函数以为是远程不

PHP header() 函数使用方法总结

header分为三部分: 第一部分为HTTP协议的版本(HTTP-Version): 第二部分为状态代码(Status): 第三部分为原因短语(Reason-Phrase). header()函数使用说明:   一.作用:   ~~~~~~~~~          PHP只是以HTTP协议将HTML文档的标头送到浏览器,告诉浏览器具体怎么处理这个页面,至于传送的内容则需要熟悉一下HTTP协议了,与PHP无关了,可参照http://www.w3.org/Protocols/rfc2616/rfc2

PHP header() 函数详细说明(301、404等错误设置)

  如果您刚刚开始学习PHP,可能有许多函数需要研究,今天我们就来学习一下PHP Header()的使用方法,更多的使用说明,请您参照PHP中文手册,下面是关于header函数的详细使用说明 不管页面有多少header,它会执行最后一个,不过是有条件的,例如: header('Location:http://www.liehuo.net'); header('Location:http://www.g.cn'); header('Location:http://www.baidu.com');

php header函数的详解

发送一个原始 HTTP 标头[Http Header]到客户端.标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔 例1  代码如下 复制代码 <?PHP Header("Location: http://www.111cn.net";); exit; //在每个重定向之后都必须加上"exit",避免发生错误后,继续执行. ?> 禁止页面在IE中缓存  代码如下 复制代码