2011-10-18 20 views
0

aspx.netにログインページがあり、ユーザーにユーザー名と許可レベルを入力するように求められます。Webページからログイン情報を確認してください

私の質問は一度それを読んで、可能なすべてのユーザー名と権限で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は機能しません。

EDITは、私はこの問題は、SELECT文であると思います。 COUNTは関数であり、引数が必要です。代わりに次のようなものを試してください:

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

UserIDは英数字です。 – compucrazy

+0

編集された回答を参照してください。 –

+0

ありがとうございます!します! – compucrazy

0
  1. あなたのウェブサイトはをハッキングされているの重大な危険です。コードにSQLインジェクションの脆弱性があります。あなたは他のことをする前にそれを解決すべきです。 http://msdn.microsoft.com/en-us/library/ms161953.aspx
  2. それは、私はあなたが質問かについては不明だ

をaspx.netないasp.netです。あなたのコードからあなたのaspxページにある情報にアクセスするつもりですか?

ASPX:

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

aspx.cs:もしそうなら、あなただけの後ろにあなたのコードでテキストボックスを参照する必要があり、私はあなたがgetCredentialsを呼び出したりしていない伝えることができるものから、

string user = tb_User.Text; 

あなたのコードのどこにでもgetInfo

+0

はい私はasp.netには全くいません。私はC#でコンソールアプリケーションを作った。申し訳ありませんが、私はこれに新しいですので、私はすべての条件についてはわかりませんが、私は情報を得ることができましたが、私は間違って書いた(とあなたが確認した)と思う。助言がありますか? – compucrazy

+0

'getCredentials'と' getInfo'を呼び出す必要があります。今は定義されていますが、実行されることはありません。あなたが呼び出す場所は、あなたが何をしようとしているかによって異なります。 –

+0

私はそれらを関数で呼びますか? – compucrazy

関連する問題