PHP 页面重定向

PHP 可以在执行函数后进行重定向调用吗?我正在创建一个函数的完成,我希望它重定向到一个文件位于相同的根文件夹。能做到吗?

if (...) {
// I am using echo here.
} else if ($_SESSION['qnum'] > 10) {
session_destroy();
echo "Some error occured.";
// Redirect to "user.php".
}
682381 次浏览

Header ()函数执行以下操作:

header("Location: user.php");

是的。

实际上,只要没有输出,您就可以在发出位置头之前做任何您想做的事情(关闭一个会话、删除用户 cookie、计算 Pi 到 n’位数,等等)。

header( "Location: http://www.domain.com/user.php" );

但你不能先做超声波,然后再改变方向。

是的,可以使用 标题函数。

/* Redirect browser */
header("Location: http://www.yourwebsite.com/user.php");
exit();

在它之后调用 exit()是一个很好的实践,这样它下面的代码就不会被执行。

另外,从文档中可以看出:

请记住,必须在发送任何实际输出之前调用 header () ,这些输出可以通过普通的 HTML 标记、文件中的空行或 PHP 发送。读取具有 include ()、 request ()、函数或其他文件访问函数的代码,并且在调用 header ()之前输出空格或空行,这是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。

这意味着您不应该在 header()函数之前回显任何内容,因为这样做很可能会抛出错误。此外,您还需要验证此代码是否在任何其他输出之前运行。

使用 javascript 作为故障保护将确保用户被重定向(即使头已经被发送)。给你:

// $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();
}
}

如果您需要正确处理相对路径,我已经为此编写了一个函数(但这超出了问题的范围)。

   $url='the/url/you/want/to/go';
echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$url.'">';

我觉得这样挺好。

您可以使用此代码在 我不知道中重定向

<?php
/* Redirect browser */
header("Location: http://example.com/");
/* Make sure that code below does not get executed when we redirect. */
exit;
?>

简单的方法是:

  echo '<script>window.location.href = "the-target-page.php";</script>';
<?php


http_redirect("relpath", array("name" => "value"), true, HTTP_REDIRECT_PERM);


?>

如果希望在 php 文件中包含重定向,而不需要将它放在顶部,那么可以在顶部激活输出缓冲区,然后从页面内的任何地方调用 redirect。例子;

 <?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

正如所提到的 不要添加 ob_start()之前添加任何 php 代码将防止报头已经发送错误。

这招对我很管用

下面的代码也可以工作。但是它首先加载页面,然后在我使用它时重定向。

echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$redirect_url.'">';