递归生成程序文件MD5 Hash
基于保护程序源代码或作者版权等原因,你可能不希望别人修改你的源代码,这时可以给每个程序文件生成一个MD5 HASH值,然后安装的时候对每个文件的MD5进行对比,方可知道文件是否被修改过。
用PHP对PHP文件进行递归MD5的速度是非常快的,我在本机用JBLOG进行测试,共162个文件,耗时仅为1.2秒左右。以下是程序的源代码:
- <?php
- /*
- (C) 2008-2009 lisijie.com.cn.
- $QQ : 22823459
- $Email : lisijie86@gmail.com
- $Url : http://www.lisijie.com.cn
- */
- $dir = 'jblog'; //要生成md5 hash的目录
- $ext = array('.php'); //要进行md5的文件扩展名
- $content = '';
- $count = 0;
- if ( is_dir($dir) ) {
- $stime = getmtime();
- md5_dir($dir);
- file_put_contents('hash.txt', $content);
- $etime = getmtime();
- exit('共<b>'.$count.'</b>个文件,耗时:'.number_format($etime-$stime, 6).'秒');
- } else {
- exit($dir.' 目录不存在');
- }
- function getmtime() {
- $time = explode(' ', microtime());
- return $time[0]+$time[1];
- }
- function md5_dir($dir) {
- global $ext;
- if ( $handle = opendir($dir) ) {
- while ( ($file = readdir($handle)) !== false ) {
- if ( $file != '.' && $file != '..' ) {
- $path = $dir.DIRECTORY_SEPARATOR.$file;
- if ( is_dir($path) ) {
- md5_dir($path);
- } elseif ( in_array(strrchr($file, '.'), $ext) ) {
- $GLOBALS['content'] .= "{$path}\t".md5_file($path)."\n";
- $GLOBALS['count'] ++;
- }
- }
- }
- }
- }
- ?>
由于用到了 file_put_contents() 函数,所以需要PHP5以上版本,如果你的版本小于5,可以改为 fopen()、fwrite()等函数实现。
4 条评论
发表评论
-
April 27th, 2009 at 15:51 pm[回复]我现在用的你的博客程序,怎么在首页显示图片?
-
April 28th, 2009 at 18:59 pm[回复]可以添加个相册、然后添加个特效,就好了,呵呵
- Jesse reply at 2009-04-29 11:25

- 下一版会提供相册。
-
April 30th, 2009 at 0:39 am[回复]如果能加上留言版和音乐盒就更好了~