[R] Eviter les doubles $_POST

Ce forum aborde toutes les questions qu'un codeur ou webmaster pourrait se poser, et n'ayant aucun rapport direct avec phpBB.
Tout ce qui peut concerner la récupération des sessions de phpBB sur votre site, doit se faire dans cette section.

Modérateur : Équipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Avatar du membre
Oyo
Inoubliable administrateur
Messages : 15300
Enregistré le : 12 févr. 2003 à 19:02
Localisation : Paris
Contact :

[R] Eviter les doubles $_POST

Message par Oyo »

Salut,

Je fais appel à vous car j'ai un petit problème: je n'arrive pas a éviter les doublons liés au bouton actualiser...

J'aimerai bien savoir comment faire pour éviter ça car c'est assez chiant.

Merci pour ceux qui pourrons m'aider.
Modifié en dernier par Oyo le 30 nov. 2006 à 16:50, modifié 2 fois.
Avatar du membre
goudo
Posteur habitué
Posteur habitué
Messages : 220
Enregistré le : 13 oct. 2005 à 09:49
Contact :

Message par goudo »

Tout dépend où sont stockées tes variables $_POST.
Si elles sont dans une bdd, alors une simple vérif dans celle-ci, et si $_POST est deja dedans tu bloques la requete.
Image
matheod
Maître des floodeurs
Maître des floodeurs
Messages : 2007
Enregistré le : 30 juin 2006 à 12:16

Message par matheod »

[hs on]

un admin uqi pose une question .. c'ets un comble .. lol

T apas d'avatar ?

[hs off]



Normalement on as un message nous rpévenant disant que ceci est un envoie de donné post on peut pas actualisésans les renvoyé


a+
Elglobo
Floodeur universel
Floodeur universel
Messages : 14940
Enregistré le : 13 oct. 2004 à 17:28
Contact :

Message par Elglobo »

matheod a écrit :[hs on]
un admin uqi pose une question .. c'ets un comble .. lol
T apas d'avatar ?
[hs off]

Normalement on as un message nous rpévenant disant que ceci est un envoie de donné post on peut pas actualisésans les renvoyé
a+
matheod, je ne veux pas être méchant, mais prends le code du fichier donné en première page, commence à le comprendre et aprés tu tenteras de donner une réponse à la question.
Concernant ta réponse on le sait mais si l'utilisateur répond oui alors ca envoie et c'est ce qu'Oyo veut éviter.

De plus, sache qu'on apprend à n'importe rang niveau ou age :wink:
phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Elglobo
Floodeur universel
Floodeur universel
Messages : 14940
Enregistré le : 13 oct. 2004 à 17:28
Contact :

Message par Elglobo »

Au fait pour revenir à ton soucis Oyo :-D
  • Soit tu le peux faire en vérifiant si pas déja entrée au niveau de la base comme te le dis goudo
  • Soit je sais que tu peux le faire par Ajax (mais je ne serai être précis)
  • Soit ce que tu peux faire, c'est avoir un script php qu'on appelera script1.php qui gère le formulaire, en action de ce form tu y fais pointer un autre script script2.php, qui lui s'occupera de traiter le formulaire soumis, et ensuite à la fin tu renvoies script2.php vers script1.php par un simple header, et de ce fait même si on actualise ca enverra rien.
  • Sinon il peut y avoir aussi moyen de le faire en testant si le contenu d'un input de ton formulaire a déja été envoyé ainsi :

    Code : Tout sélectionner

    if($_POST['hsoumis'] != "soumis")
    {
        //reste de ton script
    }
@+ :wink:
phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Avatar du membre
Oyo
Inoubliable administrateur
Messages : 15300
Enregistré le : 12 févr. 2003 à 19:02
Localisation : Paris
Contact :

Message par Oyo »

Salut,

goudo & Elglobo:
Les $_POST sont effectivement inserés dansune base de donnée.
Oui, il est vraiment ceci dit ce ne sont pas réelement des doublon puisque ma clé primaire est en autoincrémentation... le modéle de donnée est vraiment à **** ^^

Pour l'Ajax, oui pourquoi pas mais je ne suis pas expert et j'ai pas trop le temps de me pencher dessus ^^

Pour ton idée de script1 et script2, non c'est pas possible dans mon car car je dois gerer le triple affichage (créer, modifier, consulter) sans les découper en plusieurs pages... (pas le choix :'()

Pour ton $_POST['hsoumis'] != "soumis" ça ne marchera pas car si on est dans cette partie du formulaire c'est que le formulaire a déjà été soumis :)

Parcontre le code est super crade, il a été fait à la va vite j'ai pas tellement le temps de faire mieux (y a même pas de sécurité dessus lol)
Elglobo
Floodeur universel
Floodeur universel
Messages : 14940
Enregistré le : 13 oct. 2004 à 17:28
Contact :

Message par Elglobo »

Oyo a écrit :goudo & Elglobo:
Les $_POST sont effectivement inserés dansune base de donnée.
Oui, il est vraiment ceci dit ce ne sont pas réelement des doublon puisque ma clé primaire est en autoincrémentation... le modéle de donnée est vraiment à **** ^^
Oui peut être en autoincrement, mais tu es capable de vérifier si toute la ligne entrée est déja dans la base ? (sans parler de la clé primaire qui est autoincrement)

Sinon autre méthode qui marche mais qui est un peu barbare, enfin de traitement dans ta boucle, tu ré-initialises les variables $_POST :wink:
phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Avatar du membre
Oyo
Inoubliable administrateur
Messages : 15300
Enregistré le : 12 févr. 2003 à 19:02
Localisation : Paris
Contact :

Message par Oyo »

Lol j'ai pas de boucle :p

Non en faite, je peux avoir des champs avec le même contenue car un objectif peut avoir plusieurs plan d'action ;)
j'ai des régles de gestion à la con et un modéle de donnée m*rdique ^^

Par contre, si tu a une exemple pour vérif le contenu car j'avoue que les expression reg je ne connais pas trop
Elglobo
Floodeur universel
Floodeur universel
Messages : 14940
Enregistré le : 13 oct. 2004 à 17:28
Contact :

Message par Elglobo »

Quand je parle de ta boucle, je voulais dire une fois le traitement de ta condition de soumission du formulaire est fini :D
phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Avatar du membre
Oyo
Inoubliable administrateur
Messages : 15300
Enregistré le : 12 févr. 2003 à 19:02
Localisation : Paris
Contact :

Message par Oyo »

J'avais déjà testé en faisant:

Code : Tout sélectionner

unset($_POST);
Elglobo
Floodeur universel
Floodeur universel
Messages : 14940
Enregistré le : 13 oct. 2004 à 17:28
Contact :

Message par Elglobo »

J'ai trouvé une solution en utilisant les sessions demain matin je t'en parle car je dois me sauver :wink:
phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Avatar du membre
Genova
Pistolero des MODs
Messages : 7593
Enregistré le : 18 nov. 2003 à 17:45
Localisation : En train de programmer, logique non?
Contact :

Message par Genova »

Tu peux tout simplement éviter les doublons avec les sessions, par exemple ton formulaire :

Code : Tout sélectionner

<?php
session_start();
if (isset($_POST['submit']))
{
   $id_unique = $_POST['id_unique'];
   if (!isset($_SESSION[$id_unique]))
   {
      $_SESSION[$id_unique] = true;

      // Ici tu traites ton formulaire. Si le mec rafraichi il ne repassera pas dans cette condition.
   }
}
?>
<form method="post" action="">
<input type="text" name="toto" />
<input type="hidden" name="id_unique" value="fqqs97BGHfqsf" />
<input type="submit" name="submit" />
</form>
Bien noter le champ hidden.
Avatar du membre
Oyo
Inoubliable administrateur
Messages : 15300
Enregistré le : 12 févr. 2003 à 19:02
Localisation : Paris
Contact :

Message par Oyo »

Merci Elglobo, ceci dit je pense que la solution de Genova sera la plus simple :)
J'avais essayé de le faire comme ça mais j'ai du me planté cra ça ne fonctionner pas :)

Merci Geno
Avatar du membre
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
Messages : 3420
Enregistré le : 04 juil. 2005 à 17:23
Localisation : Paris
Contact :

Message par Vlad Tepesch »

Grand malade, retire tout de suite le code des EAP du net 8O

T'aurais du commencer par me téléphoner, je pensais à la même solution que Genova.
Avatar du membre
Oyo
Inoubliable administrateur
Messages : 15300
Enregistré le : 12 févr. 2003 à 19:02
Localisation : Paris
Contact :

Message par Oyo »

Vi je sais Vlad.

Toi ta un tel pas moi et en ce moment je peux pas appeler
Répondre

Retourner vers « Coding, Webmastering et Sécurité informatique »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité