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" />&nbsp;该会员已存在  <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">&nbsp;&nbsp;
<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 管理员管理界面