none
ASP 會員登入 RRS feed

  • 問題

  • using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; //自己寫的宣告 using System.Web.Configuration; using System.Data; using System.Data.SqlClient; namespace RecommendSystem.Account { public partial class Login : System.Web.UI.Page { protected void Button2_Click(object sender, EventArgs e) { string consql = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; SqlConnection Conn = new SqlConnection(consql); Conn.Open(); string cmdstr = "select count(*)from members where user= '" + TextBox2.Text + "'"; SqlCommand checkuser = new SqlCommand(cmdstr, Conn); int temp = Convert.ToInt32(checkuser.ExecuteScalar().ToString()); if (temp == 1) { string cmdstr2 = "select Password from members where user='" + TextBox2.Text + "'"; SqlCommand pass = new SqlCommand(cmdstr2, Conn); string password = pass.ExecuteScalar().ToString(); Conn.Close(); if (password == TextBox3.Text) { Session["New"] = TextBox2.Text; Response.Redirect("~/Account/Secure.aspx"); } else { Label1.Visible = true; Label1.Text = "Invalid password...!!"; } Label1.Visible = true; Label1.Text = "Invalid username...!!"; } } } }

    各位大大以上這是我的LOGIN.aspx

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace RecommendSystem.Account
    {
        public partial class Secure : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (Session["New"] != null)
                {
                    Label1.Text += Session["New"].ToString();
    
                }
                else
                {
                    Response.Redirect("~/Account/Login.aspx");
                }
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Session["New"] = null;
                Response.Redirect("~/Account/Login.aspx");
            }
        }
    }

    以上是我的Secure.aspx

    執行上是沒有出錯的,但是當打入正確的帳號密碼卻無反應
    無法正確登入連結到Secure.aspx
    請問個位大大我這樣寫登入的方式,有出錯嗎><



    2012年11月27日 下午 05:16

解答

  • 給你幾個建議:

    1. ASP 和 ASP.NET 不一樣; 最好寫清楚
    2. ASP.NET 提供了一個內建的登入機制; 如果你目前只是想要學習 ASP.NET, 可以考慮從這個內建的登入機制開始學起
    3. 你的程式寫法基本上是 ASP 的寫法, 而且充滿了安全性漏洞, 就算它能跑, 也可以使用最簡單的 SQL Injection 方式破解; 你真的需要在這方面加強一下。在本論壇中搜尋一下 "SQL Injection", 可以找到很多以前的討論, 我就不一一列舉
    4. 看樣子你也使用 Visual Studio; 它提供了很多除錯的工具, 光是設定中斷點這個小技巧, 你就足以看出你的程式問題出在哪裡。例如, 你可以看看傳進程式的 Textbox2 的值是否確實是你輸入的值、組成的 SQL 指令是否正確、Session 的值是否符合你的預期等等


    • 已提議為解答 KKBruceMVP 2012年11月28日 上午 01:28
    • 已標示為解答 阿尼Moderator 2012年12月1日 上午 10:47
    2012年11月27日 下午 06:04
  • 1.請注意SQL Injection 問題,若不知什麼是SQL Injection,請參考這個討論區的置頂文章

    2.檢查您的資料庫裡,是否真的有符合您輸入的帳號資料

    3.邏輯有點奇怪,查詢只需一次就可以,不用先判斷有沒有資料,再重覆查一次,直接跑您目前的第二個查詢,然後用datareader判斷就可以,另外應該直接把密碼也當成條件帶進去SQL查詢,帳號/密碼都符合,才寫session



    軟體開發領域裡區區一個迷途工程師
    MyBlog: http://www.dotblogs.com.tw/ian/
    開發ASP.NET您要瞭解的基楚

    2012年11月28日 上午 01:29
    版主

所有回覆

  • 給你幾個建議:

    1. ASP 和 ASP.NET 不一樣; 最好寫清楚
    2. ASP.NET 提供了一個內建的登入機制; 如果你目前只是想要學習 ASP.NET, 可以考慮從這個內建的登入機制開始學起
    3. 你的程式寫法基本上是 ASP 的寫法, 而且充滿了安全性漏洞, 就算它能跑, 也可以使用最簡單的 SQL Injection 方式破解; 你真的需要在這方面加強一下。在本論壇中搜尋一下 "SQL Injection", 可以找到很多以前的討論, 我就不一一列舉
    4. 看樣子你也使用 Visual Studio; 它提供了很多除錯的工具, 光是設定中斷點這個小技巧, 你就足以看出你的程式問題出在哪裡。例如, 你可以看看傳進程式的 Textbox2 的值是否確實是你輸入的值、組成的 SQL 指令是否正確、Session 的值是否符合你的預期等等


    • 已提議為解答 KKBruceMVP 2012年11月28日 上午 01:28
    • 已標示為解答 阿尼Moderator 2012年12月1日 上午 10:47
    2012年11月27日 下午 06:04
  • 1.請注意SQL Injection 問題,若不知什麼是SQL Injection,請參考這個討論區的置頂文章

    2.檢查您的資料庫裡,是否真的有符合您輸入的帳號資料

    3.邏輯有點奇怪,查詢只需一次就可以,不用先判斷有沒有資料,再重覆查一次,直接跑您目前的第二個查詢,然後用datareader判斷就可以,另外應該直接把密碼也當成條件帶進去SQL查詢,帳號/密碼都符合,才寫session



    軟體開發領域裡區區一個迷途工程師
    MyBlog: http://www.dotblogs.com.tw/ian/
    開發ASP.NET您要瞭解的基楚

    2012年11月28日 上午 01:29
    版主