Как я могу удалить эту ошибку"
я получаю эту ошибку в своем proj..тот же оператор обновления успешно работает на других страницах, но плохо себя ведет на этой странице.Заранее благодарю за ответ.
Syntax error in UPDATE statement. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at fyp_template.Changepassword.btnsubmitpassword_Click(Object sender, EventArgs e) in C:\Users\anam\Documents\Visual Studio 2015\Projects\FYP\fyp_template\fyp_template\Changepassword.aspx.cs:line 57"
Мой код выглядит следующим образом
ne 57
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.OleDb; namespace fyp_template { public partial class Changepassword : System.Web.UI.Page { OleDbConnection mconn = new OleDbConnection(); OleDbCommand cmd = new OleDbCommand(); protected void Page_Load(object sender, EventArgs e) { lblusername.Text = Session["Name"].ToString(); if (Session["ID"] == null) { Label3.Text = "User"; } else { Label3.Text = Session["Name"].ToString(); } try { // mconn.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\abc.accdb"; mconn.Open(); } catch (Exception ex) { Response.Write("Error is " + ex); } finally { mconn.Close(); } } protected void btnsubmitpassword_Click(object sender, EventArgs e) { if (Session["ID"] == null) { string log1 = "Login first to change the password"; ClientScript.RegisterStartupScript(this.GetType(), "Incorrect Password", "alert('" + log1 + "');", true); Response.Redirect("~/Login.aspx"); } else { if (txtnewpassword.Text == "") { lblerrormessage.Text = "Enter New Password"; } else { try { int id = Convert.ToInt32(Session["ID"]); mconn.Open(); string squery = "update users set Password="+ txtnewpassword.Text + " where userId=" + id; cmd = new OleDbCommand(squery, mconn); cmd.ExecuteNonQuery(); mconn.Close(); string log1 = "Password updated successfully"; ClientScript.RegisterStartupScript(this.GetType(), " Password updated", "alert('" + log1 + "');", true); } catch (Exception ex) { Response.Write(ex); } finally { mconn.Close(); } } } } protected void LinkButton1_Click(object sender, EventArgs e) { Response.Redirect("My_Account.aspx"); } protected void btnresetpassword_Click(object sender, EventArgs e) { txtnewpassword.Text = ""; } } }
Что я уже пробовал:
я успешно выполнил тот же запрос на других страницах.
Richard Deeming
НИКОГДА храните пароли в виде обычного текста.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
Member 13680033
я просто принимаю ввод в текстовое поле, но он находится в режиме пароля
Richard Deeming
Неуместный. Вы все еще храните пароли в базе данных в виде обычного текста. Если вы подключитесь к своей базе данных и запустите SELECT * FROM users
, вы увидите пароль для всех ваших пользователей.
Прочитать статью. Понять проблему. Затем обновите свой код так, чтобы он хранил только соленый хэш паролей пользователей.
Richard Deeming
И почему вы заново изобретаете колесо? ASP.NET имеет несколько совершенно хороших встроенных систем аутентификации - например, Личность ASP.NET [^]
Member 13680033
я нашел какую-то ошибку в этой системе аутентификации, поэтому я ее и построил
Richard Deeming
Неужели вы действительно нашли ошибка в ASP.NET-это встроенная система аутентификации, которая используется тысячами сайтов без каких-либо проблем?
Я предполагаю, что вы сообщили об этом в Microsoft. Можете ли вы предоставить ссылку на свой отчет об ошибке?