pb de rafraîchissement formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb de rafraîchissement formulaire

Re: pb de rafraîchissement formulaire

par Spols » 10 juil. 2018, 08:28

il faut que tu inclue ton script de rafraichissement que si l'éxecution du formulaire c'est bien passé, sinon les echo de tes elses sont annulé.

pb de rafraîchissement formulaire

par quattro » 09 juil. 2018, 20:44

bonjour
voici mon code qui traite un formulaire :

Code : Tout sélectionner

<?php // Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inNom = strtoupper($inNom); $inPrenom = $_POST['prenom']; $inPrenom = strtoupper($inPrenom); $inQualif = $_POST['qualif']; $inQualif = strtoupper($inQualif); $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; $inTitre = strtoupper($inTitre); // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000 ) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\photo'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../inc_/connexion_inc.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } } else { if ($inPhoto['error'] == 1) { echo "<br \><b><h2>Photo supérieur à : 2Mo, recommencez l'enregistrement</h2></b>"; } } } else { echo "Veuillez remplir tous les champs"; } } ?>
après avoir fait un refresh avec le navigateur, cela provoqué un renvoi répétitif. J'ai donc creer le code suivant :

Code : Tout sélectionner

<?php //**************************** Éviter le renvoi répétitif d'un formulaire,lors d'un rafraîchissement du naviguateur *************************// // { Début - Première partie if(!empty($_POST) OR !empty($_FILES)) { //Ici on sauvegarde le 'formulaire' et les éventuels 'fichiers' envoyés dans des variables de session $_SESSION['sauvegarde'] = $_POST ; $_SESSION['sauvegardeFILES'] = $_FILES ; $fichierActuel = $_SERVER['PHP_SELF'] ;//renvoie le "fichier courant" utilisé, principal.php// if(!empty($_SERVER['QUERY_STRING']))//renvoie toutes les informations qui sont dans l'URL, autre que le nom du fichier// { $fichierActuel .= '?' . $_SERVER['QUERY_STRING'] ; } header('Location: ' . $fichierActuel); exit; } // } Fin - Première partie // { Début - Seconde partie if(isset($_SESSION['sauvegarde'])) { $_POST = $_SESSION['sauvegarde'] ; $_FILES = $_SESSION['sauvegardeFILES'] ; unset($_SESSION['sauvegarde'], $_SESSION['sauvegardeFILES']); } // } Fin - Seconde partie ?>
que j'ai reduit à cela :

Code : Tout sélectionner

<?php include('../inc_/rafraichissement_inc.php');?>
J'ai mis ce dernier à la suite du premier code, cela fonctionne, sauf que , quand je choisi une photo > 2Mo ou que des champs sont vides, et bien les conditions 'else' n'apparaisse plus ???