-1

我有一个接受学生信息的基于网络的表格。插入数据后,即使刷新浏览器,我也希望它仍然可用。这意味着 2 行是相同的,但我不想再次插入相同的数据。这怎么可能?

我的代码在这里:

<form method="post" action="insert.php" >
    <table>
        <tr>
            <td width="22%"> Name</td>
            <td width="4%"></td>
            <td width="74%"><input type="text" name="name"  > </td>
        </tr>
        <tr>
            <td>Information </td>
            <td></td>
            <td><input type="text" name="infomn" ></td>
        </tr>
        <tr>
            <td>Email </td>
            <td></td>
            <td><input type="text" name="email" ></td>
        </tr>
        <tr>
            <td>Password </td>
            <td></td>
            <td><input type="password" name="password" ></td>
        </tr>
        <tr>  
            <td colspan="3"> </td>
        </tr>
        <tr>
           <td></td>
           <td></td>
           <td ><input type="submit" name="submit" value="Insert"  >
        </td>
        </tr>
    </table>
</form>

插入.php:

include("connect.php");

if($_POST['submit']){

    $name=$_POST[name];
    $info=$_POST[infomn];
    $emal=$_POST[email];
    $password=$_POST[password];

    $query = "insert into student(name,designation,email,password) values('$name','$info','$emal','$password')";

    mysql_query($query) or die("not successfully insert".mysql_error());

?>}
4

4 回答 4

1

在尝试插入数据之前,我会检查您的值是否已填写。

if ($_POST['name']) {
    //Validate, escape, insert...
} else {
    //Display form...
}

确保您插入数据库的数据已转义,尤其是在您处理学生数据时。

于 2013-05-02T09:01:47.360 回答
1

目前它看起来像这样:

  1. 信息发布到 insert.php
  2. 您位于 insert.php 中,并且发布的变量也存在。
  3. 使用现有数据执行数据库执行。
  4. 你刷新。
  5. 您永远不会真正离开页面,因为刷新会使您转到同一页面,因此浏览器假定不应删除发布的数据而应再次使用。

为避免这种情况,您必须添加

header("Location: index.php");

或一些类似的代码,以确保执行数据库后用户不会停留在同一页面上。

于 2013-05-02T09:06:47.020 回答
0

浏览器刷新将最后一个操作(再次)发布到服务器。

使用Post/Redirect/Get 模式http://en.wikipedia.org/wiki/Post/Redirect/Get),即始终在成功操作后重定向(在您的情况下是数据库插入)。

于 2013-05-02T09:04:18.167 回答
0

插入.php:

include("connect.php");

if(isset($_POST['submit'])) { // put isset() for checking if it submitted or not

$name=$_POST['name'];

$info=$_POST['infomn'];

$emal=$_POST['email'];

$password=$_POST['password'];


$query = "insert into student(name,designation,email,password)

          values('$name','$info','$emal','$password')";

if(mysql_query($query)) {
 header('Location:your_form_page.php'); // redirect to avoid inserting data while refreshing
}else { 
mysql_error() };

}

建议:尝试使用PDO 如何防止 PHP 中的 SQL 注入?

于 2013-05-02T09:08:05.717 回答