我有一个页面有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>
答案 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上重新提交两次信息
这个问题提出了一个粗略的例子: