一个PHP初学者,在学会PHP的一点知识之后,总希望有实用的价值, 通常都是从
网页计数器、留言板开始的。它不需要数据库,只要读写文件就能实现计数或留言
记录。初级教材中所提供的留言板非常简单,虽然可以使用,但实用价值不大。这
种留言板只用一个文件,如果留言内容多的话,整个页面就拉得很长,给人带来不
便,所以解决简单留言本留言多了不能分页的问题是增加它实用性的第一步。
这里我就用了表单和PHP读写文件的功能使一个简单留言板实现了它的自动分页功
能,当留言超过一定长度时,会自动增加一个文件,把新留言添到新文件中。查阅
时可以通过下拉列表得到。源程序如下(这里去掉一些增加页面外观效果的标记)具
体的实用例子请看http://jinxbin.oso.com.cn/guestbook/guest.php
************guest.php源文件****************
<html>
<body><form action="guest.php">
<a href="#1">写留言</a> 翻到:
<select name="pgselect">
<option value="">请选择</option>
<option value="pre">前一页</option>
<option value="next">后一页</option>
<option value="start">起始页</option>
<option value="">最新页</option>
</select>
<input type="submit" name="Submit3" value="go">
</form>
<p align=center> 留 言 板 </p>
<?php
$init=fopen("book1.txt","a+");fclose($init);//第一次使用时可自动建立一个
文件
if($pgselect==""){//没有选择翻页或选最新页时
$x=1;
$bk="book".$x.".txt";
while(file_exists($bk))
{$x++;$bk="book".$x.".txt";}//寻找最后生成的文件
$x--;$bk="book".$x.".txt";
$fo = fopen($bk,"r"); //打开最新文件并读入
$print = fread($fo,filesize($bk));
fclose($fo);
print "$print";
$page=fopen("page.txt","w"); //写入当前文件号
fwrite($page,$x);
fclose($page);
}
else //当选择页面时
{
$page=fopen("page.txt","r");
$x=fread($page,filesize("page.txt"));
fclose($page);
if($pgselect=="pre"&& $x>1) $x-=1;//选前一页限制到第1页为止
else if($pgselect=="next") $x+=1;//选后一页时增加1
else if($pgselect=="start") $x=1;//选第1页
$bk="book".$x.".txt";
if(!file_exists($bk))$x--;//如文件不存在则减少页号1
$bk="book".$x.".txt";
$fo = fopen($bk,"r");
$print = fread($fo,filesize($bk));
fclose($fo);
print "$print";
$page=fopen("page.txt","w");//写入当前页号
fwrite($page,$x);
fclose($page);
}
?>
<a href name="1"><p>
<form method="POST" action="post.php" name="form1">
<table border="2" cellspacing="2" cellpadding="2"
align="center">
<tr>
<td>姓名:</td>
<td>
<input type="text" name="name" size="30" >
来自:
<input type="text" name="city" size="30">
</td>
</tr>
<tr>
<td>Email:</td>
<td>
<input type="text" name="email" size="30" >
主页:
<input type="text" name="homepage" size="30">
</td>
</tr>
<tr>
<td height="133">内容:</td>
<td height="133">
<div align="center">
<textarea rows="6" name="msg"
cols="70"></textarea>
<br>
</div>
</td>
</tr>
</table>
<div align="center">
<input type="submit" value="提交" name="B1" >
<input type="reset" value="重写" name="B2">
</div>
</form>
</body>
</html>
********************以下为post.php源文件******************。
<html>
<head>
<title>提交成功!</title>
<meta http-equiv="Refresh" content="2.5;url=guest.php#1">
</head>
<body>
<?php
print "<center><p><font size=+3>提交成功!</font></p></center>";
if ($name=="")$name="guest";
if($msg=="")$msg="小弟到此一游";
$time = date(Y年m月d日H点i分s秒);
$wbook = "<hr>$time,$name 留言:<p>$msg<p>来自:$cityt<a
href=mailto:$email>$email</a>主页:<a href=$homepage>$homepage</a></p>";
$x=1;
$bk="book".$x.".txt";
while(file_exists($bk))//寻找最后一个文件并写入
{$x++;$bk="book".$x.".txt";}
$x--;
$bk="book".$x.".txt";
$fo = fopen($bk,"a+");
if(filesize($bk)<1000) //此处设置每页大小
{fwrite($fo,$wbook);
fclose($fo);
}
else
{ $x++;
$bk="book".$x.".txt";
$fo=fopen($bk,"a+");
fwrite($fo,$wbook);
fclose($fo);
}
?>
</body>
</html>
*********************************************************
只要把这两个文件存入同一目录,并把该目录的权限设为"777"就可以让留言板自动分页了。
|