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是留言显示和提交页面 。 代码拷贝框 <?php require_once(board.php); function htmlencode($content){ $content=htmlspecialchars($content); $content=preg_replace("/\r/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[]="\tarray(".$bd[0].",".$bd[1].",".$bd[2].",".$bd[3].")"; next($Board); } $content="<?php\n\$Board=array(\n".join($s,",\n")."\n);\n?>"; $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中 。 代码拷贝框 <?php require_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[]="\tarray(".$bd[0].",".$bd[1].",".$bd[2].",".$bd[3].")"; next($Board); } $content="<?php\n\$Board=array(\n".join($s,",\n")."\n);\n?>"; $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 全部选择 然后拷贝] 这个留言本还很简单,功能上还不健全,比如没有分页等,还可以继续完善 。:-) |