使用PhpMyAdmin验证登录

时间:2013-03-14 08:17:45

标签: c# mysql login phpmyadmin

我有一个这样的示例表单:

image

我用select方法创建了dbconnect类,它是这样的:

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;
    }
}

如何使用此方法登录?由于该方法返回一个列表而不是truefalse来检查数据库中是否存在该值。

4 个答案:

答案 0 :(得分:1)

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

但请查看有关如何在数据库中存储密码的资源(例如,this one)和SQL注入(例如,this one)。

答案 1 :(得分: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&gt; 0.如果是,请登录用户。

答案 2 :(得分:0)

哇,看起来你需要学习构建查询和SQL注入。

还有密码,哈希,加密和盐。

然后例外。

然后删除不适合输入语言的(+“”),并且大多数情况下表现不佳。

然后==真正的测试是坏的风格,多余。

答案 3 :(得分:0)

我认为不是直接回答你的问题(因为它是微不足道的 - 如果没有找到用户,你只返回null而不是List),你最好把更多的资源用于更多阅读材料。

如果您阅读一些关于SQL注入的内容,我认为您会特别受益: http://www.unixwiz.net/techtips/sql-injection.html

之后阅读以下教程 - 它非常好: http://zetcode.com/db/mysqlcsharptutorial/

最后,我建议至少在获得一些经验之前,在将值传递到SQL时,始终坚持使用MySqlParameter。在StackOverflow上查看这些问题 - &gt; Parameterized Query for MySQL with C#