文件类php,文件操作类

[php]代码库<?php

/**

* 文件操作类

*/

!defined('PATH_ADMIN') && exit('Forbidden');

class FileModel{

/**

* 写文件

*

* @param string $filename

* @param string $data

* @param string $method

* @param int $iflock

* @param int $check

* @param int $chmod

* @return boolean

*/

public static function write($filename, $data, $method = 'wb+', $iflock = 1, $check = 1, $chmod = 1){

if(empty($filename)){

return false;

}

if($check && strpos($filename,'..') !== false){

return false;

}

if(!is_dir(dirname($filename)) && !self::mkdir_recursive(dirname($filename),0777)){

return false;

}

if(false == ($handle = fopen($filename,$method))){

return false;

}

if($iflock){

flock($handle,LOCK_EX);

}

fwrite($handle,$data);

touch($filename);

if($method == "wb+"){

ftruncate($handle,strlen($data));

}

fclose($handle);

$chmod && @chmod($filename,0777);

return true;

}

/**

* 读文件

*

* @param string $filename

* @param string $method

* @return string

*/

public static function read($filename, $method = "rb"){

if(strpos($filename,'..') !== false){

return false;

}

if($handle = @fopen($filename,$method)){

flock($handle,LOCK_SH);

$filedata = @fread($handle,filesize($filename));

fclose($handle);

return $filedata;

}else{

return false;

}

}

/**

* 删除文件

*

* @param string $filename

* @return boolean

*/

public static function rm($filename){

if(strpos($filename,'..') !== false){

return false;

}

return @unlink($filename);

}

/**

* 用递归方式创建目录

*

* @param string $pathname

* @param $mode

* @return boolean

*/

public static function mkdir_recursive($pathname, $mode){

if(strpos($pathname,'..') !== false){

return false;

}

$pathname = rtrim(preg_replace(array(

'/\\{1,}/',

'/\/{2,}/'

),'/',$pathname),'/');

if(is_dir($pathname)){

return true;

}

is_dir(dirname($pathname)) || self::mkdir_recursive(dirname($pathname),$mode);

return is_dir($pathname) || @mkdir($pathname,$mode);

}

/**

* 用递归方式删除目录

*

* @param string $file

* @return boolean

*/

public static function rm_recurse($file){

if(strpos($file,'..') !== false){

return false;

}

if(is_dir($file) && !is_link($file)){

foreach(scandir($file) as $sf){

if($sf === '..' || $sf === '.'){

continue;

}

if(!self::rm_recurse($file . '/' . $sf)){

return false;

}

}

return @rmdir($file);

}else{

return unlink($file);

}

}

/**

* 引用文件安全检查

*

* @param string $filename

* @param int $ifcheck

* @return boolean

*/

public static function check_security($filename, $ifcheck = 1){

if(strpos($filename,'http://') !== false) return false;

if(strpos($filename,'https://') !== false) return false;

if(strpos($filename,'ftp://') !== false) return false;

if(strpos($filename,'ftps://') !== false) return false;

if(strpos($filename,'php://') !== false) return false;

if(strpos($filename,'..') !== false) return false;

return $filename;

}

/**

* 文件列表

*

* @param string $path //路径

* @param string $type[optional] //类型:file 文件,dir 目录, 缺省 file+dir

* @return array

*/

public static function ls($path, $type = ''){

if(!is_dir($path)){

return false;

}

$files = scandir($path);

array_shift($files);

array_shift($files);

if(!empty($type) && in_array($type,array(

'file',

'dir'

))){

$func = "is_" . $type;

foreach($files as $k => $cur_file){

if(!$func($path . '/' . $cur_file) || $cur_file == '.svn'){

unset($files[$k]);

}

}

}

return $files;

}

}

694748ed64b9390909c0d88230893790.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值