在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
利用PHP的header()函数,可以实现页面跳转,如 header("Location: " . $url); 但它有个缺点,一旦HTTP报头块已经发送,就不能使用 header() 函数,来发送其它的标头。 这个时候只能利用前端HTML或JS技术来实现页面跳转了! 怎样知道HTTP报头块已经发送了呢? PHP的 headers_sent() 函数,可以帮忙。
PHP headers_sent() 函数 headers_sent() 函数检查 HTTP 标头是否已被发送以及在哪里被发送。 如果报头已发送,则返回 true,否则返回 false。 语法
提示和注释 注释:一旦报头块已经发送,就不能使用 header() 函数 来发送其它的标头。使用此函数至少可以避免与 HTTP 标头有关的错误信息。 例子1 <?php // 如果报头未发送,则发送一个 if (!headers_sent()) { header("Location: http://www.w3school.com.cn/"); exit; } ?> 例子2 使用可选的 file 和 line 参数: <?php // 传递 $file 和 $line,供日后使用 // 不要预先为它们赋值 if (!headers_sent($file, $line)) { header("Location: http://www.w3school.com.cn/"); exit; // Trigger an error here } else { echo "Headers sent in $file on line $line"; exit; } ?>
根据上面的知识点,我们可以整理出自己的PHP跳转函数: /** * URL跳转 * @param string $url 跳转地址 * @param int $time 跳转延时(单位:秒) * @param string $msg 提示语 */ function redirect($url, $time = 0, $msg = '') { $url = str_replace(array("\n", "\r"), '', $url); // 多行URL地址支持 if (empty($msg)) { $msg = "系统将在 {$time}秒 之后自动跳转到 {$url} !"; } if (headers_sent()) { $str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>"; if ($time != 0) { $str .= $msg; } exit($str); } else { if (0 === $time) { header("Location: " . $url); } else { header("Content-type: text/html; charset=utf-8"); header("refresh:{$time};url={$url}"); echo($msg); } exit(); } }
|
2022-08-30
2022-08-17
2022-11-06
2022-08-15
2022-08-18
请发表评论