0

这是一个非常愚蠢的问题,但不知何故它不起作用我有一个创建文件的功能,如果它通过它我希望它将用户重定向到X页面..在这种情况下是1.php....但不知何故不工作:S 为什么?

    //Creates File, populates it and redirects the user.
if (createfile($dbFile)) { 
    header('Location: 1.php');
        }
4

4 回答 4

4

您需要exit()在发送重定向标头后:

 if (createfile($dbFile)) {
     header('Location: http://yoursite.com/path/to/1.php', true, 302);
     exit();
 }

否则,PHP 继续执行。如果是您exit(),客户端会在您调用header().

您还应该注意PHP 文档页面header()上的以下警告:

HTTP/1.1 需要绝对 URI 作为Location 的参数:包括方案、主机名和绝对路径,但一些客户端接受相对 URI。您通常可以使用$_SERVER['HTTP_HOST'],$_SERVER['PHP_SELF']dirname()自己从相对的 URI 中创建一个绝对 URI:

<?php
/* Redirect to a different page in the current directory that was requested */
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");
exit;
?>
于 2012-08-01T08:11:32.423 回答
2

您是否尝试过使用绝对位置?

$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");
exit;

来源

于 2012-08-01T08:11:42.543 回答
1

尝试;

if (createfile($dbFile)) { 
   header("Refresh: 0; URL=1.php");
   exit();
}
于 2012-08-01T08:16:20.313 回答
0

我有一个类似的问题,代码在标头位置之后仍在执行。这就是为什么我总是做 exit(); 然后

于 2012-08-01T08:12:44.793 回答