联系方式: 微信:biyebang QQ: 629001810
根据一般电子商务系统功能分析,将系统分为管理员、用户两大模块。系统管理员模块包括:系统配置管理、会员信息管理、网站新闻管理、物品信息管理、管理员管理、登录日志管理。用户模块包括:安全登录、找回密码、查询信息、发布信息、会员注册、物品类别、物品信息管理、会员信息修改。刚进入网站的非会员能够在此网站浏览和搜索信息,不仅能浏览二手信息还能浏览到热门信息。经过注册成为会员便能发布信息。此系统还考虑到用户利用穷举法破解密码,专门设置了用户和管理员登录日志,以便及时了解和防范。
根据系统功能需求建立的模块关系图如下图:
本实例根据上面的模块关系图规划出的实体有管理员、二手信息机及新闻、用户、会员实体、各实体的E-R图及其关系描述如下(带下划线的为主键):
超级管理远实体E-R图同管理员实体E-R图类似,无权限属性(省略)。
各实体的关系E-R图描述如下:
表1 数据库表
序号 |
数据库表 |
数据库存储内容 |
1 |
ershou_adminstage |
存储管理员和会员的登录日志 |
2 |
ershou_class |
存储二手信息的类别信息 |
3 |
ershou_pinglun |
存储会员对物品信息的评论 |
4 |
ershou_news |
存储新闻 |
5 |
ershou_user |
存储会员的相关信息 |
6 |
ershou_wupin |
存储以发布的物品信息 |
7 |
ershou_manager |
存储管理员的信息 |
数据表关系图如下:
数据表结构的详细设计
表2 用户资料表(ershou_user)
序号 |
字段名 |
字段类别 |
说明 |
备注 |
1 |
user_name |
varchar(20) |
用户的账号名称 |
主键 |
2 |
user _pass |
varchar(20) |
用户的帐号密码 |
|
3 |
user _question |
varchar(50) |
找回密码提问 |
|
4 |
user _angser |
varchar(50) |
找回密码答案 |
|
5 |
user _mphone |
varchar(12) |
移动电话 |
|
6 |
user _phone |
varchar(12) |
座机 |
|
7 |
user _school |
varchar(60) |
所在学校 |
|
8 |
user _email |
Varchar(80) |
电子邮箱 |
|
9 |
user _date |
datetime |
注册时间 |
|
10 |
user _qq |
Int |
QQ号 |
|
11 |
user _kt |
Int |
标志 |
默认为0 |
表3 类别信息表(ershou_class)
序号 |
字段名 |
字段类别 |
说明 |
备注 |
1 |
class_name |
varchar(20) |
类别名称 |
主键 |
2 |
class_order |
int |
大类顺序标记小类为默认的0 |
默认值为0 |
3 |
class_cid |
int |
小类顺序标记大类为默认的0 |
默认值为0 |
表4 用户与管理员登录日志信息表(ershou_ adminstage)
序号 |
字段名 |
字段类别 |
说明 |
备注 |
1 |
manager_name |
varchar(20) |
登录名 |
主键 |
2 |
manager_action |
varchar(50) |
登录动作 |
|
3 |
manager_ip |
varchar(30) |
登录ip |
|
4 |
manager_time |
datetime |
登录时间 |
|
5 |
manager_state |
int |
登录状态 |
默认为0 |
6 |
manager_if |
Int |
判断为管理员还是用户 |
默认为0 |
表5 评论表(ershou_pinglun)
序号 |
字段名 |
字段类别 |
说明 |
备注 |
1 |
pid |
int |
Id |
主键 |
2 |
pinglun_wid |
int |
物品id |
默认值为0 |
3 |
user_name |
varchar(20) |
会员名 |
|
4 |
pinglun_nr |
varchar(200) |
内容 |
|
5 |
Pinglun_time |
datetime |
时间 |
表6 网站新闻表(ershou_news)
序号 |
字段名 |
字段类别 |
说明 |
备注 |
1 |
nid |
tinyint(6) |
设置新闻编号 |
|
2 |
news_title |
varchar(100) |
设置新闻标题 |
|
3 |
news_class |
varchar(20) |
设置新闻类别 |
|
4 |
news_ly |
varchar(30) |
新闻来源 |
|
5 |
news_jishu |
int |
浏览次数 |
默认值为0 |
6 |
news_nr |
text |
新闻内容 |
|
7 |
news_time |
datetime |
设置添加时间 |
|
8 |
news_guoqi |
Char(2) |
设置是否过期 |
默认值为1 |
9 |
news_name |
varchar(20) |
发表新闻的管理员帐号 |
主键 |
表7 物品信息表(ershou_wupin)
序号 |
字段名 |
字段类别 |
说明 |
备注 |
1 |
wid |
int |
物品id |
主键 |
2 |
bclass_name |
varchar(20) |
所属大类别 |
|
3 |
class_name |
varchar(20) |
所属小类别 |
|
4 |
wuping_name |
varchar(40) |
物品名称 |
|
5 |
wuping_jishu |
int |
浏览次数 |
默认设置为0 |
6 |
wuping_nr |
text |
物品介绍 |
|
7 |
user_name |
varchar(20) |
用户帐号 |
|
8 |
wuping_time |
datetime |
发表时间 |
|
9 |
wuping_guoqi |
int |
交易状态 |
默认设置为1 |
表8:管理员信息表(ershou_manager)
序号 |
字段名 |
字段类别 |
说明 |
备注 |
2 |
manager_name |
varchar(20) |
管理员名称 |
主键 |
3 |
manager_pass |
varchar(20) |
管理员密码 |
|
4 |
manager_sup |
int |
标志为管理员权限 |
默认值为0 |
MD5是在Web应用程序中最常用的密码加密算法。由于MD5是不可逆的,因而经过MD5计算得到后的密文,不能通过逆向算法得到原文。
所谓MD5,即"Message-DigestAlgorithm 5(信息-摘要算法)",它由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于——这种"压缩"是不可逆的。
在Web应用程序中使用MD5加密文本密码的初衷,就是为了防止数据库中保存的密码不幸泄露后被直接获得。但攻击者不但拥有数据量巨大的密码字典,而且建立了很多MD5原文/密文对照数据库,能快速地找到常用密码的MD5密文,是破译MD5密文的高效途径。然而,MD5密文数据库所使用的是最常规的MD5加密算法:原文-->MD5-->密文。因此,使用字符串次序干涉MD5算法,使现成的MD5密文数据库无所作为。此函数是把MD5运算后的密文字符串的顺序调转后,再进行一次MD5运算。函数代码如下:
function md5_5($psw)
{ //得到数据的密文
$ psw = md5($psw);
//再把密文字符串的字符顺序调转
$ psw = strrev($psw);
//最后再进行一次MD5运算并返回
return md5($psw);
}
系统实现
归纳起来,系统的功能大约有以下几点:用户注册,信息查询,发布信息,找回密码等。
为了实现不同地域的学生通过网络、不择时间地自主填写并上传自己的基本档案(不合要求的档案可以由管理员及时清除),需要录入基本的个人信息。
1.步骤:
(1)开始注册;
(2)填写个人信息;
(3)提交(如失败返回填写页面重填写;如果重名错误,显示提示信息);
(4)进入登录界面;
(3)登录成功,进入主界面。
2.主要验证代码:
//值存在则继续执行
if(($_GET["ac"]=="in")and(isset($_POST["user_name"])))
{ //判断验证码是否正确
if($_POST["ac_uthnum"]==$_SESSION["user_authnum"])
{
$user_name=$_POST["user_name"];
$user_name=trim($user_name);
$user_pass1=$_POST["user_pass"];
$user_pass1=trim($user_pass1);
$user_pass=md5_5($user_pass1);//密码进行MD5加密
$user_question=$_POST["user_question"];
$user_angser1=$_POST["user_angser"];
$user_angser1=trim($user_angser1);
$user_angser=md5_5($user_angser1);//密码进行MD5加密
$user_school=$_POST["user_school"];
$user_phone=$_POST["user_phone"];
$user_mphone=$_POST["user_mphone"];
$user_qq=$_POST["user_qq"];
$user_email=$_POST["user_email"];
$user_kt="1";
//查询是否存在当前注册用户名
$query="select count(*) count fromershou_user where user_name='$user_name'";
$result=mysql_query($query);
while($info=mysql_fetch_array($result))
{ $count=$info["count"]; }
if($count==0){//不存在才执行注册
$sqladd = "INSERTINTO ershou_user SET user_name='$user_name',
user_pass='$user_pass',
user_question='$user_question',
user_angser='$user_angser',
user_school='$user_school',
user_phone='$user_phone',
user_mphone='$user_mphone',
user_qq='$user_qq',
user_email='$user_email',
user_kt='$user_kt',
user_date=NOW()";
else{//存在相同用户名则重新填写
echo '<table width="100%"border="0" cellPadding="0" cellSpacing="0">
<tr>
<tdheight="300"><imgsrc="images/warning.gif" border="0" /> 该会员已存在 <ahref="javascript:history.back()">返回</a>重新填写
</td>
</tr>
</table>';}
}
3.主要窗口如下图:
搜索信息
为了实现快速浏览网站信息,各用户可以根据所须信息类别并填写查询关键字,很快的找出需要的信息。
1.步骤:
(1)填写信息类别;
(2)修改或删除信息类别;
(3)浏览信息类别。
2.主要代码:
$sql ="selectcount(*) count from ershou_wupin where bclass_name='$bclass_name' andwupin_name like '%$searchcontent%'";
$result=mysql_query($sql) or die(mysql_errno().": ".mysql_error()."\n");
$rs=mysql_fetch_object($result);
$recountCount=$rs->count;
$show=20;
$totalPage=ceil($recountCount/$show);
$page = (isset($_GET['page']) &&$_GET['page']>=0)? $_GET['page']: 0;
$isLast = ($page==($totalPage-1))? true: false;
$hasNoPre = ($page==0)? true: false;
$hasNoNext = ($page==$totalPage-1)? true: false;
$isFirst = ($page==0)? true:false;
$start = $page*$show;
if($recountCount==0){ //搜索结果不为0则显示未找到
echo'<tr><td height="25"align="center">未找到!</td></tr>';}
else{
$sqlwupin="select * from ershou_wupinwhere bclass_name='$bclass_name' and wupin_name like '%$searchcontent%' ORDERBY wupin_time desc limit $start,20";
$resultwupin = mysql_query($sqlwupin) or die(mysql_errno().": ".mysql_error()."\n");
while($rswupin=mysql_fetch_object($resultwupin)){
$wupin_name=$rswupin->wupin_name;
$wupin_time=$rswupin->wupin_time;
$date_format=date("m/d",strtotime($wupin_time));
$wid=$rswupin->wid;
echo '<tr><tdheight="25">
<font color="#333333">['.$rswupin->class_name.']</font>
<ahref="wupin.php?wid='.$wid.'" target="_blank">
<fontcolor="#333333">'.TrimChinese($wupin_name,"80").'</font></a>
<font color="#666666"> ('.$date_format.')</font></td></tr>';}}
3.主要窗口如下图:
发布信息
实现用户发布二手信息,建立一个简单易操作的信息发布平台。
1.步骤:
(1)输入标题;
(2)选择类别;
(3)输入内容;
(4)选择有效标志。
2.主要代码:
<?
//处理内容提交
if(($_GET["ac"]=="in")&&(isset($_POST["wupin_name"]))){
$wupin_name=$_POST["wupin_name"];
$class_name=$_POST["class_name"];
$wupin_nr=$_POST["wupin_nr"];
$wupin_img=$_POST["wupin_img"];
$user_name=$_POST["user_name"];
$wupin_time=$_POST["wupin_time"];
$wupin_guoqi=$_POST["wupin_guoqi"];
//查询所属大类的id号
$sqlbclass="select* from ershou_class whereclass_name='$class_name'";
$resultbclass=mysql_query($sqlbclass);
while($infobclass=mysql_fetch_array($resultbclass))
{$class_cid=$infobclass["class_cid"];}
//根据大类的id号 查询出大类名称
$sqlbclass1="select * fromershou_class wherecid='$class_cid'";
$resultbclass1=mysql_query($sqlbclass1);
while($infobclass1=mysql_fetch_array($resultbclass1))
{$bclass_name=$infobclass1["class_name"];}
$sqlup = "INSERTINTO ershou_wupin SET
bclass_name='$bclass_name',
wupin_name='$wupin_name',
class_name='$class_name',
wupin_nr='$wupin_nr',
user_name='$user_name',
wupin_guoqi='$wupin_guoqi',
wupin_time=NOW()";
if(@mysql_query($sqlup)) {
msg("增加成功!","#ff0000");
echo '<meta http-equiv ="Refresh" content ="1 ; URL=wupin_manager.php">';
}
else {
echo"<p>Error:".mysql_error()."</p>";
}
}?>
3.窗口如下图:
密码找回
实现找回密码,大意丢失密码的拥护根据所须填写注册时的问题答案,就能更改密码。
1.步骤:
(1)填写用户名;
(2)填写答案跟新密码;
(3)提交密码。
2.主要代码如下:
<?
$user_name1=$_POST["user_name"];//前页隐藏表单提交过来的的当前用户名
$user_angser2=$_POST["user_angser"];
$user_name1=trim($user_name1);
$user_angser2=trim($user_angser2);
$user_angser1=md5_5($user_angser2);//填写的答案进行加密 以去和数据库的值对比
$user_pass2=$_POST["user_pass1"];//读取新密码
$user_pass2=trim($user_pass2);
$user_pass1=md5_5($user_pass2);//加密
$sql="select *from ershou_user WHERE user_name='$user_name1'";
$result = mysql_query($sql) or die(mysql_errno().": ".mysql_error()."\n");
$rs=mysql_fetch_object($result);
$user_angser=$rs->user_angser;
if($user_angser!=$user_angser1){//数据库答案与输入的不相同就提示
echo '<trbgcolor="#f3f3f3">
<td height="50"align="center">答案错误!请<a href="user_repw.php"><fontcolor="#ff0000">返回</font></a></td></tr>';}
//输入的答案正确和输入了新密码就提交修改的用户密码
elseif($user_angser1==$user_angser)
{
$sqlup="UPDATE ershou_user SET user_pass='$user_pass1' whereuser_name='$user_name1'";
if(@mysql_query($sqlup)) {
echo'<img src="images/success.gif" border="0" />';
msg("修改成功,返回登录","#ff0000");
echo '<metahttp-equiv ="Refresh" content = "1 ; URL=user_login.php">';
}
else {
echo"<p>Error:".mysql_error()."</p>";
}
}
?>
3.主要窗口如下:
数据库连接代码
<?
######MySQL数据库信息######
$DBhost ="localhost"; //主机名
$DBuser ="root"; //用户名
$DBpass =""; //密码
$DBname ="ershou"; //数据库名
mysql_connect($DBhost,$DBuser,$DBpass)or die("无法连接到数据库!");
mysql_query("SETNAMES GBK");
mysql_select_db($DBname);
?>
1.首页:
网站首页是用户进入系统的第一个界面,因此,简洁、友好、清晰醒目是设计时要考虑的风格。样式如图所示:
2.管理员管理主界面:
管理员输入正确地用户名和口令后,就可进入管理主界面。管理主界面是管理员维护网站使用的界面,因此要求简单明了,容易操作。样式如下图:
源文件
版权所有© 帮我毕业网 并保留所有权利