[C#] - Connexion, Inscription, Suppression de compte SQL

Statut
N'est pas ouverte pour d'autres réponses.

Paradise GTP

Premium
Inscription
30 Juin 2013
Messages
4 271
Réactions
4 414
Points
24 105
RGCoins
519
You must be registered for see images attach


[TABS]
[TAB=Sommaire]I - Création de la base de donnée
II - Organisation de la table
III - Design du logiciel
IV - Inscription
V - Connexion
VI - Suppression
VII - Conclusion
[/TAB]
[TAB=Liens utile]MySql.Data.dll :
| |
Code source :
| |
[/TAB]
[TAB=Crédits]Merci à ces personnes qui m'ont aidées plus ou moins pour que je vous propose ce tutoriel.
- @Baptiste ( C# )
- @Maxence' SEC ( SQL )
- @Rivals ( SQL )
- @Snizah ( GFX )
[/TAB]
[/TABS]

I - Création de la base de donnée

Vous devez être inscrit pour voir les médias

La première chose à faire pour ce tutoriel est de créer une base de donnée afin de stocké les utilisateurs qui se seront inscrit sur votre logiciel.
Pour ce faire il faut déjà un hébergement, je vous conseil qui fonctionne très bien ( et est gratuit ).
Une fois votre compte créer c'est simple, vous vous rendez dans l'onglet Admin puis ensuite MySQL dans le menu sur la gauche.
Ensuite nous allez créer la base de donnée, donc vous allez remplir simplement comme ceci :
ea8db15caaae66522626bee99f6555b7.png

Donc voila la base de donnée est créer, maintenant il faut créer un utilisateur.
Donc vous cliquez sur Gestion des utilisateurs, normalement vous en avez un mais on va l'utiliser, on va en créer un nouveau.
ec9fc87e0adb1c0161e4048a94c72588.png


Voila donc la base de donnée et l'utilisateur sont créer.
Ensuite on ce rend sur afin de se connecter.
Vous voila sur le PhpMyAdmin maintenant on créer la table. Donc vous cliquez sur le nom de votre base de donnée.
976c7643106a70ab9da9f1b9e808b485.png


II - Organisation de la table

Pour moi c'est boosterzlobby_sql donc vous mettez le nom que vous voulez, moi je vais vous montrez avec 6 colonnes si vous voulez en mettre plus.
fe0b98fe4cfa49ccc6863d44061f414b.png

Donc vous mettez ceci ( sauf si vous ne voulez pas de sa ) :
f4274cd0cd64acf53bcb852b2851c63e.png

( NB : Les commentaires ne sont pas obligatoire )
Donc voila la partie sur internet est faites.

III - Design du logiciel

Donc je vais faire un design très basique mais après je vous laisse faire comme vous voulez vous.
Il faudra donc 3 Forms
- Inscription
Alors le design à faire :
4edef3aade113b726647d4cc06cd4837.png

La textbox de l'utilisateur : tb_user
La textbox du mot de passe : tb_pass
La textbox du mot de passe : tb_mail
Ainsi que un dateTimePicker ou on ne changera pas le nom.
Et le bouton.

- Connexion
Pour la seconde Form, on fait ce design :
9f35038fabefd99b7be144034b6935e4.png

La textbox de l'utilisateur : tb_user
La textbox du mot de passe : tb_pass
Ainsi que le bouton et un linklabel mais eux le nom de change pas.

- Suppression
Lui est très simple on met un seul bouton, que on ne renommera pas.
Ensuite si la Form de votre page de connexion est la Form2 on va changer pour que elle s'ouvre en premier.
Pour faire ceci on va dans Program.cs et on change le Form1 par le nom de la Form de connexion.
c641604e0f2b11aa664535986672b4ab.png


IV - Inscription

Vous devez être inscrit pour voir les médias

Donc vous ajoutez la référence que je vous ai fournis ensuite on la déclare :​
Code:
using MySql.Data.MySqlClient;

Ensuite on va définir les propriétés de notre base de donnée​
Code:
        string sDatabase = "server=;database= ;userid=;password=";

Donc bien entendu vous le remplissez avec vos informations que vous avez mise dans la création de la base de donnée
Ensuite on va mettre le code pour obtenir l'HWID du PC de la personne qui créer le compte comme ceci le compte n'ira que sur un seul PC.​
Code:
        private String HWID()
        {
            string HWID = string.Empty;
            ManagementClass Management = new ManagementClass("win32_processor");
            ManagementObjectCollection MObject = Management.GetInstances();
            foreach (ManagementObject mob in MObject)
            {
                if (string.IsNullOrEmpty(HWID))
                {
                    HWID = mob.GetPropertyValue("processorID").ToString();
                    break;
                }
            }
            return HWID;
        }

Ensuite pour hash le mot de passe
Code:
        private String HashPassword(String Password)
        {
            string _salt = "X(7o1gS!$@b2HL_K(rxh";
            using (var sha = SHA512.Create())
            {
                var computedHash = sha.ComputeHash(Encoding.Unicode.GetBytes(Password + _salt));
                return Convert.ToBase64String(computedHash);
            }

Donc, vous allez avoir des erreurs donc vous devez ajouter System.Management qui est dans les assembly de Visual Studio puis déclarer leurs utilisation​

Code:
using System.Security.Cryptography;
using System.Management;

Ensuite ont met ce code dans le bouton​
Code:
            if (tb_user.Text == "")
            {
                MessageBox.Show("Nom d'utilisateur non renseigné", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (tb_pass.Text == "")
            {
                MessageBox.Show("Mot de passe non renseigné", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (tb_mail.Text == "")
            {
                MessageBox.Show("Adresse mail non renseignée", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (tb_mail.Text.Contains("@"))
                {
                    string Pass = HashPassword(tb_pass.Text);
                    string myConnection = sDatabase;
                    MySqlConnection myConn = new MySqlConnection(myConnection);

                    MySqlCommand SelectCommand = new MySqlCommand("INSERT INTO `Table`(`Utilisateur`, `Password`, `Mail`, `Inscription`, `HWID`) VALUES('" + tb_user.Text + "', '" + Pass + "', '" + tb_mail.Text + "', '" + dateTimePicker1.Text + "', '" + HWID() + "')", myConn);
                    MySqlDataReader myReader;
                    myConn.Open();
                    myReader = SelectCommand.ExecuteReader();

                    new Form1().Show();
                    this.Hide();
                }
                else
                {
                    MessageBox.Show("Adresse mail incorrect", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

Donc il vous faut faire attention à cette ligne​
Code:
                    MySqlCommand SelectCommand = new MySqlCommand("INSERT INTO `Table`(`Utilisateur`, `Password`, `Mail`, `Inscription`, `HWID`) VALUES('" + tb_user.Text + "', '" + Pass + "', '" + tb_mail.Text + "', '" + dateTimePicker1.Text + "', '" + HWID() + "')", myConn);

Si vous n'avez pas mit dans la table comme moi, il vous faudra faire la modification. Mais surtout modifier le nom de la table, moi c'est Table si vous c'est autre chose modifier simplement le mot.

Voila le rendu
2f5ca932d45030b75ca29de5db783628.png


V - Connexion

Vous devez être inscrit pour voir les médias

Donc, maintenant que les utilisateurs peuvent créer leurs comptes il faut que ils puissent se connecter non ?
Alors on va commencé ici aussi par la déclaration des extensions.​

Code:
using System.Management;
using System.Security.Cryptography;
using MySql.Data.MySqlClient;

Alors on fait comme pour l'inscription​
Code:
        string sDatabase = "server=;database= ;userid=;password=";

Puis les deux fonctions​
Code:
        private String HWID()
        {
            string HWID = string.Empty;
            ManagementClass Management = new ManagementClass("win32_processor");
            ManagementObjectCollection MObject = Management.GetInstances();
            foreach (ManagementObject mob in MObject)
            {
                if (string.IsNullOrEmpty(HWID))
                {
                    HWID = mob.GetPropertyValue("processorID").ToString();
                    break;
                }
            }
            return HWID;
        }

Code:
        private String HashPassword(String Password)
        {
            string _salt = "X(7o1gS!$@b2HL_K(rxh";
            using (var sha = SHA512.Create())
            {
                var computedHash = sha.ComputeHash(Encoding.Unicode.GetBytes(Password + _salt));
                return Convert.ToBase64String(computedHash);
            }


Ensuite dans les propriétés de l'application on va ajouter ceci :
5bf71a093389249c7644102436381673.png


Voila, une fois fait on peut mettre le code dans le bouton.​

Code:
WindowsFormsApplication18.Properties.Settings.Default.User = tb_user.Text;
            string Password = HashPassword(tb_pass.Text);
            try
            {
                string myConnection = sDatabase;
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand(" select * from VOTREBDD.VOTRETABLE where Utilisateur='" + this.tb_user.Text + "' and Password='" + Password + "' and HWID='" + HWID() + "' ;", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                int count = 0;
                while (myReader.Read())
                {
                    count = count + 1;
                }
                if (count == 1)
                {
                    new Form3().Show();
                    this.Hide();
                }
                else
                    MessageBox.Show("Connexion refusé");
                myConn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

Ici, il vous faut faire attention à cette ligne​
Code:
                MySqlCommand SelectCommand = new MySqlCommand(" select * from VOTREBDD.VOTRETABLE where Utilisateur='" + this.tb_user.Text + "' and Password='" + Password + "' and HWID='" + HWID() + "' ;", myConn);

Vous devez modifier " VOTREBDD.VOTRETABLE " donc moi cela donne : " boosterzlobby_sql.Table " Comme ma BDD ce nome : boosterzlobby_sql et ma table, Table
Puis ici vous modifier par le nom de votre projet moi c'est WindowsFormsApplication18
Code:
WindowsFormsApplication18.Properties.Settings.Default.User = tb_user.Text;
Voila ensuite dans votre petit linklabel vous mettez​
Code:
            new Form1().Show();
            this.Hide();

VI - Suppression

Vous devez être inscrit pour voir les médias

Donc cette partie sera la plus courte.
Alors on commence comme les autres Form par ajouter l'utilisation de l'extension.​

Code:
using MySql.Data.MySqlClient;

Oui, que elle à mettre ici. Ensuite on met les informations de notre BDD.​

Code:
        string sDatabase = "server=;database= ;userid=;password=";


Puis ensuite, simplement dans le bouton on met​

Code:
string myConnection = sDatabase;
            DialogResult retour = MessageBox.Show("Êtes vous sur de vouloir supprimé votre compte ?", "Dernière chance", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (retour == DialogResult.OK)
            {
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand("DELETE FROM `Table` WHERE Utilisateur = '" + WindowsFormsApplication18.Properties.Settings.Default.User + "'", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                DialogResult retour2 = MessageBox.Show("Compte supprimé !", "Succès", MessageBoxButtons.OK, MessageBoxIcon.Information);
                if (retour2 == DialogResult.OK)
                {
                    new Form1().Show();
                    this.Hide();
                }
            }
            else if (retour == DialogResult.Cancel)
            {
                MessageBox.Show("Compte non supprimé !");
            }

Donc, la pareil il faut faire attention à une phrase qui ne vous dira pas d'erreur.​

Code:
                MySqlCommand SelectCommand = new MySqlCommand("DELETE FROM `Table` WHERE Utilisateur = '" + WindowsFormsApplication18.Properties.Settings.Default.User + "'", myConn);

Il vous faut mettre votre nom de table à la place de " Table " et le nom de votre projet à la place de " WindowsFormsApplication18 "

VII - Conclusion

Donc voila le tutoriel s'achève là.
Donc ceci n'est pas sécuriser car n'importe qui peut décompiler le logiciel pour récupérer les informations de la BDD, donc pour les logiciels payant oublier, privatiser la connexion SQL-PHP, mais pour un logiciel gratuit pourquoi pas.
Si vous avez besoin d'aide ou une question je répondrais de mon possible.
Si vous ne comprenez pas veuillez d'abord regarder la source avant de demander de l'aide.

Merci de votre lecture !
 
Dernière édition:
Trés bon topic, un peu long (d) :troll:
Gros GG à toi ;)
 
You must be registered for see images attach


[TABS]
[TAB=Sommaire]I - Création de la base de donnée
II - Organisation de la table
III - Design du logiciel
IV - Inscription
V - Connexion
VI - Suppression
VII - Conclusion
[/TAB]
[TAB=Liens utile]MySql.Data.dll :
| |
Code source :
| |
[/TAB]
[TAB=Crédits]Merci à ces personnes qui m'ont aidées plus ou moins pour que je vous propose ce tutoriel.
- @Baptiste ( C# )
- @Maxence' SEC ( SQL )
- @Rivals ( SQL )
- @Snizah ( GFX )
[/TAB]
[/TABS]

I - Création de la base de donnée

La première chose à faire pour ce tutoriel est de créer une base de donnée afin de stocké les utilisateurs qui se seront inscrit sur votre logiciel.
Pour ce faire il faut déjà un hébergement, je vous conseil qui fonctionne très bien ( et est gratuit ).
Une fois votre compte créer c'est simple, vous vous rendez dans l'onglet Admin puis ensuite MySQL dans le menu sur la gauche.
Ensuite nous allez créer la base de donnée, donc vous allez remplir simplement comme ceci :
ea8db15caaae66522626bee99f6555b7.png

Donc voila la base de donnée est créer, maintenant il faut créer un utilisateur.
Donc vous cliquez sur Gestion des utilisateurs, normalement vous en avez un mais on va l'utiliser, on va en créer un nouveau.
ec9fc87e0adb1c0161e4048a94c72588.png


Voila donc la base de donnée et l'utilisateur sont créer.
Ensuite on ce rend sur afin de se connecter.
Vous voila sur le PhpMyAdmin maintenant on créer la table. Donc vous cliquez sur le nom de votre base de donnée.
976c7643106a70ab9da9f1b9e808b485.png


II - Organisation de la table

Pour moi c'est boosterzlobby_sql donc vous mettez le nom que vous voulez, moi je vais vous montrez avec 6 colonnes si vous voulez en mettre plus.
fe0b98fe4cfa49ccc6863d44061f414b.png

Donc vous mettez ceci ( sauf si vous ne voulez pas de sa ) :
f4274cd0cd64acf53bcb852b2851c63e.png

( NB : Les commentaires ne sont pas obligatoire )
Donc voila la partie sur internet est faites.

III - Design du logiciel

Donc je vais faire un design très basique mais après je vous laisse faire comme vous voulez vous.
Il faudra donc 3 Forms
- Inscription
Alors le design à faire :
4edef3aade113b726647d4cc06cd4837.png

La textbox de l'utilisateur : tb_user
La textbox du mot de passe : tb_pass
La textbox du mot de passe : tb_mail
Ainsi que un dateTimePicker ou on ne changera pas le nom.
Et le bouton.

- Connexion
Pour la seconde Form, on fait ce design :
9f35038fabefd99b7be144034b6935e4.png

La textbox de l'utilisateur : tb_user
La textbox du mot de passe : tb_pass
Ainsi que le bouton et un linklabel mais eux le nom de change pas.

- Suppression
Lui est très simple on met un seul bouton, que on ne renommera pas.
Ensuite si la Form de votre page de connexion est la Form2 on va changer pour que elle s'ouvre en premier.
Pour faire ceci on va dans Program.cs et on change le Form1 par le nom de la Form de connexion.
c641604e0f2b11aa664535986672b4ab.png


IV - Inscription

Donc vous ajoutez la référence que je vous ai fournis ensuite on la déclare :​
Code:
using MySql.Data.MySqlClient;

Ensuite on va définir les propriétés de notre base de donnée​
Code:
        string sDatabase = "server=;database= ;userid=;password=";

Donc bien entendu vous le remplissez avec vos informations que vous avez mise dans la création de la base de donnée
Ensuite on va mettre le code pour obtenir l'HWID du PC de la personne qui créer le compte comme ceci le compte n'ira que sur un seul PC.​
Code:
        private String HWID()
        {
            string HWID = string.Empty;
            ManagementClass Management = new ManagementClass("win32_processor");
            ManagementObjectCollection MObject = Management.GetInstances();
            foreach (ManagementObject mob in MObject)
            {
                if (string.IsNullOrEmpty(HWID))
                {
                    HWID = mob.GetPropertyValue("processorID").ToString();
                    break;
                }
            }
            return HWID;
        }

Ensuite pour hash le mot de passe
Code:
        private String HashPassword(String Password)
        {
            string _salt = "X(7o1gS!$@b2HL_K(rxh";
            using (var sha = SHA512.Create())
            {
                var computedHash = sha.ComputeHash(Encoding.Unicode.GetBytes(Password + _salt));
                return Convert.ToBase64String(computedHash);
            }

Donc, vous allez avoir des erreurs donc vous devez ajouter System.Management qui est dans les assembly de Visual Studio puis déclarer leurs utilisation​

Code:
using System.Security.Cryptography;
using System.Management;

Ensuite ont met ce code dans le bouton​
Code:
            if (tb_user.Text == "")
            {
                MessageBox.Show("Nom d'utilisateur non renseigné", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (tb_pass.Text == "")
            {
                MessageBox.Show("Mot de passe non renseigné", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (tb_mail.Text == "")
            {
                MessageBox.Show("Adresse mail non renseignée", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (tb_mail.Text.Contains("@"))
                {
                    string Pass = HashPassword(tb_pass.Text);
                    string myConnection = sDatabase;
                    MySqlConnection myConn = new MySqlConnection(myConnection);

                    MySqlCommand SelectCommand = new MySqlCommand("INSERT INTO `Table`(`Utilisateur`, `Password`, `Mail`, `Inscription`, `HWID`) VALUES('" + tb_user.Text + "', '" + Pass + "', '" + tb_mail.Text + "', '" + dateTimePicker1.Text + "', '" + HWID() + "')", myConn);
                    MySqlDataReader myReader;
                    myConn.Open();
                    myReader = SelectCommand.ExecuteReader();

                    new Form1().Show();
                    this.Hide();
                }
                else
                {
                    MessageBox.Show("Adresse mail incorrect", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

Donc il vous faut faire attention à cette ligne​
Code:
                    MySqlCommand SelectCommand = new MySqlCommand("INSERT INTO `Table`(`Utilisateur`, `Password`, `Mail`, `Inscription`, `HWID`) VALUES('" + tb_user.Text + "', '" + Pass + "', '" + tb_mail.Text + "', '" + dateTimePicker1.Text + "', '" + HWID() + "')", myConn);

Si vous n'avez pas mit dans la table comme moi, il vous faudra faire la modification. Mais surtout modifier le nom de la table, moi c'est Table si vous c'est autre chose modifier simplement le mot.

Voila le rendu
2f5ca932d45030b75ca29de5db783628.png


V - Connexion

Donc, maintenant que les utilisateurs peuvent créer leurs comptes il faut que ils puissent se connecter non ?
Alors on va commencé ici aussi par la déclaration des extensions.​

Code:
using System.Management;
using System.Security.Cryptography;
using MySql.Data.MySqlClient;

Alors on fait comme pour l'inscription​
Code:
        string sDatabase = "server=;database= ;userid=;password=";

Puis les deux fonctions​
Code:
        private String HWID()
        {
            string HWID = string.Empty;
            ManagementClass Management = new ManagementClass("win32_processor");
            ManagementObjectCollection MObject = Management.GetInstances();
            foreach (ManagementObject mob in MObject)
            {
                if (string.IsNullOrEmpty(HWID))
                {
                    HWID = mob.GetPropertyValue("processorID").ToString();
                    break;
                }
            }
            return HWID;
        }

Code:
        private String HashPassword(String Password)
        {
            string _salt = "X(7o1gS!$@b2HL_K(rxh";
            using (var sha = SHA512.Create())
            {
                var computedHash = sha.ComputeHash(Encoding.Unicode.GetBytes(Password + _salt));
                return Convert.ToBase64String(computedHash);
            }


Ensuite dans les propriétés de l'application on va ajouter ceci :
5bf71a093389249c7644102436381673.png


Voila, une fois fait on peut mettre le code dans le bouton.​

Code:
WindowsFormsApplication18.Properties.Settings.Default.User = tb_user.Text;
            string Password = HashPassword(tb_pass.Text);
            try
            {
                string myConnection = sDatabase;
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand(" select * from VOTREBDD.VOTRETABLE where Utilisateur='" + this.tb_user.Text + "' and Password='" + Password + "' and HWID='" + HWID() + "' ;", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                int count = 0;
                while (myReader.Read())
                {
                    count = count + 1;
                }
                if (count == 1)
                {
                    new Form3().Show();
                    this.Hide();
                }
                else
                    MessageBox.Show("Connexion refusé");
                myConn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

Ici, il vous faut faire attention à cette ligne​
Code:
                MySqlCommand SelectCommand = new MySqlCommand(" select * from VOTREBDD.VOTRETABLE where Utilisateur='" + this.tb_user.Text + "' and Password='" + Password + "' and HWID='" + HWID() + "' ;", myConn);

Vous devez modifier " VOTREBDD.VOTRETABLE " donc moi cela donne : " boosterzlobby_sql.Table " Comme ma BDD ce nome : boosterzlobby_sql et ma table, Table
Puis ici vous modifier par le nom de votre projet moi c'est WindowsFormsApplication18
Code:
WindowsFormsApplication18.Properties.Settings.Default.User = tb_user.Text;
Voila ensuite dans votre petit linklabel vous mettez​
Code:
            new Form1().Show();
            this.Hide();

VI - Suppression

Donc cette partie sera la plus courte.
Alors on commence comme les autres Form par ajouter l'utilisation de l'extension.​

Code:
using MySql.Data.MySqlClient;

Oui, que elle à mettre ici. Ensuite on met les informations de notre BDD.​

Code:
        string sDatabase = "server=;database= ;userid=;password=";


Puis ensuite, simplement dans le bouton on met​

Code:
string myConnection = sDatabase;
            DialogResult retour = MessageBox.Show("Êtes vous sur de vouloir supprimé votre compte ?", "Dernière chance", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (retour == DialogResult.OK)
            {
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand("DELETE FROM `Table` WHERE Utilisateur = '" + WindowsFormsApplication18.Properties.Settings.Default.User + "'", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                DialogResult retour2 = MessageBox.Show("Compte supprimé !", "Succès", MessageBoxButtons.OK, MessageBoxIcon.Information);
                if (retour2 == DialogResult.OK)
                {
                    new Form1().Show();
                    this.Hide();
                }
            }
            else if (retour == DialogResult.Cancel)
            {
                MessageBox.Show("Compte non supprimé !");
            }

Donc, la pareil il faut faire attention à une phrase qui ne vous dira pas d'erreur.​

Code:
                MySqlCommand SelectCommand = new MySqlCommand("DELETE FROM `Table` WHERE Utilisateur = '" + WindowsFormsApplication18.Properties.Settings.Default.User + "'", myConn);

Il vous faut mettre votre nom de table à la place de " Table " et le nom de votre projet à la place de " WindowsFormsApplication18 "

VII - Conclusion

Donc voila le tutoriel s'achève là.
Donc ceci n'est pas sécuriser car n'importe qui peut décompiler le logiciel pour récupérer les informations de la BDD, donc pour les logiciels payant oublier, privatiser la connexion SQL-PHP, mais pour un logiciel gratuit pourquoi pas.
Si vous avez besoin d'aide ou une question je répondrais de mon possible.
Si vous ne comprenez pas veuillez d'abord regarder la source avant de demander de l'aide.

Merci de votre lecture !
Merci :ok:
Meme si je savais déjà :crazy:
+1 :love:
 
Merci du partage !
 
Super topic Boosterz ! Super bien présenté !
 
Très bon tutoriel Boosterz ;)
Par contre, attention à la sécurité, avec Wireshark, on peut récupérer les informations. :)
 
Très bon tutoriel Boosterz ;)
Par contre, attention à la sécurité, avec Wireshark, on peut récupérer les informations. :)
Ce tool n'est pas utiliser par les membres mais par le créateur dun tool ^^
 
Ce tool n'est pas utiliser par les membres mais par le créateur dun tool ^^
Je sais mais je parle par ceux qui vont utiliser le système pour mettre dans leur logiciel (payant)
 
hello! j'aurait besoin d'un petit coup de main, j'ai une connexion refusée et je ne comprend pas pourquoi.. vu que sa fait sa déja il n'y a ni problème de connexion a la base de donné , ni problème de connexion a la table ou a une collone de la table :p

voici ma table :
9ehn1s7.png


je met bien a en user et a en mot de passe et je suis sur le même pc mais j'ai la connexion refusée :(

code du bouton de connexion :
Code:
 {
            tool.Properties.Settings.Default.User = textBox1.Text;
            string Password = HashPassword(textBox2.Text);
            try
            {
                string myConnection = sDatabase;
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand(" select * from azotecra_tool.login where User='" + this.textBox1.Text + "' and Password='" + Password + "' and HWID='" + HWID() + "' ;", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                int count = 0;
                while (myReader.Read())
                {
                    count = count + 1;
                }
                if (count == 1)
                {
                    new Form5().Show();
                    this.Hide();
                }
                else
                    MessageBox.Show("Connexion refusé");
                myConn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
textbox1 = user
textbox2 = mot de passe

EDIT : au lieu de prendre la valeur cryptée pour le mot de passe j'ai directement pris la valeur rentrée dans la textbox (alors qu'elle est visuellement cryptée) cela marche , par contre j'ai une combobox pour afficher les ps3 dans ccapi ba elle est vide D:

EDIT 2 : j'ai un peu modifier le code pour update les consoles, maintenant la combobox a bien les ps3 mais de base l'item selectionné est vide..
@Baptiste @DEVR0
 
Dernière édition:
You must be registered for see images attach


[TABS]
[TAB=Sommaire]I - Création de la base de donnée
II - Organisation de la table
III - Design du logiciel
IV - Inscription
V - Connexion
VI - Suppression
VII - Conclusion
[/TAB]
[TAB=Liens utile]MySql.Data.dll :
| |
Code source :
| |
[/TAB]
[TAB=Crédits]Merci à ces personnes qui m'ont aidées plus ou moins pour que je vous propose ce tutoriel.
- @Baptiste ( C# )
- @Maxence' SEC ( SQL )
- @Rivals ( SQL )
- @Snizah ( GFX )
[/TAB]
[/TABS]

I - Création de la base de donnée

Vous devez être inscrit pour voir les médias

La première chose à faire pour ce tutoriel est de créer une base de donnée afin de stocké les utilisateurs qui se seront inscrit sur votre logiciel.
Pour ce faire il faut déjà un hébergement, je vous conseil qui fonctionne très bien ( et est gratuit ).
Une fois votre compte créer c'est simple, vous vous rendez dans l'onglet Admin puis ensuite MySQL dans le menu sur la gauche.
Ensuite nous allez créer la base de donnée, donc vous allez remplir simplement comme ceci :
ea8db15caaae66522626bee99f6555b7.png

Donc voila la base de donnée est créer, maintenant il faut créer un utilisateur.
Donc vous cliquez sur Gestion des utilisateurs, normalement vous en avez un mais on va l'utiliser, on va en créer un nouveau.
ec9fc87e0adb1c0161e4048a94c72588.png


Voila donc la base de donnée et l'utilisateur sont créer.
Ensuite on ce rend sur afin de se connecter.
Vous voila sur le PhpMyAdmin maintenant on créer la table. Donc vous cliquez sur le nom de votre base de donnée.
976c7643106a70ab9da9f1b9e808b485.png


II - Organisation de la table

Pour moi c'est boosterzlobby_sql donc vous mettez le nom que vous voulez, moi je vais vous montrez avec 6 colonnes si vous voulez en mettre plus.
fe0b98fe4cfa49ccc6863d44061f414b.png

Donc vous mettez ceci ( sauf si vous ne voulez pas de sa ) :
f4274cd0cd64acf53bcb852b2851c63e.png

( NB : Les commentaires ne sont pas obligatoire )
Donc voila la partie sur internet est faites.

III - Design du logiciel

Donc je vais faire un design très basique mais après je vous laisse faire comme vous voulez vous.
Il faudra donc 3 Forms
- Inscription
Alors le design à faire :
4edef3aade113b726647d4cc06cd4837.png

La textbox de l'utilisateur : tb_user
La textbox du mot de passe : tb_pass
La textbox du mot de passe : tb_mail
Ainsi que un dateTimePicker ou on ne changera pas le nom.
Et le bouton.

- Connexion
Pour la seconde Form, on fait ce design :
9f35038fabefd99b7be144034b6935e4.png

La textbox de l'utilisateur : tb_user
La textbox du mot de passe : tb_pass
Ainsi que le bouton et un linklabel mais eux le nom de change pas.

- Suppression
Lui est très simple on met un seul bouton, que on ne renommera pas.
Ensuite si la Form de votre page de connexion est la Form2 on va changer pour que elle s'ouvre en premier.
Pour faire ceci on va dans Program.cs et on change le Form1 par le nom de la Form de connexion.
c641604e0f2b11aa664535986672b4ab.png


IV - Inscription

Vous devez être inscrit pour voir les médias

Donc vous ajoutez la référence que je vous ai fournis ensuite on la déclare :​
Code:
using MySql.Data.MySqlClient;

Ensuite on va définir les propriétés de notre base de donnée​
Code:
        string sDatabase = "server=;database= ;userid=;password=";

Donc bien entendu vous le remplissez avec vos informations que vous avez mise dans la création de la base de donnée
Ensuite on va mettre le code pour obtenir l'HWID du PC de la personne qui créer le compte comme ceci le compte n'ira que sur un seul PC.​
Code:
        private String HWID()
        {
            string HWID = string.Empty;
            ManagementClass Management = new ManagementClass("win32_processor");
            ManagementObjectCollection MObject = Management.GetInstances();
            foreach (ManagementObject mob in MObject)
            {
                if (string.IsNullOrEmpty(HWID))
                {
                    HWID = mob.GetPropertyValue("processorID").ToString();
                    break;
                }
            }
            return HWID;
        }

Ensuite pour hash le mot de passe
Code:
        private String HashPassword(String Password)
        {
            string _salt = "X(7o1gS!$@b2HL_K(rxh";
            using (var sha = SHA512.Create())
            {
                var computedHash = sha.ComputeHash(Encoding.Unicode.GetBytes(Password + _salt));
                return Convert.ToBase64String(computedHash);
            }

Donc, vous allez avoir des erreurs donc vous devez ajouter System.Management qui est dans les assembly de Visual Studio puis déclarer leurs utilisation​

Code:
using System.Security.Cryptography;
using System.Management;

Ensuite ont met ce code dans le bouton​
Code:
            if (tb_user.Text == "")
            {
                MessageBox.Show("Nom d'utilisateur non renseigné", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (tb_pass.Text == "")
            {
                MessageBox.Show("Mot de passe non renseigné", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (tb_mail.Text == "")
            {
                MessageBox.Show("Adresse mail non renseignée", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (tb_mail.Text.Contains("@"))
                {
                    string Pass = HashPassword(tb_pass.Text);
                    string myConnection = sDatabase;
                    MySqlConnection myConn = new MySqlConnection(myConnection);

                    MySqlCommand SelectCommand = new MySqlCommand("INSERT INTO `Table`(`Utilisateur`, `Password`, `Mail`, `Inscription`, `HWID`) VALUES('" + tb_user.Text + "', '" + Pass + "', '" + tb_mail.Text + "', '" + dateTimePicker1.Text + "', '" + HWID() + "')", myConn);
                    MySqlDataReader myReader;
                    myConn.Open();
                    myReader = SelectCommand.ExecuteReader();

                    new Form1().Show();
                    this.Hide();
                }
                else
                {
                    MessageBox.Show("Adresse mail incorrect", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

Donc il vous faut faire attention à cette ligne​
Code:
                    MySqlCommand SelectCommand = new MySqlCommand("INSERT INTO `Table`(`Utilisateur`, `Password`, `Mail`, `Inscription`, `HWID`) VALUES('" + tb_user.Text + "', '" + Pass + "', '" + tb_mail.Text + "', '" + dateTimePicker1.Text + "', '" + HWID() + "')", myConn);

Si vous n'avez pas mit dans la table comme moi, il vous faudra faire la modification. Mais surtout modifier le nom de la table, moi c'est Table si vous c'est autre chose modifier simplement le mot.

Voila le rendu
2f5ca932d45030b75ca29de5db783628.png


V - Connexion

Vous devez être inscrit pour voir les médias

Donc, maintenant que les utilisateurs peuvent créer leurs comptes il faut que ils puissent se connecter non ?
Alors on va commencé ici aussi par la déclaration des extensions.​

Code:
using System.Management;
using System.Security.Cryptography;
using MySql.Data.MySqlClient;

Alors on fait comme pour l'inscription​
Code:
        string sDatabase = "server=;database= ;userid=;password=";

Puis les deux fonctions​
Code:
        private String HWID()
        {
            string HWID = string.Empty;
            ManagementClass Management = new ManagementClass("win32_processor");
            ManagementObjectCollection MObject = Management.GetInstances();
            foreach (ManagementObject mob in MObject)
            {
                if (string.IsNullOrEmpty(HWID))
                {
                    HWID = mob.GetPropertyValue("processorID").ToString();
                    break;
                }
            }
            return HWID;
        }

Code:
        private String HashPassword(String Password)
        {
            string _salt = "X(7o1gS!$@b2HL_K(rxh";
            using (var sha = SHA512.Create())
            {
                var computedHash = sha.ComputeHash(Encoding.Unicode.GetBytes(Password + _salt));
                return Convert.ToBase64String(computedHash);
            }


Ensuite dans les propriétés de l'application on va ajouter ceci :
5bf71a093389249c7644102436381673.png


Voila, une fois fait on peut mettre le code dans le bouton.​

Code:
WindowsFormsApplication18.Properties.Settings.Default.User = tb_user.Text;
            string Password = HashPassword(tb_pass.Text);
            try
            {
                string myConnection = sDatabase;
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand(" select * from VOTREBDD.VOTRETABLE where Utilisateur='" + this.tb_user.Text + "' and Password='" + Password + "' and HWID='" + HWID() + "' ;", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                int count = 0;
                while (myReader.Read())
                {
                    count = count + 1;
                }
                if (count == 1)
                {
                    new Form3().Show();
                    this.Hide();
                }
                else
                    MessageBox.Show("Connexion refusé");
                myConn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

Ici, il vous faut faire attention à cette ligne​
Code:
                MySqlCommand SelectCommand = new MySqlCommand(" select * from VOTREBDD.VOTRETABLE where Utilisateur='" + this.tb_user.Text + "' and Password='" + Password + "' and HWID='" + HWID() + "' ;", myConn);

Vous devez modifier " VOTREBDD.VOTRETABLE " donc moi cela donne : " boosterzlobby_sql.Table " Comme ma BDD ce nome : boosterzlobby_sql et ma table, Table
Puis ici vous modifier par le nom de votre projet moi c'est WindowsFormsApplication18
Code:
WindowsFormsApplication18.Properties.Settings.Default.User = tb_user.Text;
Voila ensuite dans votre petit linklabel vous mettez​
Code:
            new Form1().Show();
            this.Hide();

VI - Suppression

Vous devez être inscrit pour voir les médias

Donc cette partie sera la plus courte.
Alors on commence comme les autres Form par ajouter l'utilisation de l'extension.​

Code:
using MySql.Data.MySqlClient;

Oui, que elle à mettre ici. Ensuite on met les informations de notre BDD.​

Code:
        string sDatabase = "server=;database= ;userid=;password=";


Puis ensuite, simplement dans le bouton on met​

Code:
string myConnection = sDatabase;
            DialogResult retour = MessageBox.Show("Êtes vous sur de vouloir supprimé votre compte ?", "Dernière chance", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (retour == DialogResult.OK)
            {
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand("DELETE FROM `Table` WHERE Utilisateur = '" + WindowsFormsApplication18.Properties.Settings.Default.User + "'", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                DialogResult retour2 = MessageBox.Show("Compte supprimé !", "Succès", MessageBoxButtons.OK, MessageBoxIcon.Information);
                if (retour2 == DialogResult.OK)
                {
                    new Form1().Show();
                    this.Hide();
                }
            }
            else if (retour == DialogResult.Cancel)
            {
                MessageBox.Show("Compte non supprimé !");
            }

Donc, la pareil il faut faire attention à une phrase qui ne vous dira pas d'erreur.​

Code:
                MySqlCommand SelectCommand = new MySqlCommand("DELETE FROM `Table` WHERE Utilisateur = '" + WindowsFormsApplication18.Properties.Settings.Default.User + "'", myConn);

Il vous faut mettre votre nom de table à la place de " Table " et le nom de votre projet à la place de " WindowsFormsApplication18 "

VII - Conclusion

Donc voila le tutoriel s'achève là.
Donc ceci n'est pas sécuriser car n'importe qui peut décompiler le logiciel pour récupérer les informations de la BDD, donc pour les logiciels payant oublier, privatiser la connexion SQL-PHP, mais pour un logiciel gratuit pourquoi pas.
Si vous avez besoin d'aide ou une question je répondrais de mon possible.
Si vous ne comprenez pas veuillez d'abord regarder la source avant de demander de l'aide.

Merci de votre lecture !
Super tutoriel , bien expliquer .
Merci du partage ;)
 
ManagementObjectCollection MObject = Management.GetInstances(); Erreur sur ca pour moi :(
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut