PHP表单 - 提交后返回原始页面

时间:2015-01-21 09:55:55

标签: php html forms

我有一个非常简单的html页面,它调用php脚本将表单中的数据提交到数据库。一旦用户提交了他们的数据,如果他们能够收到一条消息说他们已成功添加,然后将其重定向到带有该表单的页面,那将会很棒。我正在使用的代码如下: HTML文件

<html> 
<body> 
<form action="insertcustomer.php" method="post" >

<p>First Name: <input type="text" name="firstname"> 
Last Name: <input type="text" name="lastname"> 
<P>Phone: <input type="text" name="phone"> Email: <input type="text" name="email"></P> 
Address1: <input type="text"name="address1"> Address2: <input type="text" name="address2"> City:<input type="text" name="city">
<select name="Gender" id="Gender">
        <option value="">Select One</option>
        <option value = "1">Female</option>
        <option value = "2">Male</option>
</select> <input value="Add" type="submit"> </form> </body>
</html>

PHP文件:

<?php
$con=mysqli_connect("centos-db.local","customerinfo","password","customerinfo");

 {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }
$sql="INSERT INTO `customers` (`firstname`, `lastname`, `email`,
`phone`, `address1`, `address2`, `city`, `gender`) VALUES
('$_POST[firstname]','$_POST[lastname]',
'$_POST[email]','$_POST[phone]', '$_POST[address1]' ,'$_POST[address2]'
,'$_POST[city]' , '$_POST[gender]' )"; if (!mysqli_query($con,$sql))
 {
 die('Error: ' . mysqli_error($con));
}
echo "Customer Added"; mysqli_close($con); 
?>

非常感谢您提供的任何帮助!

干杯

6 个答案:

答案 0 :(得分:2)

只需在主页上添加重定向,例如:

<?php
header('Location: http://www.example.com/');
exit;
?>

header reference page

出于安全考虑,您还应该考虑转义用户输入。

答案 1 :(得分:1)

您可以使用javaScript:document.location.href="myFile.php"; 或者您可以将原始表单发布到表单所在的同一页面并在那里处理消息。这也有助于显示错误消息,如果有的话。

答案 2 :(得分:1)

使用PHP's Header() function

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

答案 3 :(得分:1)

试试这个会起作用:

您可以在同一页面上显示successfully submit message。它会减少页面的加载时间并增加用户体验。

index.php:

    <?php

if(isset($_POST['submit']))
{
    $con=mysqli_connect("centos-db.local","customerinfo","password","customerinfo");

     {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
     }
    $sql="INSERT INTO `customers` (`firstname`, `lastname`, `email`,
    `phone`, `address1`, `address2`, `city`, `gender`) VALUES
    ('$_POST[firstname]','$_POST[lastname]',
    '$_POST[email]','$_POST[phone]', '$_POST[address1]' ,'$_POST[address2]'
    ,'$_POST[city]' , '$_POST[gender]' )"; if (!mysqli_query($con,$sql))
     {
     die('Error: ' . mysqli_error($con));
    }
    echo "Customer Added"; mysqli_close($con); 
}
    ?>

    <html> 
    <body> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >

    <p>First Name: <input type="text" name="firstname"> 
    Last Name: <input type="text" name="lastname"> 
    <P>Phone: <input type="text" name="phone"> Email: <input type="text" name="email"></P> 
    Address1: <input type="text"name="address1"> Address2: <input type="text" name="address2"> City:<input type="text" name="city">
    <select name="Gender" id="Gender">
            <option value="">Select One</option>
            <option value = "1">Female</option>
            <option value = "2">Male</option>
    </select> <input value="Add" type="submit" name="submit"> </form> </body>
    </html>

此处,<?php echo $_SERVER['PHP_SELF']?>会将您重定向到您提交表单的同一页面。

答案 4 :(得分:0)

您可以使用其他操作。

<form action="/" method="post" >

设置发布路径/检查是否设置了后置变量,如果是,则给出消息。

这里的常见问题是,如果您重新加载页面,将再次发送帖子数据。这就是您通常使用Post-Redirect-Get的原因。你可以在你的PHP脚本结束时使用这样的东西。

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

注意:如果从另一个脚本重定向,则显示消息的唯一可能性是在URL中发送参数或将其保存到数据库并在原始页面上请求最新消息。

答案 5 :(得分:0)

您可以使用PHP的Header()函数

试一试。我担心我无法测试它,因为我的机器上没有安装Apache。

$con=mysqli_connect("centos-db.wireddog.local","customerinfo","password","customerinfo");

 {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }
$sql="INSERT INTO `customers` (`firstname`, `lastname`, `email`,
`phone`, `address1`, `address2`, `city`, `gender`) VALUES
('$_POST[firstname]','$_POST[lastname]',
'$_POST[email]','$_POST[phone]', '$_POST[address1]' ,'$_POST[address2]'
,'$_POST[city]' , '$_POST[gender]' )"; if (!mysqli_query($con,$sql))
 {
 die('Error: ' . mysqli_error($con));
}
echo "Customer Added"; mysqli_close($con); 
    header('Location: '.$_SERVER['PHP_SELF']); //Redirect to the same page
    die;

p.s我不得不删除php开始和结束标签,因为SO似乎不喜欢在编辑器中呈现标签。