这是一个非常愚蠢的问题,但不知何故它不起作用我有一个创建文件的功能,如果它通过它我希望它将用户重定向到X页面..在这种情况下是1.php....但不知何故不工作:S 为什么?
//Creates File, populates it and redirects the user.
if (createfile($dbFile)) {
header('Location: 1.php');
}
您需要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;
?>
您是否尝试过使用绝对位置?
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");
exit;
尝试;
if (createfile($dbFile)) {
header("Refresh: 0; URL=1.php");
exit();
}
我有一个类似的问题,代码在标头位置之后仍在执行。这就是为什么我总是做 exit(); 然后