1

次のようなサンプルフォームがあります。

画像

dbconnectselect メソッドでクラスを作成しました。次のようになります。

public List<string>[] Select(string username, string password)
{
    string query = "SELECT * FROM ms_user where username = '" + username + 
        "' and password = '" + password + "'";

    //Create a list to store the result
    List<string>[] list = new List<string>[2];
    list[0] = new List<string>();
    list[1] = new List<string>();           

    //Open connection
    if (this.OpenConnection() == true)
    {
        //Create Command
        MySqlCommand cmd = new MySqlCommand(query, connection);
        //Create a data reader and Execute the command
        MySqlDataReader dataReader = cmd.ExecuteReader();

        //Read the data and store them in the list
        while (dataReader.Read())
        {
            list[0].Add(dataReader["username"] + "");
            list[1].Add(dataReader["password"] + "");                    
        }

        //close Data Reader
        dataReader.Close();

        //close Connection
        this.CloseConnection();

        //return list to be displayed
        return list;
    }
    else
    {
        return list;
    }
}

この方法でログインするにはどうすればよいですか? メソッドはリストを返しているため、データベースに値が存在するかどうtrueかを確認するかどうかを確認します。false

4

4 に答える 4

1
Boolean loginSuccessful = Select(username, password).Count > 0;

ただし、パスワードをデータベースに保存する方法 (たとえば、これ) と SQL インジェクション (たとえば、これ) に関するリソースを調べてください。

于 2013-03-14T08:24:59.183 に答える
0

ユーザー アカウントが見つかって一致するたびに増加する変数をリーダー内に追加します。

    x int = 0;
    if (this.OpenConnection() == true)
    {
        //Create Command
        MySqlCommand cmd = new MySqlCommand(query, connection);
        //Create a data reader and Execute the command
        MySqlDataReader dataReader = cmd.ExecuteReader();

        //Read the data and store them in the list
        while (dataReader.Read())
        {
            list[0].Add(dataReader["username"] + "");
            list[1].Add(dataReader["password"] + ""); 
            x++;
        }

        //close Data Reader
        dataReader.Close();

        //close Connection
        this.CloseConnection();

        //return list to be displayed
        return x;
    }

次に、x > 0 かどうかをチェックするアプリケーション内の制御構造を使用します。そうであれば、ユーザーをログインします。

于 2013-03-14T08:22:53.643 に答える
0

うわー、クエリと sql インジェクションを構築する方法を学ぶ必要があるようです。

また、パスワード、ハッシュ、暗号化、ソルト。

次に例外。

次に、型付き言語に適合しない (+ "") を削除し、ほとんどの形式が不適切です。

次に == true テストはスタイルが悪く、冗長です。

于 2013-03-14T08:24:15.540 に答える