发布于2021-03-10 19:58 阅读(1253) 评论(0) 点赞(29) 收藏(2)
是否可以通过使用PHP将用户重定向到其他页面?
假设用户转到www.example.com/page.php
并且我想将其重定向到www.example.com/index.php
,那么在不使用元刷新的情况下该如何做呢?是否有可能?
这甚至可以保护我的页面免受未经授权的用户的侵害。
现有答案的摘要加上我自己的两分钱:
您可以使用该header()
函数发送新的HTTP标头,但是必须在任何HTML或文本之前(<!DOCTYPE ...>
例如,在声明之前)将其发送到浏览器。
header('Location: '.$newURL);
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用户代理。对于许多其他用户代理(例如蜘蛛网和漫游器)而言,情况并非如此。
HTTP标头和header()
PHP中的函数
您可以使用http_redirect($url);
需要安装PECL软件包pecl的替代方法。
此功能未包含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();
}
如前所述,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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!