2016-02-26 119 views
1

我對ASP.net非常陌生,並且一直在使用一些視頻教程來構建登錄頁面。我成功地創建了我的註冊頁面,可以在數據庫中將詳細信息輸入到我的表格中,但是我無法登錄頁面進行工作= /。我一直在這裏工作了幾個小時,不確定是否有人可以幫助,但它值得一試。我正在使用的IDE是visual studio(最新版本)。不正確的語法ASP.NET

我收到以下錯誤(點擊圖片會給仔細查看,但你可能已經知道了):這取決於誰我嘗試登錄,例如上述 enter image description here

誤差變化嘗試以john身份登錄時返回錯誤,下面的錯誤返回,試圖以管理員身份登錄。

enter image description here

如下圖所示

是按鈕,在日誌後面用我的代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

} 

protected void Button2_Click(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString); 
    conn.Open(); 
    string checkuser = "select count(*) from [Table] where [Login]'" + Loginbox.Text + "'"; 
    SqlCommand com = new SqlCommand(checkuser, conn); 
    int temp = Convert.ToInt32(com.ExecuteScalar().ToString()); 
    conn.Close(); 
    if (temp == 1) 
    { 
     conn.Open(); 
     string CheckPasswordQuery = "select Password from [Table] where [Login]='" + Loginbox.Text + "'"; 
     SqlCommand Passcom = new SqlCommand(CheckPasswordQuery, conn); 
     string password = Passcom.ExecuteScalar().ToString().Replace(" ",""); 

     if (password == Passwordbox.Text) 
     { 
      Session["New"] = Passwordbox.Text; 
      Response.Write("Password is correct"); 


     } 
     else 
     { 
      Response.Write("Wrong password"); 

     } 
    } 
    else { 

     Response.Write("User name does not exist"); 


    } 
    } 


} 

下面顯示的是表單頁面視圖,它運行完全正常,被返回的錯誤當登錄按鈕被按下。

enter image description here

下面顯示的是表的定義:

enter image description here

而且下面顯示的是包含在表中的數據:

enter image description here

謝謝大家的時間和我感謝您的任何輸入你必須幫助s這個。

+2

強制性[SQL注入實際上是更安全](https://www.owasp.org/index.php/SQL_Injection)警告。使用參數化查詢(您也可能會看到您的錯誤)。 –

+1

只是可以確認其他人說什麼,這是驗證登錄最不安全的方法之一;-)看看這裏https://www.youtube.com/watch?v=8ZtInClXe1Q –

+0

哦,是的,我收集它是非常不安全的,我很抱歉,這是我的第一頁,我只是想學習基礎知識,它不會被用於任何承諾。如果這是你們可以利用它的一些樂趣。 – ceefax12

回答

4

您的查詢語法無效。請注意,雖然許多教程可能會顯示您這樣查詢,但它非常不安全。你應該使用參數。然而,對於這個答案的緣故,你忘了等號:

string checkuser = "select count(*) from [Table] where [Login] = '" + Loginbox.Text + "'"; 
+1

請顯示如何使用sql參數化,因爲其他人可能會涉及到並使用這種類型的注入。 – abc123

+0

另一個答案已經顯示了這一點,這是一個更安全的賭注。 – Nikki9696

+0

Omg我怎麼可能錯過了:(我一直盯着這個小時,很抱歉,但非常感謝你。是的,我收集這將是非常不安全的,我有很多要學習,這是我的第一個登錄頁面,所以我不知道我在做什麼,它只是試驗我向你保證,它將不會妥善託管。 – ceefax12

3

你的語法不正確,但如果你參數,以避免SQL注入

string checkuser = "select count(*) from [Table] where [Login] = @user"; 
SqlCommand com = new SqlCommand(checkuser, conn); 
com.Parameters.Add("@user", Loginbox.Text); 
... 
+0

謝謝:),完成後我會嘗試以這種方式實現它我現在只想嘗試一個工作頁面:)但我知道這是非常不安全的,但我不會將它用於任何事情不用擔心這只是爲了試驗。 – ceefax12