0

我的网站上有一个简单的订单。如果我单击提交按钮,表单会将数据发送到我的数据库。这行得通。但它没有显示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 { ?>
4

4 回答 4

2

那是行不通的,因为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-23T16:16:41.087 回答
1

在 header() 重定向之前不能有任何输出。

检查您的脚本是否存在可能的错误、警告或通知,其中任何一个都会输出文本,并且不会发生重定向。

于 2012-10-23T16:19:42.253 回答
1

到目前为止,每当我发现这种问题时;我经常这样做肯定有两个原因。要么我在标头函数之前打印任何 html 代码,要么我没有意识到我的 success.php 也重定向到 start.php。

也许您可以检查代码中是否存在这两个。

于 2012-10-23T16:26:44.497 回答
0

以这种方式格式化。

$result = mysql_query($sql,$con);
if (!$result) { 

    echo mysql_error();

} else {

   Header("Location: success.php");
}

mysql_close($con);

?> 
于 2012-10-23T16:24:43.923 回答