2016-02-26 73 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