今天还在写VipSystem Pro的授权部分,用户授权后,生成匹配该用户的唯一的php文件集合(在一个目录下),然后进行zip下所并弹出下载。
这个临时生成的zip文件存放在我指定的一个目录。每个用户授权不同的功能,都会产生一个唯一的zip压缩文件。用户多了,服务器会存放很多zip文件。这时候,就需要设置一个过期时间,删除这些文件。留给用户一个下载有效期。即能保证空间不被过多占用,也能保证授权文件不被恶意下载。
截图中的是生成的临时文件。
通过如下代码删除
/**
* 名称:删除超过指定时间web服务器指定目录下,指定文件。
* 时间:2016-10-24 20:24
* 作者:千年骚狐
*/
/**
* 获取目录下文件列表
* $dir 为文件的绝对路径
* $all 如果该目录下还有文件夹,是否进行搜索。默认true,搜索。
*/
function list_dir($dir,$all=true){
$result = array();
if (is_dir($dir)){ //目录存在
$file_dir = scandir($dir); //返回指定目录中的文件和目录的数组。
foreach($file_dir as $file){ //遍历数组中的文件和目录
//iconv('gbk','utf-8',$file); //如果目录中存在中文名称,可以使用本条
if ($file == '.' || $file == '..'){ //过滤掉当前目录'.'和上一级目录'..'
continue;
}
elseif (is_dir($dir.$file) && $all==true){ //如果路径为目录,则继续遍历其中的文件以及目录
$result = array_merge($result, list_dir($dir.$file.'/'));
}
else{ //如果路径为文件则加入输入数组
array_push($result, $dir.$file);
}
}
}
return $result; //输出文件路径
}
/**
* 删除超时的指定文件
* $file_dir_array 是文件路径的数组
* $file_type 指定要删除文件的文件格式
* $expiration_time 设置超时时间,单位为分钟
*/
function delete_zip_file($file_dir_array,$file_type,$expiration_time){
foreach($file_dir_array as $file_name){ //遍历数组
if(is_file($file_name)){ //如果为文件
$file_info = pathinfo($file_name); //返回路径的信息
if($file_info['extension'] == $file_type){ //文件后缀为指定的$file_type
$create_time = filectime($file_name); //获得文件创建时间
$expiration_time = strtotime("+".$expiration_time." minutes",$create_time); //设置超时时间
if($expiration_time < time()){ //创建的文件时间超过指定时间
unlink($file_name); //删除该文件
}
}
}
}
}
/**
* 调用方法
* 比如,我想删除D:\phpStudy\WWW\web\wp-content\plugins\my_plugins\temp目录下,超过创建时间5分钟的zip文件。
*/
//定义路径
$dir = 'D:\phpStudy\WWW\web\wp-content\plugins\my_plugins\temp';
//定义是否搜索子级目录的文件,这里我不搜索
$all = false;
//获得定义路径下载文件目录数组
$file_dir_array = list_dir($dir,$all);
//定义要删除的文件格式
$file_type = 'zip';
//定义超时时间,单位:分
$expiration_time = '5';
//执行删除命令
delete_zip_file($file_dir_array,$file_type,$expiration_time);
?>
我觉得给这个插件做的授权系统,都可以独立出来一个授权软件了。其中还会生成对应每一个用户的独立的key文件。
这些是密文,而不是简单的加密所用特征码。他们是可以通过密钥翻译成字符串的。
感觉自己好高端,哈哈。