PHP留言板实训报告模板,PHP大作业模板

发布时间:2022-02-12 09:11:55 点击数:409

  • 课程设计说明

随着科学技术的不断提高,计算机技术日益成熟,它在人类社会中的各个领域发挥的作用也越来越大了。而我们对生活社交和资讯的了解和同学的沟通交流信息处理也应当用到这些完整的技术,为了也方便用户沟通和交流,本系统提供了管理员对信息的用户注册登录,和留言等功能,相当于用户登录后和其他同学进行留言交流

用户模块

用户登录模块,此模块包括用户登录和检查登录用户的身份功能,根据用户数据的学号和密码判断该用户是否合法,以及是否可以。

用户留言模块,用户登录后可以在留言板进行留言

管理员模块

此模块实现了管理员功能区的所有功能,由管理员登录模块、留言查看和留言删除系统模块组成。

管理员登录:此模块根据用户输入的账号和密码判断用户是否可以登录以及是否是管理员账户。

留言管理:管理员可以在此页面看到用户的全部留言管理员可以对用户留言进行修改和直接删除

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 程序目录模块

 

 

  • 课程设计说明

 

  1. 需求说明

本人制作的一个校园生活相关网站,网站可以注册,登录,网站还设置了BBS模板,并开设不同版本,如运动,考研,励志等主题,用户可以在此处发表自己的留言的感想,也想回复别人发布的帖子,实现不同用户的在线效果,后台管理员还可以删除不合法的留言,来保证给到用户一个健康的网络环境.本网站通过与数据库的连接使信息的发布与管理更加快捷,让广大同我我有一个学生朋友的朋友有个资讯交流平台。本次课程设计综合运用了HTMLphpcss+div等技术,并结合mysql数据库进行设计可以存储用户和留言信息

 

  1. 模块介绍

用户模块

用户登录模块,此模块包括用户登录和检查登录用户的身份功能,根据用户数据的学号和密码判断该用户是否合法,以及是否可以。

用户留言模块,用户登录后可以在留言板进行留言

管理员模块

此模块实现了管理员功能区的所有功能,由管理员登录模块、留言查看和留言删除系统模块组成。

管理员登录:此模块根据用户输入的账号和密码判断用户是否可以登录以及是否是管理员账户。

留言管理:管理员可以在此页面看到用户的全部留言管理员可以对用户的留言进行修改和直接删除

 

  1. 流程图

  1. E-R

  1. 数据库设计

数据库表的设计:

管理员 admin:

名字

类型

排序规则

默认

注释

 

id

mediumint(3)

 

 

 

username

varchar(40)

utf8_general_ci

用户名

 

password

varchar(40)

utf8_general_ci

密码

 

 

用户表:guest:

名字

类型

排序规则

默认

注释

id

mediumint(6)

 

 

username

varchar(20)

gbk_chinese_ci

用户名

password

varchar(40)

gbk_chinese_ci

 

avatar

varchar(80)

gbk_chinese_ci

def.jpg

 

email

varchar(40)

gbk_chinese_ci

 

 

address

char(40)

gbk_chinese_ci

NULL

地址

sex

varchar(2)

gbk_chinese_ci

 

birthday

date

 

NULL

生日

date

datetime

 

 

 

留言表 note:

 

名字

类型

排序规则

默认

注释

id

mediumint(3)

 

catid

int(10)

 

0

版块ID

pid

int(10)

 

0

title

varchar(40)

utf8_general_ci

标题

about

text

utf8_general_ci

uid

int(10)

 

date

datetime

 

 

 

  1. 关键代码

数据库连接:

<?php

    session_start();//开启session

    define('DB_HOST','127.0.0.1');

    define('DB_USER','root');

    define('DB_PWD','root'); //数据库密码

    define('DB_NAME','db'); //数据库名

    error_reporting(0);

    $conn = @mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME) or die('数据连接失败');

    mysqli_query($conn,'SET NAMES UTF8') or die('字符集错误');

 

 

登录

<?php

include 'conn.php';

ob_start();

if ($_POST) {

 

  if ($_SESSION['yzm'] != $_POST['yzm']) {

    echo "<script type='text/javascript'>alert('验证码错误');history.back();</script>";

    die;

  }

 

  $query = mysqli_query($conn, "select * from guest where username='{$_POST['username']}' && password='{$_POST['password']}'"); //查询用户帐号密码信息

  $rows = mysqli_fetch_array($query, MYSQLI_ASSOC);

  if (!$rows) {

    echo "<script type='text/javascript'>alert('您的密码或者帐号不正确,请重新输入!');history.back();</script>";

  } else {

    $_SESSION['username'] = $rows['username']; //写入session

    $_SESSION['uid'] = $rows['id'];

 

    if (!empty($_POST['remember'])) {     //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面

      setcookie("username", $rows['username'], time() + 3600 * 24 * 30);

      setcookie("password", $rows['password'], time() + 3600 * 24 * 30);

    }

 

    echo "<script type='text/javascript'>alert('成功!');window.location.href='notes.php';ck();</script>";

  }

}

 

if ($_COOKIE['username'] && $_COOKIE['password'] && !$_SESSION['username']) {

  $query = mysqli_query($conn, "select * from guest where username='{$_COOKIE['username']}' && password='{$_COOKIE['password']}'"); //查询用户帐号密码信息

  $rows = mysqli_fetch_array($query, MYSQLI_ASSOC);

  if ($rows) {

    $_SESSION['username'] = $rows['username']; //写入session

    $_SESSION['uid'] = $rows['id'];

  }

}

 

?>

 

注册:

写入数据库:

<?php

include 'conn.php';

include 'includes/basic.func.php';

if ($_POST) {

  $_clean['username'] = _check_username($_POST['username'], 2, 20); //验证用户名

  $_clean['password'] = _check_password($_POST['password'], $_POST['repassword'], 6); //验证密码

  $query = mysqli_query($conn, "select username from guest where username = '{$_clean['username']}'"); //查询用户名是否已经被注册

  if ($_row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {

    _alert_back('此用户已经被注册');

  };

  $query = mysqli_query($conn, "insert into guest (username,password,email,birthday,sex,address,date) values ('{$_POST['username']}','{$_POST['password']}','{$_POST['email']}','{$_POST['birthday']}','{$_POST['sex']}','{$_POST['address']}',now())"); //写入用户注册信息

  _alert_location('恭喜你,注册成功', 'login.php');

};

?>

 

JS较验:

<script>

        /**

         * 校验用户名

         */

        function checkUsername() {

          var value = document.getElementById("username").value;

          var hint = document.getElementById("hint");

          if (value.length < 6) {

            hint.innerHTML = "用户名太短";

            return false;

          } else {

            hint.innerHTML = "用户名合格";

            return true;

          }

        }

 

        /**

         * 校验密码

         */

 

        function checkPass() {

          var value = document.getElementById("pass_value").value;

          var hint = document.getElementById("hint");

          if (value.length < 6) {

            hint.innerHTML = "密码太短";

            return false;

          } else {

            hint.innerHTML = "密码格式合格";

            return true;

          }

        }

 

        function pass_hide() {

          var hint = document.getElementById("pass_hint");

          hint.innerHTML = "";

        }

        /***

         * 确认密码的校验

         */

        function checkPassPass() {

          var papavalue = document.getElementById("passpass_value").value;

          var value = document.getElementById("pass_value").value;

          var papahint = document.getElementById("hint");

          if (papavalue != value) {

            papahint.innerHTML = "两次密码不一致";

            return false;

          } else {

            papahint.innerHTML = "";

            return true;

          }

        }

 

        function passpass_hide() {

          var papahint = document.getElementById("hint");

          papahint.innerHTML = "";

        }

 

        function checkForm() {

          var flag = checkUsername() && checkPass() && checkPassPass();

          return flag;

        }

      </script>

 

 

留言:

<?php

include 'conn.php';

include 'includes/basic.func.php';

if ($_POST) {

  $query = mysqli_query($conn, "insert into note (title,about,catid,uid,date) values ('{$_POST['title']}','{$_POST['about']}','{$_POST['catid']}','{$_SESSION['uid']}',now())");

  _alert_location('留言成功 ', 'notes.php');

};

if ($_GET['act'] == 'del') {

  mysqli_query($conn, "delete from note where id = {$_GET['id']}");

}

?>

 

留言分页显示:

 <?php

      include 'conn.php';

      $num_rec_per_page = 4;

      if (isset($_GET["page"])) {

        $page  = $_GET["page"];

      } else {

        $page = 1;

      };

      $start_from = ($page - 1) * $num_rec_per_page;

 

      if ($_GET['keywords']) { //判断是否有post 关键词

        $where = " and (note.title like '%{$_GET['keywords']}%' or note.about like '%{$_GET['keywords']}%') "; //组装 查询条件

      }

      if ($_GET['catid']) { //判断是否有post 关键词

        $where = " and note.catid = '{$_GET['catid']}' "; //组装 查询条件

      }

      $_query = mysqli_query($conn, "select *,note.date as ndate,guest.id as uid,guest.username,note.id as nid from note left join guest on guest.id = note.uid  where note.pid = 0 {$where} order by note.id desc  LIMIT $start_from, $num_rec_per_page"); //通过 left join 连接 查询  分页查询 留言信息

      while (!!$_rows = mysqli_fetch_array($_query, MYSQLI_ASSOC)) {

 

      ?>

        <table border="0" cellspacing="0" style="border-bottom:2px solid #ccc ;">

          <tr>

            <td width="71">标题:</td>

            <td><a href="note.php?id=<?php echo $_rows['nid'] ?>"><?php echo $_rows['title'] ?></a></td>

          </tr>

          <tr>

            <td>内容:</td>

            <td><?php echo $_rows['about'] ?></td>

          </tr>

          <tr>

            <td colspan="2" align="center">

              用户:

              <?php echo $_rows['username'] ?> | 时间:<?php echo $_rows['ndate'] ?>

              <?php

              if ($_rows['uid'] == $_SESSION['uid']) { //如果留言者和登录一样 显示 编辑和删除 按钮

                echo "<a href='editnote.php?id={$_rows['nid']}'>编辑</a> | ";

                echo " <a href='?act=del&id={$_rows['nid']}'>删除</a>";

              }

              ?>

            </td>

          </tr>

        </table>

      <?php } ?>

 

      <p align="center">

        <?php

        $_query = mysqli_query($conn, "select *,note.date as ndate,guest.id as uid,guest.username,note.id as nid from note left join guest on guest.id = note.uid  where note.id > 0 {$where}"); //通过 left join 连接 查询  分页查询 留言信息

 

        $total_records = mysqli_num_rows($_query);  // 统计总共的记录条数

 

        $total_pages = ceil($total_records / $num_rec_per_page);  // 计算总页数

 

        echo "<a href='?catid={$_GET['catid']}&page=1'>" . '|<' . "</a> "; // 第一页

 

        for ($i = 1; $i <= $total_pages; $i++) {

          echo "<a href='?catid={$_GET['catid']}&page=" . $i . "'>" . $i . "</a> ";

        };

        echo "<a href='?catid={$_GET['catid']}&page=$total_pages'>" . '>|' . "</a> "; // 最后一页

        ?>

      </p>

 

 

  1. 效果图

 

 

  1. 项目心得

虽然PHP并非目前最火爆的编程语言并且相对易学的一门web变成语言但要应用好php也需要学习htmljs,mysql,css,div等辅助语言,比如MYSQlMYSQL只有一门好的开发语言而不懂得数据库,我们依然是寸步难行的!还好,我们有一样开源、小巧的MYSQL!对于一个web开发人员来说,不能仅仅懂得(///-insert/delete/update/select),为了让我们的网站跑的更快、更顺畅我们还要懂得mysql的优化。

了解了MYSQL数据库的创建的管理。以及数据库在网站应用中和重要性。

在实训过程中其中也有很多做不下去的时候后来查阅了资料才得以解决。这让我体会到了这门课重在实践的特征。同时感谢老师不辞辛苦的为我们参加php+mysql网站开发学习的老师传授非常有用的编程知识与技能。我们从他那里学习到了很多在我们自身工作中非常有用的知识,能让我们更加得心应手的工作和学习

总之能过本次实训作品,我遇到了不少问题,但也是借助互联网的强大搜索能力和同学老师的帮助也都得到了解决,这更加坚信大数据的广泛应用可以惠及大众,促进社会发展。