2016-11-17 1 views
0
 protected void submitLogin(object sender, EventArgs e) 
    { 

     string connStr = ConfigurationManager.ConnectionStrings["tropicalConnectionString"].ConnectionString; 
     string queryString = "select * from tblUserLogin where userId='" + useridtextbox.Text 
      + "' and password ='" + passwordtextbox.Text + "'"; 
     Console.WriteLine(queryString); 
     conn = new OleDbConnection(connStr); 

     conn.Open(); 
     cmd = new OleDbCommand(queryString, conn); 
     reader = cmd.ExecuteReader(); 
     userId = ""; 
     if (reader.HasRows && reader.Read()) 
     { 
      userId = reader.GetString(reader.GetOrdinal("UserId")); 
     } 
     if (reader.HasRows) 
     { 
      Session["uid"] = userId; 
      Response.BufferOutput = true; 
      Response.Redirect("/UI/Products.aspx", false); 
      bool ck = remembercheckbox.Checked; 


      if (ck) 
      { 

       Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(7); 
       Response.Cookies["UserName"].Value = useridtextbox.Text.Trim(); 
      } 
      else 
      { 
       HttpCookie myCookie = new HttpCookie("UserSettings"); 
       Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(-1); 
       Response.Cookies.Add(myCookie); 
      } 
     } 
     else 
     { 
      passwordtextbox.Text = "invalid user"; 
     } 

Вот отрывок из моей страницы содержимого входаasp.net checkbox.checked оценка после снимите флажок

    <div class="login"> 
        <asp:CheckBox ID="remembercheckbox" TextAlign="left" runat="server" text="Remember my Id" checked="false" OnCheckedChanged="clickCkbx" /> 
        <asp:Button ID="loginButton" CssClass="loginButton" runat="server" text="Login" OnClick="submitLogin" /> 
       </div> 

Я пытаюсь реализовать функцию ID пользователя запомнить и практиковать его с куки. Проблема заключается в том, что, когда я сниму флажок для «remembercheckbox», значение в памяти memcheckbox.Checked вернет true, и поэтому я не могу войти в инструкцию else и уничтожить cookie.

Заранее благодарен!

+0

начать использовать параметризованные запросы. Ваш код открыт для SQL-инъекций! – VDWWD

+0

@VDWWD спасибо за совет! Я это узнаю! –

ответ

0

Просто решите проблему. У меня это было как на page_load. и когда кнопка была нажата, потому что механизм обратной передачи, страница была перезагружена и вызывается страница_Load, и, таким образом, memorycheckbox.Checked снова был установлен в true.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.Cookies["UserName"] != null) 
     { 

      remembercheckbox.Checked = true; 
      useridtextbox.Text = Request.Cookies["UserName"].Value; 

     } 
     chk = remembercheckbox.Checked; 
    } 

решить эту проблему путем проверки Page.IsPostBack!, А затем назначить куки

Смежные вопросы