파일 처리 Class
컨텐츠 정보
- 15,898 조회
- 9 추천
- 목록
본문
소스
<?
class Filecontrol
{
var $objCommon;
var $sFilename;
function Filecontrol()
{
$this->objCommon = $GLOBALS[objCommon];
}
// ------------------------------------------------------------------------
// 파일의 기준 인덱스를 설정하는 파일 경로를 지정하면 list.cgi로 생성
// ------------------------------------------------------------------------
function number($sSaveRoot)
{
if(!is_file("$sSaveRoot/list.cgi"))
{
$fp = fopen( "$sSaveRoot/list.cgi", w );
if(flock($fp, LOCK_EX))
{
fputs( $fp, "1\\n" );
flock( $fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
$sFilename = 1;
}
else
{
$aList = file("$sSaveRoot/list.cgi");
$sFilename = chop($aList[0]) + 1;
$fp = fopen("$sSaveRoot/list.cgi", "w");
if(flock( $fp, LOCK_EX))
{
fwrite($fp, "$sFilename\\n");
foreach($aList as $value)
{
fwrite($fp, $value);
}
flock( $fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
}
$this->sFilename = $sFilename;
}
function insert($sSaveRoot, &$aData)
{
$this->number($sSaveRoot);
$aData[no] = $this->sFilename;
$aData[wdate] = date(Ymd);
$sReturnTxt .= "<?php\\n";
foreach($aData as $item => $value)
{
// $value=addslashes( $value ); php 버전 업으로 인한 불필요로서 없앰
$sReturnTxt .= "$"."$item = \\"$value\\"; \\n";
}
$sReturnTxt .= "?>";
$fp = fopen("$sSaveRoot/$this->sFilename.php", w);
if(flock( $fp, LOCK_EX))
{
fputs($fp,$sReturnTxt);
flock( $fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
}
function insert2($sSaveRoot, &$aData, $sFileName)
{
$aData[wdate] = date(Ymd);
$sReturnTxt .= "<?php\\n";
foreach( $aData as $item => $value )
{
#$value=addslashes( $value );
$sReturnTxt .= "$"."$item = \\"$value\\"; \\n";
}
$sReturnTxt .= "?>";
$fp = fopen("$sSaveRoot/$sFileName.php", w);
if(flock( $fp, LOCK_EX))
{
fputs($fp,$sReturnTxt);
flock($fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
}
function modify($sSaveRoot, &$aData, $sFilename)
{
$sReturnTxt .= "<?\\n";
foreach($aData as $item => $value)
{
//$value=addslashes($value);
$sReturnTxt .= "$"."$item = \\"$value\\"; \\n";
}
$sReturnTxt .= "\\n?>";
$fp = fopen("$sSaveRoot/$sFilename.php", w);
if(flock( $fp, LOCK_EX))
{
fputs($fp,$sReturnTxt);
flock($fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
if($fp)
{
return TRUE;
}
else
{
return FALSE;
}
}
function delete($nNO, $sSaveRoot = './data')
{
$aList = file("$sSaveRoot/list.cgi"); //리스트 파일에서 번호 지우기
$fp = fopen("$sSaveRoot/list.cgi", "w");
if(flock( $fp, LOCK_EX))
{
foreach($aList as $value)
{
$value = trim($value);
if($nNO != $value)
{
fwrite($fp, "$value\\n");
}
}
flock($fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
if(@unlink("$sSaveRoot/$nNO.php"))
{
return TRUE;
}
else
{
return FALSE;
}
}
function delDir($dir)
{
$current_dir = @opendir($dir);
while($entryname = @readdir($current_dir))
{
if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!=".."))
{
$this->delDir("${dir}/${entryname}");
}
else if($entryname != "." and $entryname!="..")
{
@unlink("${dir}/${entryname}");
}
}
@closedir($current_dir);
@rmdir(${dir});
}
function readData($sDir, $sType = NULL)
{
$dbdir = opendir($sDir);
# 디렉토리만 찾기
if( $sType == 'dir' )
{
while($data = readdir($dbdir))
{
if(is_dir("$sDir/$data") && $data != "." && $data != "..")
{
$rtn[] = $data;
}
}
}
# 디렉토리 파일만 찾기
else if( $sType == 'file' )
{
while($data = readdir($dbdir))
{
if( $data != "." && $data != ".." && !is_dir("$sDir/$data") )
{
$rtn[] = $data;
}
}
}
# 파일/디렉토리 찾기
else
{
while($data = readdir($dbdir))
{
if( $data != "." && $data != "..")
{
$rtn[] = $data;
}
}
}
closedir( $dbdir );
return $rtn;
}
// 2003-12-06 현재 원하는 디렉토리의 퍼미션 가져오기
function getPermition($sObj)
{
return substr(decoct(fileperms($sObj)),2,3);
}
// 2003-12-06 지금 쓰고있는 디렉토리를 리턴
function getSelfDir($sRoot)
{
$sBasename = basename($sRoot);
$RTN = str_replace('/'.$sBasename, '', $sRoot);
return $RTN;
}
}
if(!$objFctl)
{
$objFctl = & new Filecontrol;
}
?>
만든지 좀 되어서 올립니다 버그같은건 거즘 없는것 같군요 킴스파일 보드 쓰다가 거기 바탕으로 만들어 본것입니다. 아무쪼록 유용하게 사용하시길
파일 생성은 $objFctl->insert($_POST); 로 한방에 이루어집니다.
<?
class Filecontrol
{
var $objCommon;
var $sFilename;
function Filecontrol()
{
$this->objCommon = $GLOBALS[objCommon];
}
// ------------------------------------------------------------------------
// 파일의 기준 인덱스를 설정하는 파일 경로를 지정하면 list.cgi로 생성
// ------------------------------------------------------------------------
function number($sSaveRoot)
{
if(!is_file("$sSaveRoot/list.cgi"))
{
$fp = fopen( "$sSaveRoot/list.cgi", w );
if(flock($fp, LOCK_EX))
{
fputs( $fp, "1\\n" );
flock( $fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
$sFilename = 1;
}
else
{
$aList = file("$sSaveRoot/list.cgi");
$sFilename = chop($aList[0]) + 1;
$fp = fopen("$sSaveRoot/list.cgi", "w");
if(flock( $fp, LOCK_EX))
{
fwrite($fp, "$sFilename\\n");
foreach($aList as $value)
{
fwrite($fp, $value);
}
flock( $fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
}
$this->sFilename = $sFilename;
}
function insert($sSaveRoot, &$aData)
{
$this->number($sSaveRoot);
$aData[no] = $this->sFilename;
$aData[wdate] = date(Ymd);
$sReturnTxt .= "<?php\\n";
foreach($aData as $item => $value)
{
// $value=addslashes( $value ); php 버전 업으로 인한 불필요로서 없앰
$sReturnTxt .= "$"."$item = \\"$value\\"; \\n";
}
$sReturnTxt .= "?>";
$fp = fopen("$sSaveRoot/$this->sFilename.php", w);
if(flock( $fp, LOCK_EX))
{
fputs($fp,$sReturnTxt);
flock( $fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
}
function insert2($sSaveRoot, &$aData, $sFileName)
{
$aData[wdate] = date(Ymd);
$sReturnTxt .= "<?php\\n";
foreach( $aData as $item => $value )
{
#$value=addslashes( $value );
$sReturnTxt .= "$"."$item = \\"$value\\"; \\n";
}
$sReturnTxt .= "?>";
$fp = fopen("$sSaveRoot/$sFileName.php", w);
if(flock( $fp, LOCK_EX))
{
fputs($fp,$sReturnTxt);
flock($fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
}
function modify($sSaveRoot, &$aData, $sFilename)
{
$sReturnTxt .= "<?\\n";
foreach($aData as $item => $value)
{
//$value=addslashes($value);
$sReturnTxt .= "$"."$item = \\"$value\\"; \\n";
}
$sReturnTxt .= "\\n?>";
$fp = fopen("$sSaveRoot/$sFilename.php", w);
if(flock( $fp, LOCK_EX))
{
fputs($fp,$sReturnTxt);
flock($fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
if($fp)
{
return TRUE;
}
else
{
return FALSE;
}
}
function delete($nNO, $sSaveRoot = './data')
{
$aList = file("$sSaveRoot/list.cgi"); //리스트 파일에서 번호 지우기
$fp = fopen("$sSaveRoot/list.cgi", "w");
if(flock( $fp, LOCK_EX))
{
foreach($aList as $value)
{
$value = trim($value);
if($nNO != $value)
{
fwrite($fp, "$value\\n");
}
}
flock($fp, LOCK_UN);
}
else
{
$this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
}
fclose($fp);
if(@unlink("$sSaveRoot/$nNO.php"))
{
return TRUE;
}
else
{
return FALSE;
}
}
function delDir($dir)
{
$current_dir = @opendir($dir);
while($entryname = @readdir($current_dir))
{
if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!=".."))
{
$this->delDir("${dir}/${entryname}");
}
else if($entryname != "." and $entryname!="..")
{
@unlink("${dir}/${entryname}");
}
}
@closedir($current_dir);
@rmdir(${dir});
}
function readData($sDir, $sType = NULL)
{
$dbdir = opendir($sDir);
# 디렉토리만 찾기
if( $sType == 'dir' )
{
while($data = readdir($dbdir))
{
if(is_dir("$sDir/$data") && $data != "." && $data != "..")
{
$rtn[] = $data;
}
}
}
# 디렉토리 파일만 찾기
else if( $sType == 'file' )
{
while($data = readdir($dbdir))
{
if( $data != "." && $data != ".." && !is_dir("$sDir/$data") )
{
$rtn[] = $data;
}
}
}
# 파일/디렉토리 찾기
else
{
while($data = readdir($dbdir))
{
if( $data != "." && $data != "..")
{
$rtn[] = $data;
}
}
}
closedir( $dbdir );
return $rtn;
}
// 2003-12-06 현재 원하는 디렉토리의 퍼미션 가져오기
function getPermition($sObj)
{
return substr(decoct(fileperms($sObj)),2,3);
}
// 2003-12-06 지금 쓰고있는 디렉토리를 리턴
function getSelfDir($sRoot)
{
$sBasename = basename($sRoot);
$RTN = str_replace('/'.$sBasename, '', $sRoot);
return $RTN;
}
}
if(!$objFctl)
{
$objFctl = & new Filecontrol;
}
?>
만든지 좀 되어서 올립니다 버그같은건 거즘 없는것 같군요 킴스파일 보드 쓰다가 거기 바탕으로 만들어 본것입니다. 아무쪼록 유용하게 사용하시길
파일 생성은 $objFctl->insert($_POST); 로 한방에 이루어집니다.
관련자료
-
링크
댓글 0
등록된 댓글이 없습니다.