PHP校园二手信息网站的设计与开发
摘 要
二手信息网站,为二手物品交易提供了网上平台。如今,随着电子商务的不断发展完善,大学校园也需要一个能为学生提供二手物品交易的专用网站,以便发布各种商品信息。
本设计具有一般电子商务的功能,且体现出校园风格。该系统提供的功能包括注册、查询信息、发布信息、找回密码等。本系统的特点在于应用了PHP技术。它是一种简单的动态脚本语言,具有开放源码、执行速度快的特点。该技术还支持广泛的数据库连接 ,具有大量的扩展库,安全性能高,易学易用。
本文首先介绍了该系统的可行性和应用工具,并就系统的需求性和PHP的优势进行了阐述;接着进行系统分析,并设计了本系统所用到的基于MY SQL数据库的数据表结构;然后对该系统各功能模块进行了详细设计;最后,针对系统在代码优化和加密方面的不足做出总结。
关键词:二手信息;PHP;MySQL;APACHE;MD5;SESSION
3.1 系统功能需求分析
根据一般电子商务系统功能分析,将系统分为管理员、用户两大模块。系统管理员模块包括:系统配置管理、会员信息管理、网站新闻管理、物品信息管理、管理员管理、登录日志管理。用户模块包括:安全登录、找回密码、查询信息、发布信息、会员注册、物品类别、物品信息管理、会员信息修改。刚进入网站的非会员能够在此网站浏览和搜索信息,不仅能浏览二手信息还能浏览到热门信息。经过注册成为会员便能发布信息。此系统还考虑到用户利用穷举法破解密码,专门设置了用户和管理员登录日志,以便及时了解和防范。
3.2 系统模块关系图
根据系统功能需求建立的模块关系图如下图:
4.1 系统的主要功能
归纳起来,系统的功能大约有以下几点:用户注册,信息查询,发布信息,找回密码等。
4.1.1 注册
为了实现不同地域的学生通过网络、不择时间地自主填写并上传自己的基本档案(不合要求的档案可以由管理员及时清除),需要录入基本的个人信息。
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 from ershou_user where user_name='$user_name'";
$result=mysql_query($query);
while($info=mysql_fetch_array($result))
{ $count=$info["count"]; }
if($count==0){//不存在才执行注册
$sqladd = "INSERT INTO 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>
<td height="300" align="center"><img src="images/warning.gif" border="0" /> 该会员已存在 <a href="javascript:history.back()">返回</a>重新填写
</td>
</tr>
</table>';}
}
3.主要窗口如下图:
图10 用户注册窗口
4.1.2 搜索信息
为了实现快速浏览网站信息,各用户可以根据所须信息类别并填写查询关键字,很快的找出需要的信息。
1.步骤:
(1)填写信息类别;
(2)修改或删除信息类别;
(3)浏览信息类别。
2.主要代码:
$sql ="select count(*) count from ershou_wupin where bclass_name='$bclass_name' and wupin_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_wupin where bclass_name='$bclass_name' and wupin_name like '%$searchcontent%' ORDER BY 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><td height="25">
<font color="#333333">['.$rswupin->class_name.']</font>
<a href="wupin.php?wid='.$wid.'" target="_blank">
<font color="#333333">'.TrimChinese($wupin_name,"80").'</font></a>
<font color="#666666"> ('.$date_format.') </font></td></tr>';}}
3.主要窗口如下图:
4.1.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 where class_name='$class_name'";
$resultbclass=mysql_query($sqlbclass);
while($infobclass=mysql_fetch_array($resultbclass))
{ $class_cid=$infobclass["class_cid"];}
//根据大类的id号 查询出大类名称
$sqlbclass1="select * from ershou_class where cid='$class_cid'";
$resultbclass1=mysql_query($sqlbclass1);
while($infobclass1=mysql_fetch_array($resultbclass1))
{ $bclass_name=$infobclass1["class_name"];}
$sqlup = "INSERT INTO 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.窗口如下图:
图12 发布信息窗口
4.1.4 密码找回
实现找回密码,大意丢失密码的拥护根据所须填写注册时的问题答案,就能更改密码。
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 '<tr bgcolor="#f3f3f3">
<td height="50" align="center">答案错误!请<a href="user_repw.php"><font color="#ff0000">返回</font></a></td></tr>';}
//输入的答案正确和输入了新密码就提交修改的用户密码
elseif($user_angser1==$user_angser)
{
$sqlup="UPDATE ershou_user SET user_pass='$user_pass1' where user_name='$user_name1'";
if(@mysql_query($sqlup)) {
echo '<img src="images/success.gif" border="0" />';
msg("修改成功,返回登录","#ff0000");
echo '<meta http-equiv ="Refresh" content = "1 ; URL=user_login.php">';
}
else {
echo"<p>Error: ".mysql_error()."</p>";
}
}
?>
3.主要窗口如下:
4.1.5 数据库连接代码
<?
######MySQL数据库信息######
$DBhost = "localhost"; //主机名
$DBuser = "root"; //用户名
$DBpass = ""; //密码
$DBname = "ershou"; //数据库名
mysql_connect($DBhost,$DBuser,$DBpass) or die("无法连接到数据库!");
mysql_query("SET NAMES GBK");
mysql_select_db ($DBname);
?>
4.2 创建界面
1.首页:
网站首页是用户进入系统的第一个界面,因此,简洁、友好、清晰醒目是设计时要考虑的风格。样式如图所示:
图14 系统首页
2.管理员管理主界面:
管理员输入正确地用户名和口令后,就可进入管理主界面。管理主界面是管理员维护网站使用的界面,因此要求简单明了,容易操作。样式如下图:
图15 管理员管理界面