php+dbfile开发小型留言本


Posted in PHP onOctober 09, 2006

最近一直在用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 全部选择 然后拷贝]

这个留言本还很简单,功能上还不健全,比如没有分页等,还可以继续完善。:-)

PHP 相关文章推荐
改进的IP计数器
Oct 09 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
php递归创建目录的方法
Feb 02 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
PHP封装的简单连接MongoDB类示例
Feb 13 PHP
简单的php购物车代码
Jun 05 PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 PHP
用 php 编写的日历
Oct 09 #PHP
第十三节 对象串行化 [13]
Oct 09 #PHP
第七节 类的静态成员 [7]
Oct 09 #PHP
用PHP实现文件上传二法
Oct 09 #PHP
PHP安装全攻略:APACHE
Oct 09 #PHP
用PHP生成自己的LOG文件
Oct 09 #PHP
VFP与其他应用程序的集成
Oct 09 #PHP
You might like
PHP 截取字符串专题集合
2010/08/19 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
跟老齐学Python之Python文档
2014/10/10 Python
简单介绍Python中的round()方法
2015/05/15 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
Python3解释器知识点总结
2019/02/19 Python
Django之PopUp的具体实现方法
2019/08/31 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
android面试问题与答案
2016/12/27 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis