Empecher insertion double apres rafraichissement

BapPro Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Je voudrais empecher une double insertion apres rapfraichissement de la page voici mes codes


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

 $name = mysqli_real_escape_string($conn,$_POST['nom']);
$username=mysqli_real_escape_string($conn, $_POST['username']);
$mail=mysqli_real_escape_string($conn, $_POST['mail']);  
$password=$_POST['password'];
$role = mysqli_real_escape_string($conn,$_POST['role']);			  

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


<form action="" method="post"  name="form" id="form" class="form"  onSubmit="return verify(this.password, this.password2);"   > 
<p style="margin-left:5%;" >
 </br>

<label>Nom <em>*</em></label>

<input type="text" name="nom" onkeyup="verif_name(this);" required /></br></br>
 <label>Email <em>*</em></label>

<input type="email" name="mail" required /></br></br>
<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"  onclick="montre('blabla')" required></br>

<label>Role</label>
<select name="role">
<option>Administrateur UPAG</option>
<option>Doyen</option>
<option>Etudiant</option>
</select></br></br>
			
			
</p>

 <hr style="height: 0px; color: gray; width: 100%; border: 1px solid ;" >

<p style="margin-left:70px;color:black;"> 

<input type="submit" id="submit" name="submit" value="Sauvegarder" class="bouton" style="background-color:green;color:white;font-weight:bold" disabled="true" onclick="var aze=confirm('Voulez-vous inserer cet nouvel utilisateur ?');return aze;" />

</p>

 </form> 

Merci et a plus
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Jettes un oeil aux réponses proposées ici :
https://stackoverflow.com/questions/2133964/how-to-prevent-multiple-inserts-when-submitting-a-form-in-php


En javascript.. la seule chose de réellement faisable... serait de désactiver le bouton une fois que l'utilisateur aura cliqué dessus.
(mais cela ne changera rien en cas de "refresh" de la page).

Les autres solutions utilisent le PHP ....
La plus "connue" est l'utilisation de token.
mais ils proposent également des solutions à base de SESSION.

A toi de voir.

0