PHP page redirect
PHP在执行函数后是否可以进行重定向调用?我正在创建一个函数,完成后我希望它重定向到位于同一根文件夹中的文件。可以这样做吗?
1 2 3 4 5 6 7 8 9
| if {
//i am using echo here
}
else if ($_SESSION['qnum'] > 10) {
session_destroy();
echo"Some error occured.";
//redirect to user.php
} |
- 我在stackoverflow.com/questions/13539752/redirect function/13539‌&诳8203;808中找到了相关答案。
是的,您将使用header函数。
1 2
| header("Location: http://www.yourwebsite.com/user.php"); /* Redirect browser */
exit(); |
最好在单词后立即调用exit(),这样下面的代码就不会被执行。
此外,从文件中:
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
这意味着您不应该在header()函数之前对任何内容进行回声,因为这样做很可能会引发错误。此外,您还需要在任何其他输出之前验证该代码是否已运行。
- 您还应该将HTTP状态设置为302。
- 第二个特殊情况是"位置:"标题。它不仅会将此标题发送回浏览器,而且还会将重定向(302)状态代码返回到浏览器,除非已设置201或3xx状态代码。"
- 我为"后记"所困扰。
- 使用die而不是exit,以防止仅退出功能。
使用javascript作为故障保护将确保用户被重定向(即使头已经发送)。干得好:
1 2 3 4 5 6 7 8 9
| // $url should be an absolute url
function redirect ($url){
if (headers_sent()){
die('<script type="text/javascript">window.location=\''.$url.'\';</script??>');
}else{
header('Location: ' . $url);
die();
}
} |
如果您需要正确地处理相对路径,我已经为此编写了一个函数(但这超出了问题的范围)。
- 这实际上不起作用。
- 如何描述性。
- 把这行改成这行,它会…die('
简单的方法是使用:
1
| echo 'window.location.href="the-target-page.php";'; |
- 这已经在另一个答案中提到了。有什么新内容要添加到主题中吗?
1 2
| $url='the/url/you/want/to/go';
echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$url.'">'; |
这对我很有用。
- 这对我也适用。谢谢
- 也为我工作
- 是的,这对我来说是一个生命保护程序;我动态地从一个标题中填充页面标题和正文ID,所以不管怎样,我总是会发送标题。对我来说,这只是一个web表单bot响应。很好,谢谢。
- 这对我也很管用。:)不知道为什么这个不在顶部。:(
- 这对我也很有用。谢谢您。
1
| header("Location: http://www.domain.com/user.php" ); |
但你不能先做回音,然后再重新定向。
正如nixxx所说,在添加任何PHP代码之前添加ob_start(),将防止已经发送的头出错。
它对我有用
下面的代码也有效。但它首先加载页面,然后在我使用它时重定向。
10
如果希望在PHP文件中包含重定向,而不必将其放在顶部,则可以在顶部激活输出缓冲,然后从页面内的任何位置调用重定向。例子;
1 2 3 4 5 6 7 8
| <?php
ob_start(); //first line
... do some work here
... do some more
header("Location: http://www.yourwebsite.com/user.php");
exit();
... do some work here
... do some more |
可以使用此代码在PHP中重定向
1 2 3 4 5 6
| <?php
/* Redirect browser */
header("Location: http://example.com/");
/* Make sure that code below does not get executed when we redirect. */
exit;
?> |
实际上,我在基于PHP的CMS的代码中发现了这个问题。
重定向(?module=blog',0);
所以这是可能的。在这种情况下,您是在管理员级别登录的,所以没有伤害也没有犯规(我想)。第一部分是URL,第二部分是?我找不到任何关于整数用途的文档,但我想它要么是时间,要么是数据,因为它附加到表单上。
我也希望在活动结束后刷新一个页面,把它放在一个更好的地方效果很好。
php中的header()函数执行此操作,但请确保在将任何其他文件内容发送到浏览器之前调用它,否则将收到错误。
如果已经发送了文件内容,则可以使用javascript。
我可能会将消息设置为会话变量,将用户重定向到另一个显示消息并销毁会话的页面。
对。
本质上,只要没有输出任何内容,您就可以在发出位置头之前做任何您想做的事情(终止会话、删除用户cookie、计算pi到n位数等)。
函数的作用是:
- 请根据HTTP规范使用绝对URL。
- 是的,但请确保先删除echo,否则可能会遇到"headerallready send";)
我了解这一点,我发现相关的答案在
https://stackoverflow.com/questions/13539752/redirect-function/13539808
1 2 3 4 5
| function redirect_url ($path)
{
header("location:".$path);
exit;
} |