Имя пользователя и пароль не чувствительны к регистру - PullRequest
1 голос
/ 27 апреля 2019

Я знаю, что я не храню свои пароли в хэше, но для целей этой базы данных это не имеет значения.

Код ссылается на базу данных SQL, в которой пароли хранятся в виде простого текста

Вот код:

/*Checks to see if the username and password matcch the database
         If it does, it lets you in, if not you displays an error message*/
        string user = textBox1.Text.ToString();
        string pass = textBox2.Text;
        MySqlConnection conn = new MySqlConnection(ConnectionString);
        MySqlDataAdapter sda = new MySqlDataAdapter("SELECT COUNT(*) from Employees WHERE UserName = '"+(user)+ "' and Password = '"+(pass)+"' collate Latin1_Genral_CS_AS", conn);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        if(dt.Rows[0][0].ToString() == "1")
        {
            HomeScreen home = new HomeScreen();
            this.Hide();
            home.ShowDialog();
        }
        else
        {
            MessageBox.Show("Incorrect Username or Password", "alter", MessageBoxButtons.OK, MessageBoxIcon.Error );
        }            

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Можно преобразовать как входные значения, так и столбцы таблицы в lowercase или uppercase:

/*Checks to see if the username and password matcch the database
         If it does, it lets you in, if not you displays an error message*/
        string user = textBox1.Text.ToLower();
        string pass = textBox2.Text.ToLower();
        MySqlConnection conn = new MySqlConnection(ConnectionString);
        MySqlDataAdapter sda = new MySqlDataAdapter("SELECT COUNT(*) from Employees WHERE LOWER(UserName) = '"+(user)+ "' and LOWER(Password) = '"+(pass)+"' collate Latin1_Genral_CS_AS", conn);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        if(dt.Rows[0][0].ToString() == "1")
        {
            HomeScreen home = new HomeScreen();
            this.Hide();
            home.ShowDialog();
        }
        else
        {
            MessageBox.Show("Incorrect Username or Password", "alter", MessageBoxButtons.OK, MessageBoxIcon.Error );
        }   
0 голосов
/ 27 апреля 2019

Вы можете alter ваш database, чтобы использовать collation, который вы хотите:

ALTER DATABASE DBNAME CHARACTER SET utf8 COLLATE utf8_general_ci;

Однако это будет применяться только к новым таблицам. Вы можете alter a table column использовать collation по вашему выбору:

ALTER TABLE table_name MODIFY column_name column_datatype COLLATE utf8_bin;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...