我将网站移动到cPanel托管,并从php 5.1移动到5.4。唯一没有使用移动的是在MySql数据插入后返回index.php页面。数据插入正常,但我得到一个空白页而不是index.php页刷新。
我研究过论坛并使用我观察到的想法:删除了PHP代码中的空格;在脚本中移动了标题(Location:index.php);在Location:和index.php之间占用了一个空格,但是在插入后无法显示index.php页面。该URL位于浏览器行中,如果单击它,则刷新页面。这在过去是自动发生的。
以下是代码:
<?php
function renderForm($mscdate, $mscname, $mscaffirm, $mscstatus, $error)
{
?>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script type="text/javascript">
$(function() {
$('#datepicker').datepicker({dateFormat: 'MM d, yy', altField: '#dbDate', altFormat: 'yy-mm-dd'});
});
</script>
<?php
}
include('connect to database');
if (isset($_POST['submit']))
{
$mscdate = mysqli_real_escape_string(htmlspecialchars($_POST['mscdate']));
$mscname = mysqli_real_escape_string(htmlspecialchars($_POST['mscname']));
$mscaffirm = mysqli_real_escape_string(htmlspecialchars($_POST['mscaffirm']));
$mscstatus = mysqli_real_escape_string(htmlspecialchars($_POST['mscstatus']));
if ($mscdate == '' || $mscname == '' || $mscaffirm == '')
{
$error = 'ERROR: Please fill in all required fields!';
renderForm($mscdate, $mscname, $mscaffirm, $mscstatus, $error);
} else {
mysqli_query("INSERT mscrides SET mscdate='$mscdate', mscname='$mscname', mscaffirm='$mscaffirm', mscstatus='$mscstatus'")
or die(mysqli_error());
header("Location:index.php");
}
}else { // if the form hasn't been submitted, display the form
renderForm('','','','','');
}
?>
答案 0 :(得分:0)
尝试在代码顶部添加ob_start()
。
答案 1 :(得分:0)
您正在向浏览器发送Location
HTTP重定向,而不会告诉PHP停止执行,这通常通过exit()
完成。在PHP应用程序中,这通常会导致竞争条件,这取决于多种因素,主要是互联网/网络速度,以及重定向是否有效。
比赛具体是在Location
标题之后首先出现的比赛:
即使你认为你的脚本会自然结束,如果你有一个附加处理程序或关闭处理程序处于活动状态,有一个明确的exit()
是一个很好的做法。