Bonjour,
Je voulais savoir si il y avait une solution pour eviter que a l'actualisation d'une page avec des formulaires déja postés les formulaires ce renvoie?
Merci

8 réponses


jo-jo-123
Réponse acceptée

Tu peux faire une redirection une fois le formulaire traité.

Tout dépend du formulaire, mais tu peux simplement vider $_POST une fois que ton traitement est terminé

quentin
Auteur

Khalysto je le vide deja avec un unset, il y a une autre fonction ?

Je pensais plus à ça

<?php

    $_POST = array();

?>

@Khalysto : Ici c'est la section CakePHP et dans le Framework en général, nous utilisons $this->request->data.
Sinon, ce n'est pas faux, dans le traitement des données postées, il te suffit par exemple de faire :

if ($this->request->is('post') {
    /* Traitement des données et requête(s) */
    $this->request->data = [];
}

Par contre, si un peu plus loin tu définies des valeurs pour le formulaire (pour une édition par exemple), n'oublies pas de couper la fonction avec un redirect après le vidage des données dans le $this->request->data, donc dans ce cas là :

if ($this->request->is('post') {
    /* Traitement des données et requête(s) */
    $this->request->data = [];
    $this->redirect($this->referer());
}
/* Suite du code de la fonction */

Tu aurais quand même pu nous montrer le code de ta fonction, je n'aime pas trop faire des suppositions sur ce genre de cas.

quentin
Auteur

C'est ce que j'ai fait :) merci

Arf, je suis désolé, j'ai pris le post sans regarder la section :/
Je connais pas CakePHP en plus, mais merci aux autres d'avoir corrigé pour moi !

Normalement il y a une protection du navigateur avec une fenêtre qui te demande s'il faut renvoyer la page.
Si l'utilisateur clique quand même et renvoie la page, le serveur gère ça comme une nouvelle requête.
Le fait d'avoir effacé $_POST avant NE SERT A RIEN car toutes les requêtes sont idépendantes (B.A-BA du web)
La redirection c'est ce qu'il y a de mieux en effet.