IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Probleme de UPDATE


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 141
    Par défaut Probleme de UPDATE
    Bonjour,
    J'ai un problème pour mettre à jour les champs de ma table.
    Je m'explique. Au chargement de ma page aspx, je récupère les données via une base qui vont s'afficher dans les textbox correspondants. Jusque là, pas de soucis.
    L'utilisateur peut modifier ces information,s ensuite il clique sur un bouton pour lancer mon update. Mais là, problème !! !
    Les modifications ne sont pas prises en compte.
    Lorsque je vérifie le contenu de mon update, je constate que les informations reporté sont celle contenu lors du chargement de la page.
    Les modifications sont complètement ignorées.
    Si quelqu'un pouvait m'aider en m'expliquant le pourquoi, se serait sympa !!
    Merci

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    ah bah c'est sûr que vu que tu nous donnes strictement AUCUN code et qu'il existe environ un milliard (virgule deux) de raisons différentes à ton problème, on risque pas de trouver de solution...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 141
    Par défaut
    Euh .. désolé !!
    Voici une partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    log = Session[Option.ObjConnectLogin].ToString();
                passwd = Session[Option.ObjConnectPass].ToString();
                string Clause = " where Login = \'" + log + "\' and Mot_Passe = \'" +   passwd + "\'";
     
                string modif_societe = Societe.Text;
                string modif_type = Type_Activite.Text;
                string modif_login = Login.Text;
                string modif_pass = Pass.Text;
                /*******etc********/
     
    //Je me connecte ensuite a la base
    SqlConnection connectString;
                connectString = new SqlConnection("blablabla");
     
                SqlCommand reqlogin = new SqlCommand("Update Societe Set  Login='"
                                                        + modif_login + "', Mot_Passe='"
                                                        + modif_pass + "', Type='"
                                                    /******etc**********/
                                                        + Clause);
     
    //Et j'exécute ma requête à partir d'une fonction
    DataSet reslogin = ExecuteDataSet(connectString, reqlogin, CommandType.Text);
    Ce code s'exécute au click d'un bouton et renvoi a la même page mais avec les modifications apportées (enfin c'est ce qu'il est censé faire !!) .

    Voilà !

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    ca ne répond pas directement à ton problème, mais il y a énormément de points noirs dans ton appli, niveau architecture, niveau modèle de données, niveau fonctionnement et ca, en seulement 8 lignes de code. Tu peux zapper mes remarques mais si tu n'y porte pas attention dès maintenant, plus le temps va passer, plus vous risquez d'avoir des problèmes. donc si c'est un projet d'études, c'est le moment de prendre des bonnes habitudes, si c'est dans un environnement professionnel alors c'est critique


    1- stocker le login et le mot de passe en session??? mais tu es fou ?! oh ouuuuiiiii . le mot de passe est une information critique et ne doit JAMAIS être stocké, surtout pas de façon claire. Quant à stocker en session, c'est mal. Dieu inventa les membership et avec ton Identity, tu peux te trimballer le login de la société, sans avoir à gérer la session. Ici, tu n'as aucune certitude qu'une autre page ne va pas modifier la valeur de ta session. Il ne faut donc pas l'utiliser si possible.(parfois on a pas le choix, ici tu l'as)

    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     string Clause = " where Login = \'" + log + "\' and Mot_Passe = \'" +   passwd + "\'";
    rien qu'avec cette ligne, ca veut dire que ton appli est une passoire vis à vis du SQL Injection. Il est INTERDIT (bien que possible), de faire des requetes avec des concatenations. Utilises une SQLCommand et des Parameters. t'as déjà le SQLCommand, manque juste les paramètres pour faire ca proprement. Ca changera juste un peu ton code, la logique ne bouge pas, mais surtout ca t'évite qu'un mec puisse formater ta base de données, rien que depuis la fenêtre de login. Imagine, le mec saisi ceci:
    login: toto
    pwd: '; Delete from T_SOCIETE --

    il clique sur le bouton et toi, tu vas faire une requete pour vérifier si le mot de passe est bon et ca donne ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * From T_SOCIETE WHERE login= 'toto' and pwd=''; Delete from T_SOCIETE --'
    deux requetes au lieu d'une
    et là, le mec ne pourra pas se loguer mais il peut vider entièrement ta base. tu vois le danger?

    3- visiblement le mot de passe n'est pas crypté en base. Je plains vos clients si c'est vraiment le cas.

    4- pour trouver la ligne d'une société, tu la retrouve par rapport à un login et un password??? Les ID et les clés primaires, vous en avez pas? Ici, ca semble à une interface d'admin pour changer le login ou le pwd de connexion pour un compte société donné.
    Imagine le cas suivant
    User 1 se connecte avec les identifiants
    User 2 se connecte avec les memes identifiants
    User 1 change le pwd
    User 2 essaie ta requete et là, comme le pwd en base est différent de celui en session, ca marchera pas AU MIEUX, et au pire, il risque d'éditer un autre compte. Il FAUT une clé primaire pour chaque table "objet" et il faut se baser sur cette clé. ca doit ressembler à
    UPDATE T_SOCIETE WHERE ID=id_societe, ainsi, les utilisateurs se basent sur la même information qui ne bouge jamais


    5- pourquoi la variable Clause a une majuscule?? faut être consistant dans la nomenclature d'écriture du code. pareil, soit tout en francais, soit tout en anglais (variables, méthodes, classes, etc.)


    6- pour moi ExecuteDataSet te retourne un DataSet à partir d'une requête or tu fais une requete d'update donc ca retourne rien. mais toi, ca semble être une méthode perso, donc peut-on voir le code de cette méthode s'il te plait et surtout faudrait eventuellement trouver un autre nom pour éviter les collisions?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 141
    Par défaut
    Euh .. tes remarques, je ne les ais pas zappé, au contraire, je les ais suivis. !

    Pour le 1 : (membership)... ben ... je ne sais vraiment pas comment faire.
    et je ne comprends pas trop comment ça fonctionne.

    Pour le 2 : Toutes mes variables on été remplacé par des paramètres
    3 : Ce sera géré .
    4 : C'est géré ... mais j'ai juste donné la version simple.
    5 : Plus de Clause et je pense avoir correctement arranger la nomenclature
    6 : .Ya plus de ExecuteDataSet .... j'ai fais autrement.

    Du coup, après avoir arranger, le "bordel" qui me servait de code ... ... ben j'ai trouvé ma solution.
    J'ai juste rajouté dans mon code un IsPostBack.

    Merci encore pour tes conseils.

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    Pour le 1 : (membership)... ben ... je ne sais vraiment pas comment faire.
    et je ne comprends pas trop comment ça fonctionne.
    En fait, quand tu t'authentifie, on check login et pwd, ca, c'est partout pareil, par contre, ASP.Net propose des mécanismes ([ame="http://www.google.fr/search?q=asp.net+authentication+forms&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:fr:official&client=firefox-a"]authentication forms[/ame]) qui permettent de persister le fait de savoir si l'utilisateur est loggué ou non, et de stocker les informations sur lui. par défaut, juste son nom et ses roles. mais après, tu peux faire des CustomPrincipal et CustomIdentity.

    le GROS avantage, c'est qu'après, tu remplis juste ton Principal et l'Identity à la connexion et tu peux gérer facilement les droits d'accès dans le web.config. par exemple, dès que t'arrives sur la page admin si t'es pas loggué, ca te renvoi vers la page de login. si t'as pas le role admin, ca te ramene sur une page en disant que t'as pas les droits d'accès.
    pas besoin de lignes de code, juste une ligne ou deux dans le web.config. et tu peux le faire page par page, dossier par dossier, pour les comptes authentifiés ou non, ou par role, ou même par nom d'utilisateur.
    c'est vraiment puissant et ca permet de changer la config sans avoir à écrire du code ou recompiler puisque c'est du xml.


    Pour le 2 : Toutes mes variables on été remplacé par des paramètres
    crois moi, ce genre de petite erreur, je le vois partout, je l'ai encore sur une application que j'ai corrigé où 3 développeurs confirmés (>3ans de .Net en pro) avaient fait pareil


    3 : Ce sera géré .


    4 : C'est géré ... mais j'ai juste donné la version simple.
    la version simple est avec l'ID non?

    5 : Plus de Clause et je pense avoir correctement arranger la nomenclature
    tu peux eventuellement utiliser les outils gratuits FxCop et StyleCop. ils t'aident à vérifier que tu écris bien le code. Au début ca te sort plein d'avertissements mais ca t'aide à prendre des bonnes habitudes et plus le temps passe, moins tu en as besoin. mais ce sont des références donc tu risque dans ta vie, de faire face à un chef de projet qui les imposera.


    6 : .Ya plus de ExecuteDataSet .... j'ai fais autrement.
    tu veux pas la donner? ca pourrait servir à un autre lecteur

Discussions similaires

  1. Probleme d'UPDATE sur un champ text
    Par Nip dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/07/2005, 11h35
  2. [requete SQL] Probleme requete UPDATE
    Par Shiryu44 dans le forum JDBC
    Réponses: 12
    Dernier message: 10/03/2005, 11h41
  3. probleme requete update
    Par Amandine62 dans le forum ASP
    Réponses: 12
    Dernier message: 27/01/2005, 11h15
  4. probleme d'update
    Par adun dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/01/2005, 11h27
  5. Probleme S/ UPDATE : ADOQUERY base = .DBF , D7
    Par bzh56 dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/02/2004, 01h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo