在PHP脚本完成时重定向到指定的URL?

时间:2008-12-09 18:50:46

标签: php url

如何在运行完成后将PHP函数转到特定网站?

例如:

<?php
  //SOMETHING DONE
  GOTO(http://example.com/thankyou.php);
?>

我真的很喜欢以下......

<?php
  //SOMETHING DONE
  GOTO($url);
?>

我想做这样的事情:

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>

7 个答案:

答案 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代码将首先出现,并且不会遇到已发送问题的标题。