header()不会重定向到我想要的页面。没有错误消息,并且标头功能在Xampp中可以正常工作,但在生产Web服务器中则不能。
我要完成的工作是,在链接表中,当我单击APR按钮时,“状态”列立即变为“已批准”。这可以在localhost环境中工作,但不能在生产服务器中工作。
我已经尝试过ob_start和ob_end_flush,还检查了是否有空格或行。
我还删除了index.php之前的“ ./”。
// this is the reservation.php
if (isset($_GET['apr'])) {
$rsID = $_GET['apr'];
$query = $conn->query("UPDATE reservations SET reservStatus = True WHERE
reservID = $rsID");
header("location: ./index.php");
}
// this is the index.php
<?php
require 'header.php';
if (isset($_SESSION['user_info'])) {
include 'reservation.php';
} else {
include 'login.form.php';
}
include 'footer.php';
我希望它会重定向到index.php,并从那里开始,如果会话已经开始,它将把页面引导回Reservation.php
答案 0 :(得分:1)
即使重定向标头之后,PHP脚本也不会停止。您必须通过调用die();
函数来停止继续加载PHP脚本
// this is the reservation.php
if (isset($_GET['apr'])) {
$rsID = $_GET['apr'];
$query = $conn->query("UPDATE reservations SET reservStatus = True WHERE
reservID = $rsID");
header("location: ./index.php")
// Add these two lines
die();
exit();
}
您也可以在脚本中每个重定向标题的下方添加这些行,谢谢。...
我想我遇到了您的问题,到目前为止,您所看到的是在显示网站标题部分的欢迎消息后,您正在重定向页面,
因此,实际上,在任何类型的输出(通过PHP)发送到浏览器之后(在您的情况下,标题部分中的欢迎消息),您都无法调用标头函数,因为PHP最初会先向浏览器发送Content-type
标头您首先要通过PHP在浏览器上显示任何内容
现在,您可以通过两种方式
1)包括redirection
的JavaScript以此替换您的标题行在Reservation.php中
echo ("<script> window.location = 'http://cdnj-nas.synology.me/cdnj/index.php'; </script>");
或者,如果这不起作用
echo ("<script> location.replace('http://cdnj-nas.synology.me/cdnj/index.php'); </script>");
2)您可以在顶部的header.php文件中检查这种重定向条件