Empecher une procedure de s'executer plusieurs fois [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
12 mai 2005
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
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

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

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 !
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
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
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
« 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#