2009-06-28 9 views
0

私はasp.net 3.5とSQL Server 2005を使用してログインをしようと、私はデータセットを作成し、このコード を行うが、何かがここにコードにコードログインと構文エラー

Protected Sub btnlogin_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnlogin.Click 

    Dim LoginTable As New ClassSet.UsersDataTable 
    Dim LoginAdapter As New ClassSetTableAdapters.UsersTableAdapter 

    LoginAdapter.FillBylogin(LoginTable, txtuser.Text, txtpass.Text) 

    Dim dr As DataRow() = LoginTable.Select("Name= ' " & txtuser.Text & " 'Password= ' " & txtpass.Text & " '") 

    If dr.Length > 0 Then 
     Response.Redirect("MyClassifieds.aspx") 
    Else 
     Label1.Text = "Invalid UserName or Password" 
    End If 

End Sub 

が不足していることは言いますそこにパスワードの後に​​逃した何か=」であることを「5行目で& txtpass.Textは、しかし、私は逃したものを得るカントすることができますいずれか助けてください

+0

エラーメッセージの正確な表現は何ですか? –

+0

Dim dr As DataRow()...を開始する行を削除し、変更する場合はdr.Length> 0にします。LoginTable.Rows.Length> 0 – cjk

答えて

2

あなたが欠落している 『AND』名とパスワードの間の文

Dim dr As DataRow() = LoginTable.Select("Name= '" & txtuser.Text & "' AND Password= '" & txtpass.Text & "'") 
を10
2

あなたが行方不明だと

のDataRow()= LoginTable.Selectとして

薄暗いDR( "名前= '" & txtuser.Text & " 'ANDパスワード='" & txtpass.Text & "'")

また、そこにスペースが必要なのか疑問です。

しかし、ここでもSQLインジェクションに問題があります。真剣にこのような動的SQLを構築したくない場合は、MUSTparameteriseすべてのクエリ。

+0

これはローカルデータテーブルで実行される選択です - したがって、SQLインジェクションはありそうもありません何をするにも。 – cjk

+0

SQLインジェクションは挿入だけではなく、いつでもtrueを返すように簡単にクエリを取得できるため、任意のユーザーとしてログインすることができます。 – blowdart

-1

データアダプタを介してユーザー名とパスワードを使用してログインテーブルを入力したときに、そのユーザー名とパスワードを確認する理由は何ですか?確かにあなたはその長さを確認することができます。また、ログインシステムにセキュリティがある場合は、パスワードはプレーンテキストで保存されないため、アダプタの埋め込みメソッドでは、正しいパスワードを見つけてデータテーブルを返すようなハッシュを行う必要があります。