应用实践一:基于文本的简易blog系统

该应用涉及知识点: 

  • 简单的web设计
  • 各种PHP函数的使用
  • 全局了解一个项目从设计到开发的过程

这个blog系统的基本功能:

  • 显示日志内容
  • 发布日志
  • 管理日志(删除/编辑日志)
  • 用户的登陆和退出
  • 日志的归档显示

需要创建的页面如下:

  • 显示日志内容的页面
  • 发布日志内容的页面
  • 编辑日志内容的的页面
  • 删除日志内容的页面
  • 用户登录的页面

1.实现blog文章的显示

实现从文件中读取日志的内容并将其显示在页面上

(1)先建立一个文本文件

路径如下

(2)编写php程序读出文件内容,并向浏览器输出

(这里注意一下,你打开的文档文本的编码方式要和php文件的编码方式相同,都是utf-8)

<?php

header("content-type:text/html;charset=utf-8");
$file_name = 'content/201112/1.txt'; //存储日志内容的文件

if(file_exists($file_name)){  //打开文件前先判断文件是否存在

	$fp = @fopen($file_name, 'r'); //以只读的方式打开文件

	if($fp){
		flock($fp, LOCK_SH); //文件加锁
		$result = fread($fp, 1024); //读出文件内容并以字符串的形式赋给变量result
	}

	flock($fp, LOCK_UN); //解锁文件(无论共享或独占都用lock_un解锁)
	fclose($fp);
}

//将字符串内容按 | 分割后存入数组中
$content_array = explode('|', $result);

//以下的代码将日志的内容输出到浏览器
echo '<h1>我的blog</h1>';
echo '<b>日志标题</b>'.$content_array[0];
echo '</br><b>发表时间</b>'.date('Y-m-d H:i:s',$content_array[1]);
echo '<hr>';
echo $content_array[2];

?>

(3)通过url向程序传入参数的实现

上面的那个代码只能读取某特定时刻的日志文件,这肯定是不能满足实际需要的。显示blog内容的程序应该能够访问每一天的日志文件,这可以通过URL向程序传入参数实现,不同的参数值代表不同的时间,程序根据这个参数值的不同,完成访问不同目录下的日志文件,并获取该文件中的数据。比如,传入参数entry=20112-02,表示访问目录201112下的02.txt文件。从这个参数可以看出,它的值实际反应出了日志路径。

<?php
header("content-type:text/html;charset=utf-8");

if (!isset($_GET['entry'])) {
	echo "请求参数错误";
	exit();
}
$path = substr($_GET['entry'],0,6); //字符串201112-02的前6位代表的是日志的存储目录201112
$entry = substr($_GET['entry'],7,9); //日志文件名称

$file_name = 'content/'.$path.'/'.$entry.'txt'; //拼接出完整的日志路径

if (file_exists($file_name)) { //判断文件是否存在
	$fp = @fopen($file_name,'r'); //以只读的方式打开文件
	if($fp){
		flock($fp, LOCK_SH); //文件加锁
		$result = fread($fp, 1024); //读出文件
	}
	flock($fp, LOCK_UN); //解锁文件
	fclose($fp); //关闭文件
}

//将字符串内容按 | 分割后存入数组中
$content_array = explode('|', $result);

//将日志输出
echo "<h1>我的blog</h1>";
echo '<b>日志标题</b>'.$content_array[0];
echo '</br><b>发表时间</b>'.date('Y-m-d H:i:s',$content_array[1]);
echo '<hr>';
echo $content_array[2];
?>

(4)完善用户页面

就大概写个html页面

2.实现blog文章的添加功能

在页面增加一个含有文本框和提交按钮的html页面,并以add.php保存

<?php
header("content-type:text/html;charset=utf-8");
$ok = true;
if(isset($_POST['title']) && isset($_POST['content'])){
		$ok = true;

		$title = trim($_POST['title']);  //获取日志标题 并去除字符串两侧的空白字符
		$content = trim($_POST['content']); //获取日志内容
		$date = time(); //date()第二个参数默认是时间戳,既time()的返回值
		$blog_str = $title.'|'.$date.'|'.$content; //将上述内容合并成字符串
		//echo $blog_str;

		$ym = date('Ym',time());
		$d = date('d',time());
		$time = date('His',time());

		$folder = 'content/'.$ym; //根据年月设置目录名
		$file = $d.'-'.$time.'txt';//根据时间和日来设置文件名
		$filename = $folder.'/'.$file;
		$entry = $ym.'-'.$d.'-'.$time;
		echo $entry;

		if(file_exists($folder)==false){
			if(!mkdir($folder)){
			//$ok=false;
			//$msg='<font color="red">创建目录异常</font>';
		}
	}

	$fp = @fopen($filename,'w');//打开文件
	if($fp){
		flock($fp,LOCK_EX);//要取得独占锁定(写入的程序)
		$result = fwrite($fp,$blog_str);//写入文件
		$lock = flock($fp,LOCK_UN);
		fclose($fp);
	}
	if(strlen($result)>0){
		//$ok=false;
		$msg='日志添加成功,<a href="post1.php?entry='.$entry.'">查看该文章</a>';
		echo $msg;
	}
}


?>




<!DOCTYPE html>
<html>
<head>
	<title>my blog</title>
	<meta charset="utf-8">
	<link type="text/css" rel="stylesheet" href="css/style.css"/>
</head>


<!-- javascript -->
<script type="text/javascript">
	
</script>

<body>

<div class="containor">

	<div class="head">
		<h1>MY BLOG</h1>
		<div class="title">
			<h4>在这里自定义内容....</h4>
		</div>
	</div>
	<div class="main">
<!-- 左板块 -->
		<div class="left">
			<div class="blog_entry">
				<div class="blog_title">
					<p><strong>添加新的日志</strong></p>
				</div>
				<div class="blog_body">
					<div class="blog_date"></div>
					<table border="0">
						<form method="POST" action="add.php">
							<tr><td>日志标题:</td></tr>
							<tr><td><input type="text" name="title" size="100"></td></tr>
							<tr><td>日志内容:</td></tr>
							<tr><td><textarea name="content" style="resize:none;" cols="140" rows="20"></textarea></td></tr>
							<tr><td><input type="submit" value="提交"></td></tr>
						</form>
					</table>

				</div>
			</div>
		</div>

<!-- 右板块 -->
		<div class="right">
			<div class="sidebar">
				<div class="menu_title">
					关于<br>


				</div>
				<div class="menu_body">
					关于内容
				</div>
			</div>
		</div>

	</div>
<!-- 底部 -->	
	<div class="footer">

		<h5>copyright 2018</h5>
		<h5>xxxxxxxxx</h5>
	</div>
<!-- end -->
</div>
</body>
</html>

点击查看该文章


3.实现登录功能

已经完成了blog的浏览和添加功能,现在做用户的登录和退出功能。

用户的登录需要密码和用户名,这里将用户的用户名和密码配置到php文件里,登录程序将用户输入的和配置文件里的用户名和密码进行比较。建立一个auth.php文件,存放在blog系统的config目录下。

<?php
$auth = array();
$auth['user'] = 'admin';
$auth['passwd'] = '12345';
?>

emmmmm放弃了

中间遇到了一点困难,因为对本地的文件操作,用编程语言创建文件和文件夹,打开文件什么的不喜欢。。就不想操作,也就不熟悉,等国庆再回头看一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值