要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容。

要实现的功能:

1、登录者只能查看自己和所有人的信息,并能够给好友留言

2、留言板页面,好友采取下拉列表,当留言信息为空时,显示提示,并停留在当前页面

3、查看过的信息,消息显示已读

4、用$_SESSION[]获取登陆者,并用$_SESSION[]防止用户绕过登录直接进入主页面

第一步建数据库:

需要用到的三张表分别为:friend表,yuangong表,chenai表

yuangong表:

friend表:

chenai表

第二步写登录页面:

1、denglu.php

效果图:(简单)

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.aa{
height: 200px;
width: 300px;
margin: 100px auto;
border: 1px solid black;
text-align: center;
line-height: 20px;
padding-top: 50px;
}
</style>
</head>
<body>
<div class="aa">
<form method="post" action="chuli.php">
<div>用户名:<input type="text" name="username"/></div></br>
<div> &nbsp;&nbsp;密码:<input type="text" name="pwd"/></div></br>
<input type="submit" value="登录" />
</form>
</div>
</body>
</html>

2、登录页面的处理页面chuli.php

<?php
session_start(); //开始会话控制
$users = $_POST["username"];
$pwd = $_POST["pwd"];
require "DB.class.php";
$db = new DB();
$sql = "select password from yuangong where UserName = '{$users}'";
//echo $sql;
$arr = $db->query($sql);
//判断用户名和密码是否和数据库匹配
if(count($arr)){
if($arr[0][0]==$pwd && !empty($pwd)){
$_SESSION["username"]="$users"; //存取数据,便于后面的php页面调用
header("location:main.php");
}
}
?>

第三步主页面main.php

效果图:

注:如上图所示:“陈一“为登陆者,故此处为陈一,显示的都是陈一接收到的信息。

代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title> </head>
<body>
<?php
//防止用户绕过登录
session_start();
if(empty($_SESSION["username"]))
{
header("location:denglu.php");
exit;
} require "DB.class.php";
$db = new DB();
$zr = $_SESSION["username"];
//显示登录者,并据此只显示接收者是登陆者的留言和群发的留言
$sql2 = "select name from yuangong where username ='{$zr}'";
$arr2 = $db->query($sql2);
$zr = $arr2[0][0]; //取出员工表中username ='{$zr}'的name
echo $zr.",请查看您的留言信息:";
?> <table border="1px" cellpadding="0px" cellspacing="0px" width="50%">
<tr> <td>发送人</td>
<td>接收人</td>
<td>发送时间</td>
<td>信息内容</td>
<td>是否已读</td>
</tr>
<?php //遍历输出属于登陆者的留言和群发消息
$sql ="select * from chenai where Receiver = '{$zr}' or receiver = 'all'";
$arr = $db->query($sql);
foreach($arr as $v){
//当为群发时,显示所有人,不显示all. 如果前面为汉字“所有人”,则不需要此步骤
if($v[2]=="all"){$v[2]="所有人";} // 实现状态的转变
//var_dump($v[5]);
$str = "";
if($v[5])
{
$str = "<span >已读</span>";
}
else{
$str = " <a href='zt-chuli.php?ids={$v[0]}'> 未读</a>";
} echo"<tr>
<td>{$v[1]}</td>
<td>{$v[2]}</td>
<td>{$v[3]}</td>
<td value='{$v[4]}'> <a href='xx-chuli.php?ids={$v[0]}'> {$v[4]} </a></td>
<td>{$str}</td>
</tr>";
}
?>
</table>
<a href="fabu.php">返回留言页面</a> <a href="exit.php">退出系统</a>
</body>
</html>

第四步写留言页面:

1、发布页面fabu.php

效果图:

实现功能:

下拉列表是陈一的好友

留言板内容不能为空!

代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.aa{
height: 100px;
width: 300px;
margin: 0px auto;
}
.bb{
height: 200px;
width: 300px;
margin: 0px auto;
}
</style>
</head>
<body>
<div class="aa">
<h2>&nbsp;&nbsp;留言板</h2>
<?php
session_start();
if(empty($_SESSION["username"]))
{
header("location:denglu.php");
exit;
}
require "DB.class.php";
$db = new DB();
$username= $_SESSION["username"];
//获取发送者
$sql3 = "select name from yuangong where username='{$username}'";
$arr3 = $db->query($sql3);
$lyz= $arr3[0][0]; echo "欢 迎 ".$lyz.", 请 留 言!";
?>
</div> <div class="bb">
<form method="post" action="nr-chuli.php" id="bb">
<div>接收人:
<!-- 有问题,从用工表里读出的人并不一定都是我的好友,所以应该从friend表里读取属于我的好友,这样读出来的好友不包含我-->
<!--用下拉列表输出所有好友-->
<select name="receive">
<?php
$sql4 = "select Friend from friend where me='{$lyz}'";
echo $sql4;
$arr4 = $db->query($sql4);
var_dump($arr4); foreach($arr4 as $v){
echo"<option value='{$v[0]}'>{$v[0]}</option>";
}
?> <!--也可以直接把all换成所有人,后面就可以不用转换-->
<option value="all" value="all">All</option>
</select>
</div>
<div>留言:<br /><textarea name="nr" cols="30" rows="10" id="cc"></textarea></div>
<input type="submit" value="发送" onclick="panduan()" /></br>
<a href="denglu.php" >返回登录页面</a>
<a href="main.php">查看我的留言</a>
</form> </div>
</body>
</html>
<!--当留言为空时-->
<script>
function panduan(){
var a = document.getElementById("cc").value;
if(a=="")
{
//给提示
alert ("留言不能为空,您难道对您的好友这么无语么?哈哈请重新输入!");
//页面不跳转
document.getElementById("bb").removeAttribute("action");
}
}
</script>

2、发布处理页面:nr-chuli.php

<?php
session_start();
$_SESSION["username"];
if(empty($_SESSION["username"]))
{
header("location:denglu.php");
exit;
} $receive = $_POST["receive"];
$comment = $_POST["nr"];
$t=date("Y-m-d H:i:s"); $sender = $_SESSION["username"]; //var_dump($sender); require "DB.class.php";
$db = new DB(); //获取发送者
$sql = "select name from yuangong where username='{$sender}'";
$arr = $db->query($sql);
$sender = $arr[0][0];
//var_dump($arr); //往chenai表里添加信息
$sql2 = "insert into chenai values ('','$sender','$receive','$t','$comment',0)";
if($db->query($sql2,0))
{
echo "留言成功!";
}
echo " <a href='fabu.php'>继续留言</a> ";
echo " <a href='main.php'>查看我的留言</a> ";
?>

第五步:信息处理页面xx-chuli.php

实现功能:点击最后一条留言内容,跳转到上面第二图,返回我的留言查看会发现最后一条信息变成已读

代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style> .aa{
height: 200px;
width: 300px;
margin-left: 100px;
border: 1px solid black;
}
</style>
</head>
<body> <?php
session_start();
$ids = $_GET["ids"];
$zrname=$_SESSION["username"];
//防止用户绕过登录 if(empty($_SESSION["username"]))
{
header("location:denglu.php");
exit;
} //var_dump($ids);
//var_dump($_SESSION["username"]); require "DB.class.php";
$db =new DB();
//调取登陆者的姓名
$sql = "select name from yuangong where username = '{$zrname}'";
$arr = $db->query($sql);
$zrname=$arr[0][0];
//var_dump($zrname); //获取发送者的姓名
$sql2 = "select sender from chenai where ids='{$ids}'";
$arr2 = $db->query($sql2);
$name=$arr2[0][0];
//var_dump($name); echo $zrname.", 这是".$name."给您的留言:"."</br> </br>"; $sql3 = "select comment from chenai where ids='{$ids}'";
$arr3 = $db->query($sql3);
$nr=$arr3[0][0]; echo "<div class='aa'> {$nr} </div>"; //改变是否已读的状态
$sql4 = "update chenai set states=1 where ids='{$ids}'";
$db->query($sql4,0);
//echo "<a href='zt-chuli.php?ids={$ids}'>我的留言</a>";
// 这样也可以传值
//echo "<a href='fabu.php'>去留言</a>";
?>
<a href="main.php">我的留言</a> <a href="fabu.php">去留言</a>
</body>
</html>

如果不想查看内容,可直接点击未读也可以转成已读:zt-chuli.php

<?php
$ids = $_GET["ids"]; require "DB.class.php";
$db =new DB();
$sql = "update chenai set states=1 where ids='{$ids}'"; var_dump($db->query($sql,0));
if($db->query($sql,0)){
header("location:main.php");
} ?>

 第六步退出登录exit.php

<?php
session_start();
unset($_SESSION["username"]);
header("location:denglu.php");
?>

到这一步,一个简单的留言功能就可以实现了~~~~

用php(session)实现留言板功能----2017-05-09的更多相关文章

  1. php实现留言板功能

    这个小小的留言板功能适合班级内或者公司内部之间的讨论,对话和留言,非常的方便,更重要的是无需网络,对于公司管理层来说是非常乐于常见的, 下面是这个留言板的写法: 1 首先是登录页面: <form ...

  2. 使用PHP连接数据库实现留言板功能

    PHP实现留言板功能: 1 首先是登录页面: <!DOCTYPE html><html>    <head>        <meta charset=&qu ...

  3. jsp中运用application实现共享留言板功能

    jsp中application的知识点总结: 1.一个Web应用程序启动后,将会自动创建一个application对象,在整个应用程序的运行过程中只有这一个application对象,即所有访问该网站 ...

  4. Web开发从零单排之二:在自制电子请帖中添加留言板功能,SAE+PHP+MySql

    在上一篇博客中介绍怎样在SAE平台搭建一个html5的电子请帖网站,收到很多反馈,也有很多人送上婚礼的祝福,十分感谢! web开发从零学起,记录自己学习过程,各种前端大神们可以绕道不要围观啦 大婚将至 ...

  5. 利用反馈字段给帝国cms添加留言板功能(图文教程)

    帝国cms的插件中提供信息反馈字段,很多人却不会用.这里谢寒教大家如何来给自己的帝国cms网站添加留言板功能 1.找到添加地址 2.添加字段 3.你可以在字段中添加多种字段类型(有文本域,单行文本框, ...

  6. JS原生编写实现留言板功能

    实现这个留言板功能比较简单,所以先上效果图: 实现用户留言内容,留言具体时间. <script> window.onload = function(){ var oMessageBox = ...

  7. 原生JS实现简单留言板功能

    原生JS实现简单留言板功能,实现技术:css flex,原生JS. 因为主要是为了练手js,所以其中布局上的一些细节并未做处理. <!DOCTYPE html> <html lang ...

  8. python完成留言板功能

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8&quo ...

  9. Vue之简易的留言板功能

    今天我将带大家通过Vue的todolist案例来完成一个简易的网页留言板! LES'T GO! 首先我们需要在页面上搭建一个input文本输入框,并设置提交按钮,通过循环指令来完成输入框的信息提交! ...

随机推荐

  1. 【树莓派】Linux 测网速及树莓派源

    这篇文章比较杂,其中包含三点:linux环境中测试网络速度,树莓派下载软件的源,部分我写好的脚本: 一.Linux 测网速 Linux 测网速: sar -n DEV 1 100 1代表一秒统计并显示 ...

  2. ECSHOP info: Can't Connect MySQL Server(localhost:3306)!

    今天对服务器压力测试后,某个公司电脑的页面显示标题所示,别人电脑正常.故让她清理cookie.无效.重启MySQL后问题解决.

  3. SQL AlawaysOn 之四:故障转移集群

    声明,故障转移集群,仅安装在SQL服务器中,域服务器不能和SQL服务器一起加入集群. 1.添加故障转移集群,下一步 2.安装 3.在域控制服务器上的管理工具里打开故不障转移集群管理器,选择创建集群 4 ...

  4. Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)

    (一)Eclipse中的快捷键:  ctrl+shift+f自动整理选择的java代码 alt+/ 生成无参构造器或者提升信息 alt+shift+s+o 生成带参构造 ctrl+shift+o快速导 ...

  5. MySql Table错误:is marked as crashed and last (automatic?) 和 Error: Table "mysql"."innodb_table_stats" not found

    一.mysql 执行select 的时候报Table错误:is marked as crashed and last (automatic?) 解决方法如下: 找到mysql的安装目录的bin/myi ...

  6. centos6.5用tomcat安装jenkins

    1下载jdk并安装配置环境变量 # cd /opt/app # .0_45.tar.gz # vi /etc/profile JAVA_HOME=/opt/app/jdk1..0_45 CLASSPA ...

  7. Linux之tr命令

    tr - translate or delete characters 删除或替换文字信息 参数: -d  删除字符串 -s  删除重复的字符串只保留一个 [root@BASE ~]# cat c.t ...

  8. pyqt样式表语法笔记

    pyqt样式表语法笔记 pyqt QSS python 样式表 因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方便得多 ...

  9. [python爬虫]爬取学校教务处成绩

    学校教务处网站 登陆窗口 表单数据 观察登陆窗口和提交的表单数据可知只要将账号.密码.验证码正确赋值提交即可模拟登陆. 账号和密码都有,问题的关键就在验证码上. 右键验证码图片审查观察源码如下图: 刚 ...

  10. Java EE基础之JSP(三)

         原来准备简单点,用一篇文章介绍完JSP的,没想到细节很多.这是第三篇也是最后一篇,这三篇文章介绍了基本的JSP知识,很多名词概念和用法,一定要在实践项目中使用之后才会有更加亲切的体会.第三篇 ...