您的位置:首页 > 其它

学生信息管理系统总结(一)

2016-05-28 16:08 239 查看
【序言】

学生信息管理系统--自己做的第一个系统,有独立完成的部分,其实更多的是比葫芦画瓢,但是调试和优化的时候也真的学到了很多的东西,虽然这些知识点很零碎,但是这是编制知识网的不可缺少的节点,我们要从总结中学会总结,记录自己的成长。

=================================================================

【问题1】登陆界面,用户名为“'”报错,SQL注入

      经验证,即使是其他的文本框,输入单引号也一样会相同的错误,仍然是“91错误”,对象变量或with块变量未设置。引发91错误的原因有很多,但基本都与数据库语句相关。那么,我们先来看看我们的数据库语句,探究一下问题所在。

txtSQL = "select * from user_Info where user_ID = '" & txtUserName.Text & "'";
这行语句反映到数据库中就是:
txtSQL = "select * from user_Info where user_ID = '我们输入的用户名'

在SQL里面因为查询字符串前后需要加单引号,
数据库会根据我们输入的字符(用户名)来进行查找,
所以当我们输入单引号时,反映到数据库中的语句就变成了这样的:
txtSQL = "select * from user_Info where user_ID = '''
对,就是这样,是三个连着的单引号,这是数据库找不到两个单引号括起来的字符,于是就出现了这个SQL注入的问题,也叫做SQL入侵。
再来解释一下单引号和双引号的区别:
我们输入的字符需要两个单引号将其括起来,而在程序里面要把单引号加进去,所以单引号必须要用“”括起来,所以就要用双引号,单引号连用。

解决问题的方法其实很简单,只是利用Ascii码对单引号字符进行限制输入就好,具体步骤还请读者多多探索。

【问题2】修改密码时显示当前用户名

一开始的时候是这样的,

 


 经过一番修改与优化,



本着一切为人民服务的思想,我们在提示用户修改密码时要注意两个问题。

①修改密码时提示当前用户名称。
'当两次密码不一致时,数据库中的记录自动更新。
Private Sub Form_Load()

'在label框中显示当前用户名
txtSQL = "select * from user_Info where user_ID = '" & UserName & "' "
Set MRc = ExecuteSQL(txtSQL, MsgText)
Crrunt_user = Trim(MRc.Fields(0))
lblCurrentuser.Caption = "当前用户名称为:" & Crrunt_user

End Sub


②添加确认原密码项,且原密码和旧密码不能一样。
'先进行原名密码验证,是否与数据库中的原密码一致
txtSQL = "select * from user_Info where user_ID = '" & UserName & "' "
Set MRc = ExecuteSQL(txtSQL, MsgText)
If Trim(txtOldPassword.Text) = Trim(MRc.Fields(1)) Then               '原密码的验证正确

* 此处省略验证成功后,修改新密码的代码项

’新旧密码不能一样
Private Sub Text1_Change(Index As Integer)

If Text1(0).Text = txtOldPassword.Text Then
MsgBox "新密码不能和原密码一样!", vbOKOnly + vbExclamation, "警告!"
Text1(0).Text = ""
Text1(0).SetFocus
End If
End Sub


【总结】作为一名软件开发设计者,我们的首要任务是全心全意的为用户服务,方便用户,多多考虑用户的需要,怎样使用户的操作更加简单,我们就怎样优化。同时做好提示工作,要让用户明白系统的指示。

 感谢您的阅读,未完待续~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: