如何在页面刷新后阻止数据插入?

时间:2016-02-04 15:02:41

标签: php

我有一个页面有php代码和表单。插入后,如果我刷新页面插入再次进行,我想阻止它。

 if (!empty ($_POST['submit']) AND $_POST['submit'] == 'Save')
 {

 $name = mysqli_real_escape_string($conn,$_POST['nom']);
 $username=mysqli_real_escape_string($conn, $_POST['username']);
$password=$_POST['password'];
 $sql = "INSERT INTO utilisateur VALUES ('', '$name', '$username', '$password')";
 $res = mysqli_query($conn, $sql);
  echo '<p style="text-align:center">Un utilisateur a ete ajoute avec succes !</p>';
}
else
 {

 }


  <form action="" method="post"  name="form"> 
  <label>Nom <em>*</em></label>
 <input type="text" name="nom" onkeyup="verif_name(this);" required />
  <label>Nom utilisateur <em>*</em></label>
 <input type="text" name="username" required /></br></br>
  <label >Password <em>*</em></label>
 <input type="password"   name= "password" id= "password">

  <input type="submit" id="submit" name="submit" value="Save">
 </form>

2 个答案:

答案 0 :(得分:0)

使用重定向和不同的文件和URI

form.php的:

<?php 
    if (!empty($_COOKIE['message']))
    {
        $message = $_COOKIE['message'];
        setcookie('message', '');
        echo '<p>' . $message . '</p>';
    }
?>
<form action="action.php" method="post" name="form">
    <label>Nom <em>*</em></label>
    <input type="text" name="nom" onkeyup="verif_name(this);" required />
    <label>Nom utilisateur <em>*</em></label>
    <input type="text" name="username" required />
    <br /><br />
    <label>Password <em>*</em></label>
    <input type="password" name="password" id="password">
    <input type="submit" id="submit" name="submit" value="Save">
</form>

action.php的:

<?php
    if (!empty ($_POST['submit']) AND $_POST['submit'] == 'Save')
    {
        $name = mysqli_real_escape_string($conn,$_POST['nom']);
        $username=mysqli_real_escape_string($conn, $_POST['username']);
        $password=$_POST['password'];
        $sql = "INSERT INTO utilisateur VALUES ('', '$name', '$username', '$password')";
        $res = mysqli_query($conn, $sql);
        setcookie('message', 'Un utilisateur a ete ajoute avec succes !');
    } else {
        setcookie('message', 'Error!');
    }
        header('Location: /form.php');
?>

答案 1 :(得分:-1)

实际上有一种设计模式可以解决这个问题,它被称为&#34; POST / REDIRECT / GET&#34;

https://en.wikipedia.org/wiki/Post/Redirect/Get

概念非常简单,在向服务器发布一些信息后,您将重定向标题返回到某个页面,这样用户就不会在F5上重新提交两次信息

这个问题提出了一个粗略的例子:

Simple Post-Redirect-Get code example