如何在运行完成后将PHP函数转到特定网站?
例如:
<?php
//SOMETHING DONE
GOTO(http://example.com/thankyou.php);
?>
我真的很喜欢以下......
<?php
//SOMETHING DONE
GOTO($url);
?>
我想做这样的事情:
<?php
//SOMETHING DONE THAT SETS $url
header('Location: $url');
?>
答案 0 :(得分:63)
<?
ob_start(); // ensures anything dumped out will be caught
// do stuff here
$url = 'http://example.com/thankyou.php'; // this can be set based on whatever
// clear out the output buffer
while (ob_get_status())
{
ob_end_clean();
}
// no redirect
header( "Location: $url" );
?>
答案 1 :(得分:31)
您可以随时使用标记来刷新页面 - 或者只是将必要的javascript放到最后会导致页面重定向的页面中。您甚至可以将它放在onload函数中,所以一旦完成,页面就会被重定向
<?php
echo $htmlHeader;
while($stuff){
echo $stuff;
}
echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
答案 2 :(得分:14)
如果“SOMETHING DONE”不涉及echo / print / etc的任何输出,则:
<?php
// SOMETHING DONE
header('Location: http://stackoverflow.com');
?>
答案 3 :(得分:5)
请注意,这不起作用:
header('Location: $url');
您需要这样做(用于变量扩展):
header("Location: $url");
答案 4 :(得分:3)
<?php
// do something here
header("Location: http://example.com/thankyou.php");
?>
答案 5 :(得分:2)
不要忘记在调用之后放置'die'以使重定向发生在页面上的其余代码运行之前。 一个。如果您在页面下方有标题功能,它们将覆盖代码中的标题。
b:我假设您不希望运行页面上的其他代码,以及为什么要将此重定向放在首位[也许]。
示例:
<?php
// do something here
header("Location: http://example.com/thankyou.php");
die();
//code down here now wont get run
?>
答案 6 :(得分:0)
以下是“已发送标头”问题的解决方案。假设您正在验证并通过电子邮件发送表单。确保php代码是你页面上的第一件事......在任何doctype和head标签以及所有爵士乐之前。然后,当POST到达页面时,php代码将首先出现,并且不会遇到已发送问题的标题。