iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
Modern Web

從零開始使用Microsoft MVC架構來搭建web server系列 第 27

DAY 27 實作案例_忘記密碼程式詳解_Controller

  • 分享至 

  • xImage
  •  

Controller
開啟view的基本語法

 public ActionResult Forget()
 {
     return View();
 }
 public ActionResult Changepwd()
 {
     return View();
 }

DoForget
1.先與資料庫連線,使用者密碼要改成自己得使用者密碼
2."select * from Login where Account=@Account"是查詢資料庫是否有這組帳號
3.cmd.Parameters.AddWithValue("@Account", Account);填入參數,為使用者輸入的帳號
4.if條件式,如果有這組帳號,則將Account傳送到Changepwd頁面並跳轉到該頁面,否則傳送警示訊息並重新刷新頁面。

public ActionResult DoForget( string Account)
{
//連接資料庫
   string connstr = "Data Source=CSIE-TEST2;Initial Catalog=Student_data;User ID=TEST03;Password=1qaz@WSX;Encrypt=False";
   SqlConnection conn = new SqlConnection(connstr);
   conn.Open();
   //查詢資料庫是否有這個帳號
   SqlCommand cmd = new SqlCommand("select * from Login where Account=@Account");
   cmd.Parameters.AddWithValue("@Account", Account);
   cmd.Connection = conn;
   SqlDataAdapter adpt = new SqlDataAdapter();
   DataSet ds = new DataSet();
   adpt.SelectCommand = cmd;
   adpt.Fill(ds);
   
   if (ds.Tables[0].Rows.Count > 0)
   {
   //如果有就跳轉到修改密碼頁面並把帳號也傳送過去
       TempData["Account"] = Account;
       return RedirectToAction("Changepwd");
   }
   else
   {
   //如果沒有就刷新頁面並顯示以下錯誤訊息
       TempData["Errmsg"] = "帳號不存在";
       return RedirectToAction("Forget");
   }
}

Dochange

  1. if (changepwd.newpassword != changepwd.checkpassword)檢查新密碼與確認密碼是否一致
  2. 由於直接刷新頁面的話Account的參數就會變成空的,因此TempData["Account"] = changepwd.Account;就是在刷新頁面時可以再傳送一次Account
  3. 如果都正確的話就會進入資料庫去修改使用者密碼,update Login set Password=@Password where Account=@Account"在這句語法當中update就是要修改資料的語法,密碼改為使用者輸入的密碼
  4. where Account=@Account語法當中一定要設定條件,不然整張資料表的密碼都會全部變成一樣的
  5. 輸入參數->執行語句
 public ActionResult Dochange(changepwd changepwd)
 {
 //確認新密碼與確認密碼是否一致
     if (changepwd.newpassword != changepwd.checkpassword)
     {
       //如果不一致則重新刷新頁面並顯示以下錯誤資訊
         TempData["Account"] = changepwd.Account;
         TempData["Errmsg"] = "密碼不一致";
         return RedirectToAction("Changepwd");
     }
     //連接資料庫
     string connstr = "Data Source=CSIE-TEST2;Initial Catalog=Student_data;User ID=TEST03;Password=1qaz@WSX;Encrypt=False";
     SqlConnection conn = new SqlConnection(connstr);
     conn.Open();
     //更新密碼的sql語法
     SqlCommand cmd = new SqlCommand("update Login set Password=@Password where Account=@Account");
     cmd.Connection = conn;
    //填入參數
     cmd.Parameters.AddWithValue("@Password", changepwd.newpassword);
     cmd.Parameters.AddWithValue("@Account",changepwd.Account);
     //執行語句
     cmd.ExecuteNonQuery();
//如果成功的話就跳轉到登入頁面
     return RedirectToAction("login");
 }

上一篇
DAY 26 實作案例_忘記密碼程式詳解_View
下一篇
DAY 28 實作案例_忘記密碼_功能測試
系列文
從零開始使用Microsoft MVC架構來搭建web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言