/** * 文件扫描 * @param $filepath 目录 * @param $subdir 是否搜索子目录 * @param $ex 搜索扩展 * @param $isdir 是否只搜索目录 * @param $md5 是否生成MD5验证码 * @param $enforcement 强制更新缓存 */ function scan_file_lists($filepath, $subdir = 1, $ex = '', $isdir = 0, $md5 = 0, $enforcement = 0) { static $file_list = array(); if ($enforcement) { $file_list = array(); } $flags = $isdir ? GLOB_ONLYDIR : 0; $list = glob($filepath . '*' . (!empty($ex) && empty($subdir) ? '.' . $ex : ''), $flags); if (!empty($ex)) { $ex_num = strlen($ex); } foreach ($list as $k => $v) { $v1 = str_replace(PHPCMS_PATH, '', $v); if ($subdir && is_dir($v)) { scan_file_lists($v . DIRECTORY_SEPARATOR, $subdir, $ex, $isdir, $md5); continue; } if (!empty($ex) && strtolower(substr($v, -$ex_num, $ex_num)) == $ex) { if ($md5) { $file_list[$v1] = md5_file($v); } else { $file_list[] = $v1; } continue; } elseif (!empty($ex) && strtolower(substr($v, -$ex_num, $ex_num)) != $ex) { unset($list[$k]); continue; } } return $file_list; }
/** * 创建MD5 */ public function md5_creat() { set_time_limit(120); $pro = isset($_GET['pro']) && intval($_GET['pro']) ? intval($_GET['pro']) : 1; Loader::helper('scan:global'); switch ($pro) { case '1': // 统计文件 $msg = L('please_wait'); ob_start(); include $this->view('md5_creat'); ob_flush(); ob_clean(); $list = scan_file_lists(BASE_PATH, 1, 'php', 0, 1); $list = "<?php\nreturn " . stripcslashes(var_export($list, true)) . ";\n?>"; File::write(DATA_PATH . 'scan/md5_' . date('Y-m-d') . '.php', $list); echo '<script type="text/javascript">location.href="?app=scan&controller=index&action=md5_creat&pro=2"</script>'; break; case '2': showmessage(L('viewreporttrue'), U('scan/index/init')); break; } }
public function md5_creat() { set_time_limit(120); $pro = isset($_GET['pro']) && intval($_GET['pro']) ? intval($_GET['pro']) : 1; pc_base::load_app_func('global'); switch ($pro) { case '1'://统计文件 $msg = L('please_wait'); ob_start(); include $this->admin_tpl('md5_creat'); ob_flush(); ob_clean(); $list = scan_file_lists(ZLCMS_PATH, 1, 'php', 0, 1); setcache('md5_'.date('Y-m-d'), $list, 'scan'); echo '<script type="text/javascript">location.href="?m=scan&c=index&a=md5_creat&pro=2&pc_hash='.$_SESSION['pc_hash'].'"</script>'; break; case '2': showmessage(L('viewreporttrue'),'?m=scan&c=index&a=init'); break; } }