我在我的网站上有一张简单的订单。如果我点击submit-按钮,表单将把数据发送到我的数据库。这是可行的。但它不显示success.php -它只再次显示start.php。所以一定是搞错了。在我之前的主机上,它起作用了。但现在我有了一个新的。
下面是我的php脚本(start.php):
<?php
$con = mysql_connect("localhost", "user", "pw") or die ("No connection to db possible");
mysql_select_db("db", $con) or die ("No connection to db possible");
mysql_query("SET NAMES 'utf8'");
if (isset($_POST['button']))
{
foreach ($_POST AS $key => $postvar)
$_POST[$key] = stripslashes($postvar);
$_POST['name'] = mysql_real_escape_string($_POST['name']);
$_POST['strasse'] = mysql_real_escape_string($_POST['strasse']);
$_POST['plz'] = mysql_real_escape_string($_POST['plz']);
$_POST['ort'] = mysql_real_escape_string($_POST['ort']);
$_POST['mail'] = mysql_real_escape_string($_POST['mail']);
$_POST['anzahl'] = mysql_real_escape_string($_POST['anzahl']);
$sql = "INSERT INTO `bestellungen` (`name`,`strasse`,`plz`,`ort`,`mail`,`anzahl`,`datetime`)
VALUES ('".$_POST['name']."', '".$_POST['strasse']."', '".$_POST['plz']."', '".$_POST['ort']."', '".$_POST['mail']."', '".$_POST['anzahl']."', '".date("Y-m-d H:i:s")."');";
$result = mysql_query($sql,$con);
if (!$result) echo mysql_error();
mysql_close($con);
?>
<?php Header("Location: success.php");
exit();
?>
<?php
} else { ?>发布于 2012-10-24 00:16:41
这是行不通的,因为header('Location: success.php')需要在你输出任何东西到浏览器之前发生。在被调用之前,你似乎已经有了差距。
$result = mysql_query($sql,$con);
if (!$result) echo mysql_error();
mysql_close($con);
// Now its time for the header!
header("Location: success.php");
exit();发布于 2012-10-24 00:19:42
在header()重定向之前不能有任何输出。
检查脚本中可能出现的错误、警告或通知,任何这些都将输出文本,并且不会发生重定向。
发布于 2012-10-24 00:26:44
到目前为止,每当我发现这种问题时,我经常这样做的原因肯定有两个。要么我在头函数之前打印任何html代码,要么我没有意识到我的success.php也重定向到了start.php。
也许你可以检查你的代码中是否存在这两个。
https://stackoverflow.com/questions/13034868
复制相似问题