2011-10-18 20 views
0

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) 
    { 

    } 
} 

}

+3

SQL注入 - Noooo! – Yuck

+0

請發佈你看到的任何錯誤。另外,ASPX文件對於幫助診斷它和代碼隱藏頁面之間是否存在問題很有用。 –

+0

好吧,我有研究它,我發現很多東西都說要使用isPostBack屬性從.net文件讀取。我只想讀取我的文件上的登錄信息,然後檢查它是否在sql數據庫上。 – compucrazy

回答

0

假設UserID是一個數字字段,UserID = UserName將不起作用。

編輯

我認爲這個問題是與你的SELECT語句。 COUNT是一個函數,需要一個參數。嘗試這樣的代替:

SELECT COUNT(*) FROM user_verification [rest of your query] 
+0

用戶標識是字母數字。 – compucrazy

+0

查看編輯答案。 –

+0

謝謝!我會! – compucrazy

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

從我可以告訴你是不是叫getCredentialsgetInfo您的代碼中的任何地方。

+0

是的我根本不在asp.net中,我在c#中創建了一個控制檯應用程序。對不起,這一切都讓我感到困惑,因爲我對這個問題很陌生,所以我不確定所有的條款,但是我只能如何獲得這些信息,但我認爲(而且你已經證實)我錯誤地寫了這些信息。有什麼建議麼? – compucrazy

+0

您需要調用getCredentials和getInfo。現在你有他們定義,但他們從來沒有運行。你打電話給他們的地方取決於你想要做什麼。 –

+0

我把它們稱爲函數? – compucrazy