本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何在PHP中进行重定向?

发布于2021-03-10 19:58     阅读(1253)     评论(0)     点赞(29)     收藏(2)


是否可以通过使用PHP将用户重定向到其他页面?

假设用户转到www.example.com/page.php并且我想将其重定向到www.example.com/index.php,那么在不使用元刷新的情况下该如何做呢?是否有可能?

这甚至可以保护我的页面免受未经授权的用户的侵害。


解决方案


现有答案的摘要加上我自己的两分钱:

1.基本答案

您可以使用该header()函数发送新的HTTP标头,但是必须在任何HTML或文本之前(<!DOCTYPE ...>例如,在声明之前)将其发送到浏览器

header('Location: '.$newURL);

2.重要细节

die()exit()

header("Location: http://example.com/myOtherPage.php");
die();

为什么要使用die()exit()每日WTF

绝对或相对URL

自2014年6月起,绝对URL和相对URL均可使用。请参阅RFC 7231,该文件已替换了旧的RFC 2616,其中仅允许绝对URL。

状态码

PHP的“位置”标头仍使用HTTP 302重定向代码,这是“临时”重定向,可能不是您应该使用的重定向。您应该考虑301(永久重定向)或303(其他)。

注意:W3C提到303标头与“许多HTTP / 1.1之前的用户代理不兼容。当前使用的浏览器都是HTTP / 1.1用户代理。对于许多其他用户代理(例如蜘蛛网和漫游器)而言,情况并非如此。

3.文件

HTTP标头和header()PHP中函数

4.替代方案

您可以使用http_redirect($url);需要安装PECL软件包pecl的替代方法

5.辅助功能

此功能未包含303状态代码:

function Redirect($url, $permanent = false)
{
    header('Location: ' . $url, true, $permanent ? 301 : 302);

    exit();
}

Redirect('http://example.com/', false);

这更加灵活:

function redirect($url, $statusCode = 303)
{
   header('Location: ' . $url, true, $statusCode);
   die();
}

6.解决方法

如前所述,header()重定向仅在任何内容写出之前起作用。如果在HTML输出中调用它们,它们通常会失败然后,您可以使用HTML标头变通方法(不是很专业!),例如:

 <meta http-equiv="refresh" content="0;url=finalpage.html">

甚至JavaScript重定向。

window.location.replace("http://example.com/");


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/109/3b8598eddfbc1b3d67f4/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)