php在表单提交后返回页面

时间:2014-04-12 19:27:20

标签: php html mysql forms

我已经创建了一个html表单

<form action="http://localhost/php/insert.php" method="post">
    Barcode: <input type="text" name="barcode" /><br><br>
    Serial: <input type="text" name="serial" /><br><br>
    <input type="submit" />
</form>

使用这个php保存到我的数据库中:

<?php
$con = mysql_connect("example","example","");
if ( ! $con) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("database", $con);

$sql = "INSERT INTO asset (barcode, serial)
        VALUES ('$_POST[barcode]','$_POST[serial]')";

if ( ! mysql_query($sql, $con)) {
    die('Error: ' . mysql_error());
}
mysql_close($con)
?>

表单会保存到数据库,但当您按提交时页面只会转到http://localhost/php/insert.php,这是一个空白页面。如何让它保持在同一页面上只显示一条消息?

4 个答案:

答案 0 :(得分:8)

请注意,使用HTTP_REFERER重定向通常是不稳定且不值得信任的,因此最好的方法是随请求发送一个URL,或者如果它来自另一台服务器,您可以构建一个特定的传递用于特定网站/网址。最好的方法是通过将URL与请求一起提交来了解URL;其他两个可能不是最优的。

完成表单处理后,在输出任何内容之前执行此操作(这会引发错误):

header("Location: {$_SERVER['HTTP_REFERER']}");
exit;

根据您的处理结果,您可以向网址添加错误:

if ($query_does_not_execute) {
    $errcode = "error_code=003";
}

$referer = $_SERVER['HTTP_REFERER'];

if ($errcode) {
    if (strpos($referer, '?') === false) {
        $referer .= "?";
    }

    header("Location: $referer&$errcode");
} else {
    header("Location: $referer");
}
exit;

然后在页面上,您可以显示错误。或者,您也可以重定向到页面以处理不同类型的错误。这是对许多不同解释的广泛开放。

答案 1 :(得分:4)

你可以这样使用PHP's Header() function

header("Location: your-page.php");
exit;

您需要确保在标题调用之前没有输出(即回显任何内容或任何HTML等),否则它将无效。

答案 2 :(得分:0)

我找到的另一种方法是使用html的<meta>重定向。把它放在你的http://localhost/php/insert.php脚本中。处理后重定向到所需的页面。

<?php 

switch ($INPUT['task'])
{
    case 'insert_and_redirect':
            insertForm();
            $h = '<html><head>';
            $h .=   '<meta http-equiv="refresh" content="0; URL=/adjustments/">';
            $h .=   '</head></html>';
            echo $h;
        break;
    case 'edit':
       # editForm();
        break;
    case 'delete':
        deleteRecord();
        break;
    default:
        break;
}

?>

可能不安全,但如果你在私人局域网上应该没问题 -Cheers

答案 3 :(得分:-1)

在表单操作$_SERVER['PHP_SELF'];中使用它,它将满足您的要求。