iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 28
0
Modern Web

ASP.NET MVC網頁程式介紹系列 第 28

[Day 28] 用ASP.NET MVC 做簡單的註冊及登入系統(四)

今天來講登入的部分,
首先這是昨天的登入頁
https://ithelp.ithome.com.tw/upload/images/20180106/20105694TSKh2Zbcg1.jpg

假如登入失敗的畫面
https://ithelp.ithome.com.tw/upload/images/20180106/201056940LY7zymLXe.jpg

重新輸入資料
https://ithelp.ithome.com.tw/upload/images/20180106/201056940Ybf0E830P.jpg

假如登入成功的畫面(因為只有文字而已,就不截圖了)
登入成功

這是登入的前端頁面

@{
    ViewBag.Title = "Login";
    Layout = null;
}

@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")

<form style="margin-left:10px;" method="post" action="">
    <h1>請輸入帳號及密碼</h1>
    <div>
        <span style="color:red">@ViewBag.Msg</span>
    </div>
    <div class="form-group">
        <label for="exampleInputEmail1">帳號</label>
        <input type="text" class="form-control" id="Account" name="account" placeholder="輸入帳號" value="">
        <small id="emailHelp" class="form-text text-muted">請輸入英數字</small>
    </div>
    <div class="form-group">
        <label for="exampleInputPassword1">密碼</label>
        <input type="password" class="form-control" id="Password1" name="password" placeholder="輸入密碼" value="">
    </div>
    <button type="submit" class="btn btn-primary">登入</button>
    <button type="button" class="btn btn-warning" onclick="register()">註冊</button>
</form>

<script>
    function register()
    {
        location.href = "/Home/Index";
    }
</script>

這是登入的驗證方式

        [HttpPost]
        public ActionResult Login(FormCollection post)
        {
            string account = post["account"];
            string password = post["password"];

            //驗證密碼
            if(db.CheckUserData(account, password))
            {
                Response.Redirect("~/Home/Home");
                return new EmptyResult();
            }
            else
            {
                ViewBag.Msg = "登入失敗...";
                return View();
            }
        }

如果登入失敗,留在原頁面,成功則轉到另外一個頁面

這是登入的驗證函式

        public bool CheckUserData(string account, string password)
        {
            try
            {
                Connect();
                string strSQL = "SELECT 1 FROM `userdata` WHERE `account` = '" + account + "' AND `password` = '" + password + "';";
                MySqlCommand cmd = new MySqlCommand(strSQL, conn);

                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                        return true;
                }
                return false;
            }
            catch(Exception ex)
            {
                string error = ex.ToString();
                return false;
            }
            finally
            {
                Disconnect();
            }
        }

但是這個程式有兩個問題,
1.SQL Injection
2.如果不經過登入頁,也可以直接到 登入成功 畫面

這就是最後兩天要介紹的部分
欲知後事如何,請待下回分解~

--
小弟不才,
如果有謬誤或是要補充的,
都歡迎一起來討論!


上一篇
[Day 27] 用ASP.NET MVC 做簡單的註冊及登入系統(三)
下一篇
[Day 29] 用ASP.NET MVC 做簡單的註冊及登入系統(五) - SQL Injection
系列文
ASP.NET MVC網頁程式介紹30

尚未有邦友留言

立即登入留言