好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php的URL重定向header()函数 - 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 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函数的详细内容...

  阅读:43次