在Stack Overflow上,提出了如何在输入时或在值被更改后重定向用户的问题,并且在PHP中,标准答案是修改标题以实现此目的。
但是,在PHP中,必须在发布任何html或文本之前更改标题。
我经常发布自己的个人解决方案,如下所示:
"当您要执行重定向并编写以下内容时结束PHP标记:
<script>
location.replace("Whatever.php");
</script>
然后再次拿起你的PHP标签来完成你的代码。&#34;
每次我发布时,答案几乎立即被遗忘。但是,据我所知,它的工作原理完整无缺。
所以我的问题是,为什么这么重要?使用这种令人不悦的解决方案有什么用呢?
完全使用示例(不包括转义函数):
if(isset($_GET['role'])){ //If value set in GET
$role = $_GET['role']
if($role == "Admin"){ ?> // Drop PHP tag
<script>location.replace("AdminPage.php");</script> //Solution
<?php else{ ?>
<script>location.replace("StandardPage.php");</script> //Solution
<?php } } ?> //Pick up Tag final time and Close isset.
答案 0 :(得分:1)
仅仅因为它确实起作用并不意味着你不应该选择更合适的方式。那么为什么标题会重新指向,你可能会问?
exit;
将阻止该内容)。这意味着最终用户的开销更少,反应时间更短。答案 1 :(得分:0)
首先,客户端可以关闭Javascript。那么你的代码就会被立即打破。
不要让客户有机会改变或破坏你的工作流程。
其次是不良做法,因为难以管理。保持它独立的风格,脚本和PHP代码。