IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Comment éviter le renvoi du formulaire en rafraichissant


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 1
    Par défaut Comment éviter le renvoi du formulaire en rafraichissant
    Bonjour, je suis en train de tester un formulaire d'upload d'image et j'ai utilisé un code 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) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <?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>

  2. #2
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    D'après ce que j'ai lu dans plusieurs forum, la meilleure solution est de traiter la requête dans une page et rediriger vers la page de résultat.

    J'avais ce type de problème également, en faisant de la sorte, le refresh n'a plus d'impact vu que la page affichée n'est plus le POST, mais un résultat du traitement.

  3. #3
    Invité
    Invité(e)

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/03/2013, 08h30
  2. [2.x] [Form] Éviter le renvoi de formulaire en rafraichissant
    Par dukoid dans le forum Symfony
    Réponses: 2
    Dernier message: 01/03/2013, 10h31
  3. [MySQL] Comment empêcher le renvoi d'un formulaire après clic sur rafraichir
    Par pcdj dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 18/01/2007, 23h42
  4. Réponses: 3
    Dernier message: 17/06/2006, 14h46
  5. Réponses: 4
    Dernier message: 28/07/2004, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo