当前用户修改密码,运行的时候原密码明明正确却总提示原密码不正确。

trista_1212 2015-12-22 09:26:56
并不是系统报错,这个提示是我自己设置的。确定密码是正确的,vs用得2010,sql用的2008.附代码如下,请大神帮忙!新手求讲解,求轻喷。。。
...全文
4701 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
早起晚睡 2016-01-13
  • 打赏
  • 举报
回复
flag设置下断点立马就出来了
yangxing8jn 2016-01-12
  • 打赏
  • 举报
回复
建议楼主规范一下代码 不要用if else if else写验证 这样容易出问题 另外 最好把验证写前面 确定用户输入的正确后在执行修改密码的代码 最后判断flag是否大于0 而不是等于1 至于你的问题 你先检查一下你的数据库改过来没有 你的问题太多了 说实话 很多地方都能出问题 估计是你数据库有重复数据或者什么的 至于数据底层什么的 我估计你也不会写 我也不多说 你用try catch包裹一下修改语句 断点调试一下 问题就出来了 本来之前说了很多 忘记没登录 结果没了 重新打了 也懒得说多了的
早起晚睡 2016-01-12
  • 打赏
  • 举报
回复
肯定不正确 你判断 不正确 最后else 是密码相同 输出密码不正确的提示!!!!!!
纸飞机_ 2016-01-12
  • 打赏
  • 举报
回复
有没有可能是where里面有多条(导致flag>1),你能确定UserName是唯一的么?不能的话建议使用ID
楠子 2016-01-12
  • 打赏
  • 举报
回复
没验证就先执行sql? 验证应该放在前面的吧 不满足就return 验证通过才执行sql 还有 com.ExecuteNonQuery 执行两次
yangxing8jn 2016-01-12
  • 打赏
  • 举报
回复
之前用ASP.NET写的项目一时之间没找到 这个是用MVC写的 反正道理是一样的 <script type="text/javascript">//前台js验证 $(function () { $("#U_Password").hide(); $(".Update").click(function () { var Pwd = $("#txtPwd").val(); var RPwd = $("#txtRPwd").val(); var APwd = $("#txtAPwd").val(); if (Pwd == "") { msgbox.show("txtPwd", "请输入原密码"); return false; } if (Pwd != $("#U_Password").text()) { msgbox.show("txtPwd", "原密码输入错误"); return false; } else if (RPwd == "") { msgbox.show("txtRPwd", "请输入新密码"); return false; } else if (checkQuote(RPwd)) { msgbox.show("txtRPwd", "不能输入输入特殊字符"); return false; } else if (APwd == "") { msgbox.show("txtAPwd", "请输入确认密码"); return false; } else { if (RPwd != APwd) { msgbox.show("txtAPwd", "两次密码输入不一致,请重新输入"); return false; } else { $("form").submit(); $.get("/Main/NewPassword", { pwd: Pwd, apwd: APwd }, function (data) { if (data == "1") { $("#txtPwd").val(""); $("#txtRPwd").val(""); $("#txtAPwd").val(""); msgbox.show("txtPwd", "原密码输入错误"); } else if (data == "3") { aler("修改失败"); window.parent.$("#dlg").dialog("close"); } else { alert("修改成功"); window.parent.$("#dlg").dialog("close"); window.parent.location = "/Login/Index"; } }); } } }); $("#txtRPwd").blur(function () { if (checkQuote($("#txtRPwd").val())) { msgbox.show("txtRPwd", "不能输入输入特殊字符"); return false; } }) $("#txtAPwd").blur(function () { if ($("#txtRPwd").val() != $("#txtAPwd").val()) { msgbox.show("txtAPwd", "两次密码输入不一致,请重新输入"); $("#txtAPwd").val(""); return false; } }) $("#txtPwd").blur(function () { var Pwd = $("#txtPwd").val(); if (Pwd != $("#U_Password").text()) { msgbox.show("txtPwd", "原密码输入错误"); return false; } }) }); /** * 检查输入的字符是否具有特殊字符 * 输入:str 字符串 * 返回:true 或 flase; true表示包含特殊字符 * 主要用于注册信息的时候验证 */ function checkQuote(str) { var items = new Array("~", "`", "!", "#", "$", "%", "^", "&", "*", "{", "}", "[", "]", "(", ")"); items.push(":", ";", "'", "|", "\\", "<", ">", "?", "/", "<<", ">>", "||", "//"); items.push("admin", "administrators", "administrator", "管理员", "系统管理员"); items.push("select", "delete", "update", "insert", "create", "drop", "alter", "trancate"); str = str.toLowerCase(); for (var i = 0; i < items.length; i++) { if (str.indexOf(items[i]) >= 0) { return true; } } return false; } </script> @using (Html.BeginForm())//前台页面 { <table align="center" id="tbe1"> <tr> <th> 旧密码: </th> <td> <input id="txtPwd" type="password" onblur="QueFocus();" /> </td> </tr> <tr> <th> 新密码: </th> <td> <input id="txtRPwd" type="password" /> </td> </tr> <tr> <th> 确认密码: </th> <td> <input id="txtAPwd" type="password" /> </td> </tr> <tr> <td> </td> <td> <a href="#" class="easyui-linkbutton Update" iconcls="icon-edit">修改</a> <label id="U_Password">@User.U_Password</label> </td> </tr> </table> } //后台控制器的方法 public ActionResult NewPassword(string pwd, string Apwd) { Users use = Session["User"] as Users; if (pwd != use.U_Password) { return Content("1"); } else { BLL.MenCardsBLL mcbll = new BLL.MenCardsBLL(); bool result = mcbll.UsersUpdate(use.U_ID, Apwd); if (result) { return Content("2"); } else { return Content("3"); } } } 兄弟 看不看得懂就看你自己了 我只能帮你到这里了
mokya 2016-01-12
  • 打赏
  • 举报
回复
flag没有赋值,肯定不是1啊
dongmusic 2016-01-09
  • 打赏
  • 举报
回复
引用 14 楼 trista_1212 的回复:
[quote=引用 13 楼 Voscxx 的回复:] 那现在flag的值是什么呢
怎么看flag的值?[/quote] 你不好调试一下吗?打个断点,调试一下,很快就知道哪里出问题了啊。
trista_1212 2016-01-07
  • 打赏
  • 举报
回复
引用 13 楼 Voscxx 的回复:
那现在flag的值是什么呢
怎么看flag的值?
Voscxx 2015-12-29
  • 打赏
  • 举报
回复
那现在flag的值是什么呢
trista_1212 2015-12-26
  • 打赏
  • 举报
回复
引用 6 楼 u010248119 的回复:
没明白,为什么要把com.ExecuteNonQuery 执行两次,你执行之后去数据库里面看看数据没有更改掉,如果没有,看一下密码是什么,去一下空格什么的,文本框里面容易出现一些空格,导致跟数据库内容不匹配 ,把数据拿到数据库里面试一下,差补多就知道是为什么了
sql语句是正确的,已经跑过了。。
trista_1212 2015-12-26
  • 打赏
  • 举报
回复
引用 3 楼 qq_23613747 的回复:
我想是你把cmd.ExecuteNoQuery();执行了两次的问题。你直接int flag = cmd.ExecuteNoQuery();就行了,上面那句就不要了
还是报错。。
trista_1212 2015-12-26
  • 打赏
  • 举报
回复
引用 5 楼 qq875778812 的回复:
1、检查链接字符串是否正确 2、检查生成的sql语句是否正确,拿到数据库中跑下 3、检查判断的值或顺序是否正确。
1和2都是对的。3应该怎么检查?本科生在校,没啥本事还请多多指教~~
红衣老大 2015-12-25
  • 打赏
  • 举报
回复
当看到拼接字符串 就放弃看下去了 为什么不用参数?
rayyu1989 2015-12-24
  • 打赏
  • 举报
回复
都没校验就执行sql了? 那空的也能设进去咯?
快乐起航2020 2015-12-24
  • 打赏
  • 举报
回复
这种方式要是开发实际的项目不安全的,我感觉是保存的http.current.....name可能重复了吧
充满荆棘的路 2015-12-24
  • 打赏
  • 举报
回复
没明白,为什么要把com.ExecuteNonQuery 执行两次,你执行之后去数据库里面看看数据没有更改掉,如果没有,看一下密码是什么,去一下空格什么的,文本框里面容易出现一些空格,导致跟数据库内容不匹配 ,把数据拿到数据库里面试一下,差补多就知道是为什么了
正怒月神 版主 2015-12-23
  • 打赏
  • 举报
回复
看一下你的 flag为什么是0, 出现这个问题,你需要断点调试, 看看sql语句是不是你预期希望得到的。
楉枫 2015-12-23
  • 打赏
  • 举报
回复
没太看懂你这2张图,所以不太好对代码说什么。。
楉枫 2015-12-23
  • 打赏
  • 举报
回复
1、检查链接字符串是否正确 2、检查生成的sql语句是否正确,拿到数据库中跑下 3、检查判断的值或顺序是否正确。
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧