PHP 跳转,即重定向浏览器到指定的 URL,是一个很常见的功能。这种功能也有一些细节性的要求,比如等待多少秒以后跳转,用不用JavaScript实现跳转,等等。下面的跳转方法考虑到很多,并参数化,可以用到具体的项目当中。
01 | <?php |
02 | /** |
03 | * 重定向浏览器到指定的 URL |
04 | * |
05 | * @param string $url 要重定向的 url |
06 | * @param int $delay 等待多少秒以后跳转 |
07 | * @param bool $js 指示是否返回用于跳转的 JavaScript 代码 |
08 | * @param bool $jsWrapped 指示返回 JavaScript 代码时是否使用 <mce:script type="text/javascript"><!-- 标签进行包装 |
09 | * @param bool $return 指示是否返回生成的 JavaScript 代码 |
10 | */ |
11 | function redirect( $url , $delay = 0, $js = false, $jsWrapped = true, $return = false) |
12 | { |
13 | $delay = (int) $delay ; |
14 | if (! $js ) { |
15 | if (headers_sent() || $delay > 0) { |
16 | echo <<<EOT |
17 | <html> |
18 | <head> |
19 | <meta http-equiv= "refresh" content= "{$delay};URL={$url}" /> |
20 | </head> |
21 | </html> |
22 | EOT; |
23 | exit ; |
24 | } else { |
25 | header( "Location: {$url}" ); |
26 | exit ; |
27 | } |
28 | } |
29 | $out = '' ; |
30 | if ( $jsWrapped ) { |
31 | $out .= '<script language="JavaScript" type="text/javascript">' ; |
32 | } |
33 | $url = rawurlencode( $url ); |
34 | if ( $delay > 0) { |
35 | $out .= "window.setTimeOut(function () { document.location='{$url}'; }, {$delay});" ; |
36 | } else { |
37 | $out .= "document.location='{$url}';" ; |
38 | } |
39 | if ( $jsWrapped ) { |
40 | $out .= ' |
41 | // --></mce:script>'; |
42 | } |
43 | if ( $return ) { |
44 | return $out ; |
45 | } |
46 | echo $out ; |
47 | exit ; |
48 | } |
49 | ?> |