PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数

时间:2022-09-17 09:36:35

PHP 跳转,即重定向浏览器到指定的 URL,是一个很常见的功能。这种功能也有一些细节性的要求,比如等待多少秒以后跳转,用不用JavaScript实现跳转,等等。下面的跳转方法考虑到很多,并参数化,可以用到具体的项目当中。

?
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
50
51
52
53
<?php  
/**  
 * 重定向浏览器到指定的 URL  
 *  
 * @param string $url 要重定向的 url  
 * @param int $delay 等待多少秒以后跳转  
 * @param bool $js 指示是否返回用于跳转的 JavaScript 代码  
 * @param bool $jsWrapped 指示返回 JavaScript 代码时是否使用 <mce:script type="text/javascript"><!--
 标签进行包装  
 * @param bool $return 指示是否返回生成的 JavaScript 代码  
 */   
function redirect($url, $delay = 0, $js = false, $jsWrapped = true, $return = false)    
{    
  $delay = (int)$delay;    
  if (!$js) {    
    if (headers_sent() || $delay > 0) {    
      echo <<<EOT    
  <html>    
  <head>    
  <meta http-equiv="refresh" content="{$delay};URL={$url}" />    
  </head>    
  </html>    
EOT;    
      exit;    
    } else {    
      header("Location: {$url}");    
      exit;    
    }    
  }    
    
  $out = '';    
  if ($jsWrapped) {    
    $out .= '<script language="JavaScript" type="text/javascript">';    
  }    
  $url = rawurlencode($url);    
  if ($delay > 0) {    
    $out .= "window.setTimeOut(function () { document.location='{$url}'; }, {$delay});";    
  } else {    
    $out .= "document.location='{$url}';";    
  }    
  if ($jsWrapped) {    
    $out .= '
// --></mce:script>';    
  }    
    
  if ($return) {    
    return $out;    
  }    
    
  echo $out;    
  exit;    
}   
?>