首页 / 网页编程 / PHP / php+dbfile开发小型留言本
最近一直在用php+dbfile开发blog,开发过程中学到了不少东西,于是就试着写了一个小留言本。
这个留言本采用php+dbfile,不需要使用数据库,可以放在blog中使用,比如http://www.customyze.com,这个blog中的Tag Board就是这个留言本。
整个留言本需要四个文件,分别是:board.php、index.php、config.php、admin.php。
board.php用来存储数据,可以先在里面添加了一条留言纪录。代码拷贝框
<?php$Board=array(array(1081410332,"测试","测试留言本","http://www.piscdong.com"));?>
[Ctrl+A 全部选择 然后拷贝]
index.php是留言显示和提交页面。代码拷贝框
<?phprequire_once("board.php");function htmlencode($content){$content=htmlspecialchars($content);$content=preg_replace("/
/i","<br />",$content);return $content;}if($HTTP_SERVER_VARS["REQUEST_METHOD"]=="POST"){$configpath_parts1 = pathinfo($SCRIPT_FILENAME);$time=time();$name=$HTTP_POST_VARS["name"];$url=(preg_match("/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/i",$HTTP_POST_VARS["url"])
$HTTP_POST_VARS["url"]=="")?$HTTP_POST_VARS["url"]:"http://".htmlspecialchars(preg_replace("/https?:///i","",$HTTP_POST_VARS["url"]),ENT_QUOTES);$info=htmlencode($HTTP_POST_VARS["info"]);if($name!="" && $info!=""){$Board[]=array($time,$name,$info,$url);}for($i=0;$i<count($Board);$i++){$bd=current($Board);$s[]=" array(".$bd[0].","".$bd[1]."","".$bd[2]."","".$bd[3]."")";next($Board);}$content="<?php
$Board=array(
".join($s,",
")."
);
?>";$filename=$configpath_parts1["dirname"]."/"."board.php";if(is_writable($filename)
!file_exists($filename)){if(!$handle=fopen($filename,"w")){return false;}if(!fwrite($handle,$content)){return false;}fclose($handle);}else{return false;}header("Location:.");}else{?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>留言本</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></head><body><form method="post" name="form1" action=""><table border="0" cellspacing="5" cellpadding="0" align="center"><tr><td><div style="overflow:auto;height:250px;border:1px dotted #999999;padding:5px;word-wrap:break-word;width:400px;"><?php end($Board);for($i=0;$i<count($Board);$i++){$bd=current($Board);$s[]="<strong>".($bd[3]!=""?"<a href="":"").(preg_match("/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/i",$bd[3])?"mailto:":"").$bd[3].(($bd[3]!="" && !preg_match("/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/i",$bd[3]))?"" target="_blank":"").($bd[3]!=""?"">":"").$bd[1].($bd[3]!=""?"</a>":"").":</strong> ".$bd[2]."<br/><em>-".date("G:i, M j, Y",$bd[0])."</em>";prev($Board);}echo join($s,"<br/><br/>");?></div></td></tr><tr><td align="center">名称:<input type="text" name="name"/> URL/Email:<input type="text" name="url"/><br/><textarea name="info" cols="40" rows="8"></textarea><br/><input type="submit" value="发布"/></td></tr></table></form></body></html><?php } ?>
[Ctrl+A 全部选择 然后拷贝]
config.php中存放的是管理留言本的密码,把密码放在单独一个文件中方便修改。代码拷贝框
<?php $password="123456"; ?>
[Ctrl+A 全部选择 然后拷贝]
admin.php是管理页面,功能很简单,只能删除留言。在删除时需要输入管理密码,管理密码存放在config.php中。代码拷贝框
<?phprequire_once("board.php");require_once("config.php");if(isset($HTTP_POST_VARS["id"]) && $HTTP_POST_VARS["id"]!="" && addslashes($HTTP_POST_VARS["password"])==$password){if(count($Board)>1){unset($Board[intval($HTTP_POST_VARS["id"])]);for($i=0;$i<count($Board);$i++){$bd=current($Board);$s[]=" array(".$bd[0].","".$bd[1]."","".$bd[2]."","".$bd[3]."")";next($Board);}$content="<?php
$Board=array(
".join($s,",
")."
);
?>";$configpath_parts1 = pathinfo($SCRIPT_FILENAME);$filename=$configpath_parts1["dirname"]."/"."board.php";if(is_writable($filename)
!file_exists($filename)){if(!$handle=fopen($filename,"w")){return false;}if(!fwrite($handle,$content)){return false;}fclose($handle);}else{return false;}}header("Location:admin.php");}else{?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>管理留言本</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></head><body><table width="500" border="0" cellspacing="1" cellpadding="5" align="center" bgcolor="#999999"><?php for($i=0;$i<count($Board);$i++){$bd=current($Board);$s[]="<tr><td bgcolor="#".($i%2!=0?"ececec":"ffffff").""><strong>".($bd[3]!=""?"<a href="":"").(preg_match("/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/i",$bd[3])?"mailto:":"").$bd[3].(($bd[3]!="" && !preg_match("/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/i",$bd[3]))?"" target="_blank":"").($bd[3]!=""?"">":"").$bd[1].($bd[3]!=""?"</a>":"").":</strong> ".$bd[2]."<br/><em>-".date("G:i, M j, Y",$bd[0])."</em></td>".(count($Board)>1?"<td bgcolor="#".($i%2!=0?"ececec":"ffffff")."" align="center"><form method="post" action=""><input type="submit" value="删除" /><input type="hidden" name="id" value="".$i."" /><input type="password" name="password" /></form></td>":"")."</tr>";next($Board);}echo join($s,"");?></table></body></html><?php } ?>
[Ctrl+A 全部选择 然后拷贝]
这个留言本还很简单,功能上还不健全,比如没有分页等,还可以继续完善。:-)