Comment éviter le renvoi du formulaire en rafraichissant
Hocine04
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, je suis en train de tester un formulaire d'upload d'image et j'ai utilisé le code que l'on trouve ici https://openclassrooms.com/courses/eviter-le-renvoi-repetitif-d-un-formulaire-en-rafraichissant pour éviter de recevoir plusieurs fois le même fichier quand l'utilisateur rafraichi le formulaire. Mais du coup le fichier ne s'envoie pas et je recois le message d'erreur suivant "Une erreur est survenue lors de l'envoie du fichier'.
J'ai besoin d'un coup de pouce :)
Voici le code du formulaire de l'upload (traitement sur la même page) :
J'ai besoin d'un coup de pouce :)
Voici le code du formulaire de l'upload (traitement sur la même page) :
<?php session_start(); // { Début - Première partie if(!empty($_POST) OR !empty($_FILES)) { $_SESSION['sauvegarde'] = $_POST ; $_SESSION['sauvegardeFILES'] = $_FILES ; $fichierActuel = $_SERVER['PHP_SELF'] ; if(!empty($_SERVER['QUERY_STRING'])) { $fichierActuel .= '?' . $_SERVER['REQUEST_URI'] ; } header('Location: ' . $fichierActuel); exit; } // { Début - Seconde partie if(isset($_SESSION['sauvegarde'])) { $_POST = $_SESSION['sauvegarde'] ; $_FILES = $_SESSION['sauvegardeFILES'] ; unset($_SESSION['sauvegarde'], $_SESSION['sauvegardeFILES']); } // } Fin - Seconde partie ?> <?php require 'connexion_bdd.php'; $message = ''; if(!empty($_FILES)){ $file_name = $_FILES['photo']['name']; $file_extension = strrchr($file_name, "."); $extension_autorisees = array('.jpg', '.jpeg', '.png','.JPG', '.JPEG', '.PNG'); $file_tmp_name = $_FILES['photo']['tmp_name']; $file_dest = '5images/' . date("G-i-s").$file_name; if(in_array($file_extension, $extension_autorisees)){ if($_FILES['photo']['error'] == 0) if ($_FILES['photo']['size'] <= 1000000){ if(move_uploaded_file($file_tmp_name, $file_dest)){ $req = $bdd->prepare('INSERT INTO formulaire (titre, photo) VALUES(?, ?)'); $req->execute(array($_POST['titre'], $file_dest)); $bdd = NULL; $message = 'Votre photo a été enregistrée !'; } else { $message = 'Une erreur est survenue lors de l\'envoie du fichier'; } } else { $message = 'La taille du fichier dépasse la limite autorisée'; } else { $message = 'Votre fichier comporte une erreur'; } } else { $message = 'Seuls les fichiers jpg/jpeg/png sont autorisés'; } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head> <body> <form method="POST" enctype="multipart/form-data"> Titre :<input type="text" name="titre"/><br /><br /> <p><?php if(!empty($message)){echo $message;} ?></p> <input type="file" name="photo" /><br /><br /> <input type="submit" name="envoyer" value="Envoyer"> </form> </body> </html>
A voir également:
- Éviter le renvoi répétitif d'un formulaire en rafraîchissant
- Whatsapp formulaire opposition - Guide
- Éviter pub youtube - Accueil - Streaming
- Formulaire de réclamation facebook - Guide
- Marques smartphone à éviter - Accueil - Guide téléphones
- Formulaire de reclamation instagram - Guide
1 réponse
Bonjour,
1 -
Le message d'erreur est celui du else du IF
Visiblement... il ne parvient pas à faire le move_uploaded_file...
- Le nom du répertoire de déstination est bon ? (5images ??)
- Les droits sur le répertoire sont bons ?
2 -
Que contient la variable $_FILES lorsque tu rencontres ce message d'erreur ?
Peux tu en faire un PRINT_R et nous afficher le résultat ?
3 -
Tu as écrit : (je devrais dire... copier/coller du site openclassroom...) le code suivant :
Attention... $_POST et $_FILES sont des variables ( globales) créées lors de la soumission d'un formulaire (via un SUBMIT) .
Il n'est pas conseillé d'y mettre des choses .... (autrement que par un submit ! )
4 -
La solution conseillées pour éviter le renvoie d'un formulaire ( lors d'un F5 par exemple;..) c'est l'utilisation de TOKEN. (en cherchant sur le net tu devrais pouvoir trouver des exemples )
Tu peux aussi utiliser la redirection (
1 -
Mais du coup le fichier ne s'envoie pas et je recois le message d'erreur suivant "Une erreur est survenue lors de l'envoie du fichier'.
Le message d'erreur est celui du else du IF
if(move_uploaded_file($file_tmp_name, $file_dest)){
Visiblement... il ne parvient pas à faire le move_uploaded_file...
- Le nom du répertoire de déstination est bon ? (5images ??)
- Les droits sur le répertoire sont bons ?
$file_dest = '5images/' . date("G-i-s").$file_name;
2 -
Que contient la variable $_FILES lorsque tu rencontres ce message d'erreur ?
Peux tu en faire un PRINT_R et nous afficher le résultat ?
3 -
Tu as écrit : (je devrais dire... copier/coller du site openclassroom...) le code suivant :
$_POST = $_SESSION['sauvegarde'] ; $_FILES = $_SESSION['sauvegardeFILES'] ;
Attention... $_POST et $_FILES sont des variables ( globales) créées lors de la soumission d'un formulaire (via un SUBMIT) .
Il n'est pas conseillé d'y mettre des choses .... (autrement que par un submit ! )
4 -
La solution conseillées pour éviter le renvoie d'un formulaire ( lors d'un F5 par exemple;..) c'est l'utilisation de TOKEN. (en cherchant sur le net tu devrais pouvoir trouver des exemples )
Tu peux aussi utiliser la redirection (
header('location: pagexx.php');une fois que le formulaire a été envoyé et traité (après ton insert en gros..) ainsi les variables POST et FILE sont remises à zéro... et le F5 n'aura plus aucun effet