Bloquer bouton - PHP - Programmation
Marsh Posté le 11-12-2004 à 17:04:21
tu peux ajouter une information de temps dans ta table mysql, avant de faire l'insertion du regarde le timestamp de la derniere insertion pour cet utilisateur et tu inseres seulement si il s'est écoulé un temps suffisant entre l'heure actuel et le timestamp de la table. Ok c'est barbare mais je ne suis pas sûr qu'il existe une solution 'propre'. si quelqu'un a une autre idee....
Marsh Posté le 11-12-2004 à 18:09:53
Effectivement ce n'est pas bete , je vais essayer ça en attendant de voir si il y a mieu.
Marsh Posté le 11-12-2004 à 19:26:36
Il y a moyen d'être plus propre et un peu plus déterministe en jouant p.e. avec un cookie ou la session...
Marsh Posté le 11-12-2004 à 19:55:32
tonbouttton.hide = true
ou un truc du genre en javascript
Marsh Posté le 11-12-2004 à 19:57:44
document.hop.submit.style.visibility='hidden'
tiré du code source de hfr
Marsh Posté le 12-12-2004 à 02:23:57
Ok merci a vous tous vous etes super !!! je vais essayer tout vos truc !!
Marsh Posté le 12-12-2004 à 04:33:14
pas normal --> quand tu clique sur le bouton, normalement il execute la page pointée par le ACTION du formulaire (la meme ou une autre) et ne dois pas te laisser le formulaire visible --> ou alors ton script est vachement long ce qui implique un pb) et si il reclique une nouvelle fois, c'est les nouvelles données qui sont prises en compte (soit un nouvel ajout avec INSERT soit une modif avec UPDATE)
Marsh Posté le 12-12-2004 à 15:01:34
Euh ... bha oui , le formulaire n'est plus visible , mais si il reclique pendant l'envoie alors qu'il me copier le fichier sa me renvoyer le fichier une seconde fois , et sa me fausser tout mon ordre de ma base sql. Mais apperement sa ne le fait plus bizzare je capte pas pourquoi ...
Marsh Posté le 12-12-2004 à 17:44:41
c'est normal que ca fasse ca.
Pour le contrer soit tu ajoute une sorte d'antiflood (pas le droit de faire plusieur upload dans la même minute) soit tu cache le bouton une fois que t'as cliqué dessus .
Marsh Posté le 12-12-2004 à 20:52:17
Citation : pas le droit de faire plusieur upload dans la même minute |
Ca reste fort barbare, comme on l'a dit, et assez approximatif. Tu empêcheras sans doute la double soumission accidentelle du formulaire, mais pas celle faite volontairement.
Citation : tu cache le bouton une fois que t'as cliqué dessus . |
Idem.
Marsh Posté le 12-12-2004 à 21:59:12
Euh ok , mais je fais comment alors ??
Mais c'est bizzare cela ne me le fait plus maintenant j'ai beau cliquer comme un barbabre sa enregistre mon entrée comme si de rien été , d'un coté tant mieu mais bon je comprend pas trop
Marsh Posté le 13-12-2004 à 10:43:48
sircam a écrit :
|
Ben euh de toute façon appart si chaque personne n'a le droit d'uploader qu'une seule et unique fois tu pourras pas l'empecher.
Alors qu'en faisant une sorte d'antiflood qui dure 60sec tu empeche un autre upload dans la même minute. En cachant le bouton pareil, pas de bouton pas de soumission, pas de soumission pas d'upload, pas d'upload ... pas d'upload.
Aprés il est vrai que toutes les méthodes faite en javascript peuvent être cassées donc moi je ferais les 2 (antiflood & cacher le bouton)
Marsh Posté le 13-12-2004 à 14:31:02
Ok , le temporisateur me plait plus , mais je ne sais pas comment on fait c'est avec quel commande ? vous pouvez me montrer un exemple ?
Merci
Marsh Posté le 14-12-2004 à 13:30:39
ben le plus commun est dans une base données mais c'est pas adapté a ta situation je pense.
Tu as combien de personne susceptible d'uploader en meme temps ?
Marsh Posté le 14-12-2004 à 13:51:44
Une seule , mais je voudrai éviter qu'elle clique plusieurs fois
Marsh Posté le 14-12-2004 à 20:50:35
un simple hide sur le bouton devrais suffir alors
Marsh Posté le 14-12-2004 à 23:33:26
fFluFf a écrit : un simple hide sur le bouton devrais suffir alors |
un simple hide ne suffit pas, c'est une solution "de première ligne" rien de plus (et rien de moins, pour ne pas encore être taxé d'anti jscript primaire )
Marsh Posté le 15-12-2004 à 10:55:34
oui mais bon faut voir aussi qu'il n'y a qu'une seule personne qui peut uploader et faut voir aussi quel est sa confience en lui.
Si la seule personne qui peut uploader ces lui même et qu'il cherche un moyen de lui éviter de cliquer 2 fois ca suffit.
Aprés si une seule personne peut uploader et que la page est protégé par un mot de passe ca doit suffir emplement.
C'est sur que si tu n'as pas confience en celui qui vas uploader, il te faut le blinder le script et la oui passer par un «antiflood»
Marsh Posté le 15-12-2004 à 14:09:17
Salut,
Ce n'est pas une question de non confiance exactement , c'est que je prépare des scripts pour faciliter le net a des personnes qui ne connaissent presque rien et je ne voudrai pas que pour x raison , le mec clique deux fois et fausse toute la base , parceque apres il va devoir me rapeller et puis meme , le truc est sencé ne pas avoir de probleme.
Merci :-)
Marsh Posté le 15-12-2004 à 14:10:49
s'il clique 2 fois à toi de vérifier derrière si les données sont cohérentes avant de faire l'insertion dans la base, non?
Marsh Posté le 15-12-2004 à 15:07:14
ben vu que ce script s'adresse a des non initiés le simple hide devrais suffir je vois mal un mec qui sais pas surfer des activer le javascript intentionnelement et cliquer plusieurs fois...
Marsh Posté le 15-12-2004 à 18:14:14
Faut tout prévoir , je l'ai fais essayer a mon pere , il ma plomber la base justement parceque le chargement de son truc etait trop lent alors il a recliqué dessus pour "voir" ... mais maintenant je vous l'avez dejà dit je n'ai plus ce probleme on peut cliquez plein de fois sa n'enregistre que le truc de base ... tant mieux ... comment sa ce fait ? aucune idée.
Marsh Posté le 15-12-2004 à 20:34:38
c'est quoi ta clé primaire ?
Marsh Posté le 16-12-2004 à 04:52:49
Je n'en ai mis aucune en primaire , enfin il me semble pas parceque lorsque sa planté mes champs avez bien des doublons. Je vais tenter de le faire planter voir en m'acharnant comme une brute.
Marsh Posté le 16-12-2004 à 10:45:16
Salut,
IF (bouton deja cliqué ) THEN %>
<input type="submit" value="Envoyer" name="Envoyer" disabled >
<% ELSE %>
<input type="submit" value="Envoyer" name="Envoyer" >
<% END IF%>
mais je sais pas comment verifier la condition : "bouton deja cliqué "
Marsh Posté le 16-12-2004 à 15:35:19
le problème c'est que tu ne peux le savoir que soit aprés qu'il est cliqué et dans la page action du form ou en javascript.
Marsh Posté le 16-12-2004 à 18:56:59
Apperement en ayant mis mon champ "nom" (base sql) en primaire , sa a l'air d'être bon vu qu'il ne veux plus deux fois le meme nom , enfin j'ai testé vite fait sa avait l'air bon , c'est logique ou alors coup de bol et sa va replanter ?
Marsh Posté le 11-12-2004 à 16:24:33
Salut c'est encore moi !! *vois tout le monde souffler*
J'explique mon petit probleme :
J'ai un formulaire avec un bouton d'envoie , tout marche tres bien , sauf si je reclique sur le bouton une seconde fois pendant l'envoi de mon formulaire ... là sa corromp ma base sql en lui envoyant des information bidon ,
J'aimerais savoir si on peut bloquer un bouton d'envoie , ou comment trouver une parade , pour qu'apres qu'il est cliquer sur le bouton d'envoie , il soit obliger d'attendre la fin du chargement et que donc il ne puisse pas cliquer en attendant.
Merci !!