如图21:当会员成功登录后如图,在这部分我将用户的姓名和上次访问时间,短信、订单查询和个人信息修改等功能显示在用户控制面板中,以利于用户的操作。如图会员登录部分,对了防止无关用户用暴力破解的方式非法获得注册用户的账户和密码,在本设计中我采用了目前比较流行的登录验证码,由于它产生于服务器端,并且必须用手工输入验证码的方式才能正确提交信息,用这种方法从很大程度上解决了此问题。用户的某些数据直接涉及到某些保密信息,如何使无关用户不能窃取用户的信息,在设计中需要对这些数据进行加密处理。对于加密处理所采用的算法,我选择了MD5经典加密算法,它的安全性体现在它的算法可逆性的复杂度较高。
4.2.3 商品添加
如图22,这部分涉及的输入内容和检测较多。首先是类别选择:先从数据库中读取大类信息并显示在大类下拉菜单中,然后再根据大类下拉菜单中的名称把属于它的小类信息显示在小类下拉菜单中,当改变大类的选项时,要调用java script和VBScript脚本对小类选项中的内容自动更新;商品的名称、进货价格、市场价格等用普通文本框实现即可,推荐、促销等功能用复选框实现,另外在操作时要进行细节判断,商品名称、底价和市场价格为必须填写内容,会员价、VIP价等要根据商品的销售类型进行填写,如果是销售或特价就可以不填写会员价和VIP价。对于商品的图片,由于涉及两种形势,所以我把它们分开上传。上传后会在只读文本框中将上传之后的文件名显示出来,由于考虑到当上传的图片比较多时,会出现重名现象,所以我以日期和时间来对文件进行命名,采用的上传组件为“化境无组件上传”。
4.2.4 类别管理
如图23,对于大类商品我将它的编号基数定为:“0001”,当新添加大类时,首先要从数据库中读取最后一条记录中的编号,把它变为数值型存到某一变量中。新添加的商品类别用对变量加1后,再转换为字符型,然后再把它合并到字符“000”的后面,这样一个新的大类编号就可以构造出来。对于小类的添加过程和大类的过程类似只是将它的基数定为“00001”。
4.2.5 对站内商品信息的搜索
如何帮助用户快速的找到自己需要的产品,实现不同类别的商品的查找是必需的。因此在用户选择大类后,应自动显示出其相应的子类信息的显示。并根据用户输入的条件实现不同条件的组合和模糊查询。这一点我对每种可能情况进行细致的分类并用脚本控制实现过程[15]。
(1) 只选择大类:Sql="select * from Goods where BigSortName='"+BigSortName+"' order by BigSortName"
(2) 选择大类和小类:Sql="select * from Goods where BigSortName='"+BigSortName+"' and SmallSortName='"+SmallSortName+"' order by BigSortName,SmallSortName"
(3) 选择大类并输入商品名称:Sql="select * from Goods where BigSortName='"+BigSortName+"' and GoodsName like'%"+GoodsName+"%' order by BigSortName,GoodsName"
(4) 选择了大类、小类和输入了商品名称:Sql="select * from Goods where BigSortName='"+BigSortName+"' and SmallSortName='"+SmallSortName+"' and GoodsName like'%"+GoodsName+"%'"
4.2.6 数据库的完整性和安全性
完整性:主要是指数据的正确性和相容性,防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和出错处理。在这一部分我主要是在信息提交时用脚本控制,并在写入数据库时再次进行检查[16]。
<Script language="java script">
<!--
function LoginCheck(loginform)
{
var userid,pwd;
userid=loginform.UserId.value;
pwd=loginform.PWD.value;
if(userid=="")
{
alert("请输入账户!");
return false;
}
if (pwd=="")
{
alert("请输入密码!");
return false;
}
}
//-->
</Script>
安全性:主是保护数据库防止恶意的破坏和非法的存取,也就是说安全性措施的防范对象是非法用户和非法操作。比如现在比较流行的SQL注入技术,用下面的方法就可以从一定程度上预防:
<%
UserId=replace(trim(request("UserId")),"'","’")
PWD=MD5(trim(request("PWD")))
verifycode=trim(request("verifycode"))
…
%>