Проверьте информацию для входа на веб-странице - PullRequest
0 голосов
/ 18 октября 2011

В aspx.net есть страница входа, в которой пользователю предлагается ввести свое имя пользователя и уровень авторизации.

Мой вопрос: как только они это сделают, я должен прочитать их и проверить, что они ввели из базы данных sql со всеми возможными именами пользователей и авторизациями.Проблема в том, что страница входа в систему находится в aspx.net, а код для проверки информации для входа - в обычный файл .cs.

Если кто-то может просмотреть мой код и сказать мне, что я делаю неправильно, и, возможно, дать мне лучший код или исправить то, что у меня есть, это было бы здорово!

И извините за ошибки и путаницу, я новичок в кодировании!

Вот что у меня есть:

public bool getCredentials(string UserName, string Authlvl)
    {

        bool valid = false;

        string loginSQL = "SELECT COUNT FROM user_verification WHERE userID = '" + UserName + "' AND auth_lvl = '" + Authlvl + "'";

        SqlCommand cmd = new SqlCommand(loginSQL, dB.Connect());

        try
        {
            int rowCount = Convert.ToInt32(cmd.ExecuteScalar());
            if (rowCount >= 1)
            {
                valid = true;
            }

            else if (rowCount <= 0)
            {
                valid = false;
            }
        }

        catch
        {
        }

        return valid;
    }

    public void getInfo(string _Username, string Authlvl)
    {
        string selectAllSql = "Select auth_lvl FROM user_verification WHERE userID = '" + UserName + "'AND auth_lvl = '" + Authlvl
             + "'";
        SqlCommand cmd = new SqlCommand(selectAllSql, dB.Connect());
        Authlvl = "";

        SqlDataReader reader;

        try
        {
            reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                UserName.Text = reader["username"].ToString();
                Authlvl.Text = reader["auth_lvl"].ToString();
            }
        }
        catch (Exception ex)
        {
            throw (new Exception("" + ex));
        }
    }

        private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'import_logDataSet.DB_tables' table. You can move, or remove it, as needed.
        this.dB_tablesTableAdapter.Fill(this.import_logDataSet.DB_tables);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        save.ShowDialog();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        //Clears all text in text box
         ID.Clear();
    }

    private void button4_Click(object sender, EventArgs e)
    {

        string str = @"";
        Process process = new Process();
        process.StartInfo.FileName = str;
        process.Start(); 
    }

    private void ID_KeyPress(object sender, KeyPressEventArgs e)
    {
        char ch = e.KeyChar;
        if (!Char.IsDigit(ch) && ch != 8 && ch != 13 && e.KeyChar < 65 || e.KeyChar > 122)
        {
            e.Handled = true;
        }

        StreamWriter sw = new StreamWriter("ExporterOutput.txt");
        sw.WriteLine(ID.Text);
        sw.Close();
    }
    private void OutputBox_TextChanged(object sender, EventArgs e)
    {
        MessageBox.Show("Here is the information you input: ");
        StreamWriter sw = new StreamWriter("ExporterOutput.txt");
        sw.WriteLine(ID.Text, UserName.Text, Authlvl.Text, comboBox1.Text, comboBox2.Text, FolderDrop.Text);
        sw.Close();
    }

    private void Help_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        System.Diagnostics.Process.Start("http://www.google.com");
        Help.LinkVisited = true;
    }

    private void save_FileOk(object sender, CancelEventArgs e)
    {

    }
}

}

Ответы [ 2 ]

0 голосов
/ 18 октября 2011

Предполагая, что UserID является числовым полем, UserID = UserName не будет работать.

EDIT

Я думаю, что проблема в вашем утверждении. COUNT является функцией и требует аргумента. Попробуйте что-то вроде этого:

SELECT COUNT(*) FROM user_verification [rest of your query]
0 голосов
/ 18 октября 2011
  1. Ваш сайт подвергается серьезной опасности взлома . У вас есть уязвимость SQL-инъекций в вашем коде. Вы должны решить это, прежде чем делать что-либо еще. http://msdn.microsoft.com/en-us/library/ms161953.aspx
  2. Это asp.net, а не aspx.net

Мне неясно, в чем заключается ваш вопрос. Вы пытаетесь получить доступ к информации, которая находится на вашей странице aspx из вашего кода позади? Если это так, вам просто нужно сослаться на текстовое поле в вашем коде:

ASPX:

<asp:TextBox ID="tb_User" runat="server" />

aspx.cs:

string user = tb_User.Text;

Из того, что я могу сказать, вы не звоните getCredentials или getInfo где-либо в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...