PHP实例之留言板(文本存储)

为了不迷路,请关注我的公众号 “旋转柚子”,我会分享更多自创文章,希望与您一起学习一起进步。正文开始:

用了大概一个星期的时间将细说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="提交" />&nbsp;
					<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,赶紧动起手来,操练起来吧。

为了不迷路,请关注我的公众号 “旋转柚子”,我会分享更多自创文章,希望与您一起学习一起进步。

  • 10
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值