php重定向函数是什么,php的URL重定向header()函数

URL重定向我们会使用到header函数来操作,最简单的就是直接使用header(‘Location: ‘ . $url);就可以了,如果要做像301定向我们还需要发送状态代码,下面整理了一些例子一起来看看吧。

 代码如下复制代码

// 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 “

“function redirect() {window.location.replace(‘$url’);}\n”.

“setTimeout(‘redirect();’, 1000);\n”.

“”;

exit();

}

用HTTP头信息

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

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

 代码如下复制代码
<?php

$url = "www.jquerycn.cn";

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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值