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 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 = [<meta http-equiv=’Refresh’ content=’{ $time };URL={ $url }’>]; if ( $time != 0) $str .= $msg ; exit ( $str ); } } //url重定向2 function redirect( $url ) { echo [<script>]. [ function redirect() {window.location.replace(‘ $url ’);}\n]. [setTimeout(‘redirect();’, 1000);\n]. [</script>]; exit (); }用HTTP头信息
也就是用PHP的HEADER函数。PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Context-type: xxx/xxx"),页面的属性("No cache", "Expire")等等。
用HTTP头信息进行PHP重定向到另外一个页面的方法,代码如下:
<?php $url = "HdhCmsTestphpfensi测试数据" ; if (! empty 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 ; } }查看更多关于php的URL重定向header()函数 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30913