为了不迷路,请关注我的公众号 “旋转柚子”,我会分享更多自创文章,希望与您一起学习一起进步。正文开始:
用了大概一个星期的时间将细说PHP这本书的基础看完了,然后就想着能是否动手做一个demo巩固一下自己的知识,经过尝试写了一个文本存储的留言板,当然实际开发中很少有用TXT文件的形式对数据进行存储,当然这只是我们进行入门练手的一个小demo,后面我会用数据库的形式对留言板的内容进行存储和读取,以及使用thinkPHP框架中MVC模式写一个留言板,用到的也是数据库的形式对数据进行存储和读取,今天我们就只做文本形式存储的留言板。
我们先来看一下留言板的目录:
其中目录中关于每个文件功能的介绍如下:
–index.php 添加界面,留言板的主界面
–doAdd.php 获取表单中留言信息,并执行添加操作
–show.php 显示留言信息的界面
–del.php 执行删除留言信息
–liuyan.txt 用于储存留言信息,不需要单独建立,运行时候会自动建立该txt文件
–menu.php 对重复性很高的代码进行封装,即导航栏内容
首先把menu.php的内容贴出来:
(这是每个页面都重复的内容,所以我们抽取出来,这样便于后期的维护,这里使用这种方法主要是介绍这种结构的使用,在这个demo中的作用并不是很大)
<h2>我的留言板</h2>
<a href="index.php">添加留言</a>
<a href="show.php">查看留言</a>
<hr width="%90" />
OK,让我们来看看index.php 的内容:
<?php
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>我的留言板</title>
</head>
<body bgcolor="#cccccc">
<center>
<h2>我的留言板</h2>
<a href="index.php">添加留言</a> <a href="show.php">查看留言</a>
<hr width="%90" />
<h3>添加留言</h3>
<form action="doAdd.php" method="post">
<table width="380" border="0" cellpadding="4">
<tr>
<td align="right">标题:</td>
<td><input type="text" name="title" /></td>
</tr>
<tr>
<td align="right">留言者:</td>
<td><input type="text" name="author" /></td>
</tr>
<tr>
<td align="right" valign="center">留言内容:</td>
<td><textarea name="content" rows="5" cols="30"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="提交" />
<input type="reset" value="重置" /></td>
</tr>
</table>
</form>
</center>
</body>
</html>
把页面搭建出来:
然后再对留言板功能的补充:
即写doAdd.php,del.php,show.php等文件
首先写添加功能,doAdd.php:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>我的留言板</title>
</head>
<body>
<center>
<?php
include 'menu.php'; // 导入网站的导航栏
?>
<h3>添加留言</h3>
<?php
// 执行留言信息添加操作
// 1.获取要添加的留言信息,并且补上其他辅助消息(IP地址,添加时间)
$title = $_POST['title']; // 获取留言标题
$author = $_POST["author"]; // 获取留言者
$content = $_POST["content"]; // 留言内容
$ip = $_SERVER["REMOTE_ADDR"]; // IP地址
$addtime = time(); // 添加时间 (时间戳的格式)
// 2.拼装(组装)留言信息
$ly = "{$title}##{$author}##{$content}##{$ip}##{$addtime}@@@";
// 3.将留言信息追加到liuyan.txt文件中
$info = file_get_contents("liuyan.txt"); // 获取所有以前的留言
file_put_contents("liuyan.txt", $info . $ly); // 覆盖式的写入,会对原有数据进行覆盖
// 4.输出留言成功
echo "留言成功!谢谢...";
?>
</center>
</body>
</html>
具体的解释在文中见注释内容。
下面是展示的页面,show.php:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>我的留言板</title>
</head>
<body>
<center>
<?php
include 'menu.php'; // 导入网站的导航栏
?>
<h3>查看留言</h3>
<table border="1" width="700">
<tr>
<th>留言标题</th>
<th>留言人</th>
<th>留言内容</th>
<th>IP地址</th>
<th>留言时间</th>
<th>操作</th>
</tr>
<?php
// 获取留言信息,解析后输出到表格中
// 1,从留言liuyan.txt信息文件中获取留言信息
$info = file_get_contents("liuyan.txt");
// 2,取出留言内容最后的三个@@@符号
$info = rtrim($info, "@");//什么意思
if (strlen($info)>=8){
// 3,以@@@符合拆分留言信息为一条一条的(将留言信息以@@@的符号拆分成留言数组)
$lylist = explode("@@@", $info);
// 4,遍历留言信息数组,对每条留言做再次解析
foreach ($lylist as $key => $value) {
$ly = explode("##", $value); // 将每条留言信息以##拆分成每个留言字段
echo "<tr>";
echo "<td>{$ly[0]}</td>";
echo "<td>{$ly[1]}</td>";
echo "<td>{$ly[2]}</td>"; // 字符串截取函数
echo "<td>{$ly[3]}</td>";
echo "<td>" . date("Y-m-d H:i:s", $ly[4] + 8 * 3600) . "</td>"; // 双引号之中是不能使用函数的
echo "<td><a href='del.php?id={$key}'>删除</a></td>";
// echo "<td><a href='javascript:dodel({$key})'>删除</a></td>";
// 如何进行链接传值
echo "</tr>";
// echo $value."<br>";
}
}
?>
</table>
</center>
</body>
</html>
展示页面效果图如下:
下面创建删除页面的文件:del.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>我的留言板</title>
</head>
<body>
<center>
<?php
include 'menu.php'; // 导入网站的导航栏
?>
<h3>删除留言</h3>
<?php
// 执行删除指定ID的留言信息
// 1,获取要删除留言的 id号
$id = $_GET["id"]; // url地址提交都是get方式提交的
// 2,从留言liuyan.txt信息文件中获取留言信息
$info = file_get_contents("liuyan.txt");
// 3,以@@@符合拆分留言信息为一条一条的(将留言信息以@@@的符号拆分成留言数组)
$lylist = explode("@@@", $info);
// 4,使用unset删除指定ID的留言
unset($lylist[$id]);
// 5,还原留言信息为字串,并写回留言文件:liuyan.txt
$ninfo = implode("@@@", $lylist);
file_put_contents("liuyan.txt", $ninfo);
// 6
echo "删除成功!!";
?>
</table>
</center>
</body>
</html>
添加和删除成功的跳转提示效果如下:
到此,我们的一个小demo已经顺利完成了,我一直坚信,只有在实战中才能锻炼出或者能牢记一些技术和知识,so,赶紧动起手来,操练起来吧。
为了不迷路,请关注我的公众号 “旋转柚子”,我会分享更多自创文章,希望与您一起学习一起进步。