cs_blooh
Messages postés4Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention12 mai 2005
-
12 mai 2005 à 10:40
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
14 mai 2005 à 09:31
Bonjour,
Voila j'ai un probleme qui me parait simple... mais je reste bloqué car je ne comprends pas bien ce qu'il se passe:
J'ai un formulaire avec divers champs avec controles et un bouton valider. Probleme : ma page doit executer une procedure assez longue (insertion en base) et l'utilisateur impatient clique plusieurs fois ce qui re-execute ma procedure a nouveau avant que la fenetre ne se ferme. J'ai essayé d'utiliser des mutex mais ca n'a pas l'air de marcher, j'ai l'impression qu'a chaque fois que l'utilisateur clique, un nouveau contexte de mon programme se crée coté serveur.
Auriez-vous une solution pour empecher une procedure de type button_click de s'executer plusieurs fois en parallele (sans javascript)? Merci d'avance.
A voir également:
Empecher une procedure de s'executer plusieurs fois
cs_Nurgle
Messages postés1642Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention28 avril 20114 13 mai 2005 à 21:07
Salut
la page est renvoyée au server à chaque fois que l'utilisateur clique sur le bouton.
Le mieux serait d'utiliser du JavaScript (c'est le plus simple...)
Sinon tu peux utiliser par exemple les variables (de Session ?) pour éviter ça.
Exemple :
Sub Page_Load (Sender As Object, E As EventArgs)
Dim Renvoie As Integer = 0
End Sub
Sub Button1_Click(Sender As Object, E As EventArgs)
If Renvoie = 0 Then
Renvoie = 1
'tout ton code super long
End If
End Sub
Ainsi, une fois qu'on a cliqué, le code ne sera pas exécuté avant le rechargement de la page...normalement... (sinon on peut essayer aussi avec des variables de Session)
(tu pourrais aussi faire ça en utilisant le cache ou d'autres trucs dans ce genre...mais le mieux c'est le javascript)
Nurgle C'est une grande folie que de vouloir être sage tout seul !
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 13 mai 2005 à 21:19
Pas d'accord avec toi Nurgle, moi je suis parano et aussi clickers fou, j'ai donc desactivé javascript, et quand j'ai un bouton, ben je clique autant que je peux, tant que le bouton disparait pas ...
Il ne faut jamais faire confiance au client, et tj partir du principe que le client est un pirate, donc oui faire du javascript c'est cool, mais faut toujours faire une validation coté serveur, car la on peut pas la desactiver :)
Donc la solution avec des variables sessions est bien, et puis bien plus efficace à mettre en place que le javascript (et oui je suis faineant moi)
cs_Nurgle
Messages postés1642Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention28 avril 20114 13 mai 2005 à 21:39
...
Il ne m'était pas venu à l'idée qu'on pouvait désactiver intentionnellement JavaScript...
Dans ce cas, oui c'est sûr, c'est mieux de vérifier côté server.
(c'est vrai que j'ai l'habitude d'utiliser le javascript pour éviter trop de retours au serveur......mais si les utilisateurs se mette à tout casser...)
ça marcherais le mieux avec des variables de Session ou des variables normales (n'étant pas un grand spécialiste...)
Nurgle C'est une grande folie que de vouloir être sage tout seul !
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 13 mai 2005 à 21:44
le mieux est de faire le boulot 2 fois ... car on empeche la plupart des personnes de faire des requetes, et aussi les personnes qui veulent faire planter le serveur...
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 14 mai 2005 à 09:31
« La programmation est aujourdhui une course entre les ingénieurs informaticiens qui essaient de construire des programmes plus grands et mieux à lépreuve des idiots, et lunivers qui essaie de produire des idiots plus grands et plus idiots.
Jusquà présent, lunivers gagne. »