Empecher une procedure de s'executer plusieurs fois

Résolu
cs_blooh Messages postés 4 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 12 mai 2005 - 12 mai 2005 à 10:40
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Derniè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.

5 réponses

cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
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 !
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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)


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
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 !
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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...

La sécurité : c'est tout un art ..


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 mai 2005 à 09:31
« La programmation est aujourd’hui une course entre les ingénieurs informaticiens qui essaient de construire des programmes plus grands et mieux à l’épreuve des idiots, et l’univers qui essaie de produire des idiots plus grands et plus idiots.
Jusqu’à présent, l’univers gagne. »


Rich Cook ( = jesusonline ? ^^)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous