PHP : vider le _POST
Fermé
pitimick
Messages postés
20
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
2 février 2012
-
14 mai 2011 à 17:54
pitimick Messages postés 20 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 2 février 2012 - 14 nov. 2011 à 11:40
pitimick Messages postés 20 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 2 février 2012 - 14 nov. 2011 à 11:40
A voir également:
- PHP : vider le _POST
- Easy php - Télécharger - Divers Web & Internet
- Php?id=1 - Forum PHP
- \R php ✓ - Forum PHP
- Php if plusieurs conditions ✓ - Forum PHP
- Php echo image ✓ - Forum PHP
6 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
31 août 2011 à 13:51
31 août 2011 à 13:51
Bonjour,
Il est normal que vider le POST au niveau PHP ne fonctionne pas, car c'est le navigateur qui renvoie le POST quand tu fais F5.
J'aurais une solution assez simple à te proposer : rajouter un identifiant de formulaire (un champ hidden qui commence à 1 et que tu incrémentes par exemple).
Quand tu enregistres les données en session, tu enregistres aussi cet identifiant.
À chaque fois qu'un formulaire est chargé, tu incrémentes cet identifiant.
Quand tu feras F5 sur le navigateur, l'identifiant ne sera pas incrémenté, et tu pourras voir dans ton PHP qu'il a déjà été inséré en session. Du coup, tu ne refais pas la mise en session.
Xavier
Il est normal que vider le POST au niveau PHP ne fonctionne pas, car c'est le navigateur qui renvoie le POST quand tu fais F5.
J'aurais une solution assez simple à te proposer : rajouter un identifiant de formulaire (un champ hidden qui commence à 1 et que tu incrémentes par exemple).
Quand tu enregistres les données en session, tu enregistres aussi cet identifiant.
À chaque fois qu'un formulaire est chargé, tu incrémentes cet identifiant.
Quand tu feras F5 sur le navigateur, l'identifiant ne sera pas incrémenté, et tu pourras voir dans ton PHP qu'il a déjà été inséré en session. Du coup, tu ne refais pas la mise en session.
Xavier
loveparade
Messages postés
506
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
14 mai 2011
60
14 mai 2011 à 18:52
14 mai 2011 à 18:52
Montres comment tu les ajoutes en session, ca vient de la surement.
canarder
Messages postés
1714
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
13 mai 2018
354
14 mai 2011 à 19:03
14 mai 2011 à 19:03
Et tu as un signalement comme quoi tu va ré-envoyé les données ? Normal puisque c'est en post ... Pour éviter ça et rester en post, cherche du côté d'ajax ...
canarder
Messages postés
1714
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
13 mai 2018
354
Modifié par canarder le 14/05/2011 à 19:05
Modifié par canarder le 14/05/2011 à 19:05
Si c'était juste vider _post (non testé, et ça ne serre à rien) :
$_POST = null; // OU unset($_POST)
pitimick
Messages postés
20
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
2 février 2012
15 mai 2011 à 06:33
15 mai 2011 à 06:33
oui j'ai le signalement que ça va être ré-envoyé, mais ne connaissant pas trop je me suis dit qu'en vidant le post cela devrait ne pas me poser de problème, et pourtant si. j'avais testé aussi le unset sans succes
loveparade
Messages postés
506
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
14 mai 2011
60
14 mai 2011 à 19:07
14 mai 2011 à 19:07
Ou alors tu remplaces les vars de sessions déjà existantes et mets a jour le contenu.(qui au final est le même).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pitimick
Messages postés
20
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
2 février 2012
Modifié par pitimick le 15/05/2011 à 06:36
Modifié par pitimick le 15/05/2011 à 06:36
methode qui s'appelle au debut de ma page php
sinon bah je testerai l'ajax, je sais pas trop encore comment vu que j'en ai jamais fait mais on verra
merci pour vos réponses.
function Initialisation () { $compteur = 0; if ((isset($_SESSION['compteurOnglet'])) && (!empty($_SESSION['compteurOnglet']))) { $compteur = $_SESSION['compteurOnglet']; } if ((isset($_POST['listeCheckBox'])) && (!empty($_POST['listeCheckBox']))) { $aRajouterEnSessionOnglet = $_POST['toto']; unset ($_POST); foreach ($aRajouterEnSessionOnglet as $valeur) { $compteur++; $_SESSION['onglet#'.$compteur] = $valeur; $_SESSION['compteurOnglet'] = $compteur; } } } function AjouterOnglets () { foreach($_SESSION as $cle => $valeur) { if (strrpos($cle, "onglet#") == false) continue; $nomFichier = substr ($valeur, strrpos("/")); echo 'nom fichier : '.$nomFichier; $numero = substr ($cle, strrpos("onglet#")); $listeLienOnglet[] = AjouterCaseOnglet ($numero, $nomFichier); } }
sinon bah je testerai l'ajax, je sais pas trop encore comment vu que j'en ai jamais fait mais on verra
merci pour vos réponses.
canarder
Messages postés
1714
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
13 mai 2018
354
15 mai 2011 à 11:20
15 mai 2011 à 11:20
regarde sur le site du zéro
slifer
Messages postés
48
Date d'inscription
mercredi 6 août 2008
Statut
Membre
Dernière intervention
3 septembre 2012
4
31 août 2011 à 13:22
31 août 2011 à 13:22
tu peux opter pour une solution un peu professionel, c'est le MVC, tu sépare tes traitement et les affichages, par exemple
PageFormulaire.php (contient ton formulaire avec <form action="controleur.php"...>
on Submittant les donnée tu arrive sur la page controleur.php qui va effectuer tes traitement (insertion dans BDD ou autre), à la fin de tes traitement tu fais une redirection vers la page que d'arrivé qui va afficher les donnée (header("location:PageArrivee.php");).
les avantage :
- plus de post dans la requete de PageArrivee.php car le poste se trouvais déja dans controleur.php.
- tes traitement sont reuni sur une seule page (d'où son nom CONTROLEUR), c'est cette page qui effectue tes traitement et rederige apres
- tes page d'arrivé sont plus lisible puisqu'il ne contient que les donnée a afficher de la base,(aucun traitement pour salir la page)
voila j'espère que jété clair
PageFormulaire.php (contient ton formulaire avec <form action="controleur.php"...>
on Submittant les donnée tu arrive sur la page controleur.php qui va effectuer tes traitement (insertion dans BDD ou autre), à la fin de tes traitement tu fais une redirection vers la page que d'arrivé qui va afficher les donnée (header("location:PageArrivee.php");).
les avantage :
- plus de post dans la requete de PageArrivee.php car le poste se trouvais déja dans controleur.php.
- tes traitement sont reuni sur une seule page (d'où son nom CONTROLEUR), c'est cette page qui effectue tes traitement et rederige apres
- tes page d'arrivé sont plus lisible puisqu'il ne contient que les donnée a afficher de la base,(aucun traitement pour salir la page)
voila j'espère que jété clair
pitimick
Messages postés
20
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
2 février 2012
14 nov. 2011 à 11:40
14 nov. 2011 à 11:40
Merci de ta réponse,
Ta méthode pourrait être une bonne chose aussi mais je souhaite éviter des rechargements de page. Mais il faudrait que je la teste quand même
Ta méthode pourrait être une bonne chose aussi mais je souhaite éviter des rechargements de page. Mais il faudrait que je la teste quand même
14 nov. 2011 à 11:37
Je n'ai pas le temps de la tester mais je pense que ça fonctionnera avec. Merci bien