묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
계정에 있는 파일들을 출력하려면...
2002.04.20 12:18
http://dain.yedong.com/ver1/sitemap.php 다인님의 홈입니다.
이처럼 계정에 있는 ftp 내용이 출력되게 하려면 어떻게 해야하죠?
이처럼 계정에 있는 ftp 내용이 출력되게 하려면 어떻게 해야하죠?
댓글 3
-
TryZ
2002.04.20 12:21
legend 님이 올려놓으셨군요, 근데 머가먼지 하나도... -
TryZ
2002.04.20 12:22
<?
/////////////////////////////////////////////////////////////////////////
// Neo FileMan v0.5
// 제작자 : moem.new21.net(hiangae@hanmail.net)
// 본스크립트는 웹상에서 계정관리를 간단히 할 수 있도록 제작되었습니다.
// 업/다운로드가 자유롭게 되어 있어 FTP이 어려운 곳에 적합한 스크립트입니다.
// 본 소스는 수정 재배포가 가능하지만 위 주석은 남겨주시면 고맙겠습니다.
// 머 싫으심 지우셔도 되구요. ^^;
////////////////////////////////////////////////////////////////////////
$root=""; // 파일관리를 위한 최상위 폴더 지정하는 부분(아무것도 넣지 않으면 계정의 루트 디렉토리)
// 디렉토리를 지정할 경우 마지막에 /는 넣지 않습니다. 예: 제로보드만 할경우 -> "/zb41"
///////////////////////////////////////////////////////////////////////////////
// 이하 아래 부분은 크게 수정하실 필요없습니다.
///////////////////////////////////////////////////////////////////////////////
$start_time=getmicrotime();
if(!$dir || !preg_match("..", $dir))
$dir=$root;
chdir($DOCUMENT_ROOT.$dir);
$handle = opendir($DOCUMENT_ROOT.$dir);
if($del)
del_file($del);
if(is_uploaded_file($upload1)){
if(!is_file($DOCUMENT_ROOT.$dir."/".$upload1_name))
@move_uploaded_file($upload1,$DOCUMENT_ROOT.$dir."/".$upload1_name);
else
err("같은 이름의 파일이 존재하므로 파일을 업로드할수 없습니다.");
}
if(is_uploaded_file($upload2)){
if(!is_file($DOCUMENT_ROOT.$dir."/".$upload2_name))
@move_uploaded_file($upload2,$DOCUMENT_ROOT.$dir."/".$upload2_name);
else
err("같은 이름의 파일이 존재하므로 파일을 업로드할수 없습니다.");
}
if(is_uploaded_file($upload3)){
if(!is_file($DOCUMENT_ROOT.$dir."/".$upload3_name))
@move_uploaded_file($upload3,$DOCUMENT_ROOT.$dir."/".$upload3_name);
else
err("같은 이름의 파일이 존재하므로 파일을 업로드할수 없습니다.");
}
if(is_uploaded_file($upload4)){
if(!is_file($DOCUMENT_ROOT.$dir."/".$upload4_name))
@move_uploaded_file($upload4,$DOCUMENT_ROOT.$dir."/".$upload4_name);
else
err("같은 이름의 파일이 존재하므로 파일을 업로드할수 없습니다.");
}
if($chm){
$chm=explode(";",$chm);
chmod_file($chm[0], $chm[1]);
}
if($ren){
$ren=explode(";",$ren);
rename_file($ren[0], $ren[1]);
}
if($mov){
$mov=explode(";",$mov);
move_file($mov[0], $mov[1]);
}
while($file = readdir($handle)){
if(filetype($file)=="file"){
$FileName[]=$file;
$TotalSize+=filesize($file);
if((filesize($file)/1024)<1)
$FileSize[]=filesize($file)."B";
else if((filesize($file)/1024/1024)<1)
$FileSize[]=round(filesize($file)/1024)."K";
else
$FileSize[]=round(filesize($file)/1024/1024)."M";
$FileTime[]=ereg_replace("PM","오후",ereg_replace("AM","오전",date("Y-m-d A H:i",filemtime($file))));
$FilePerms[]=get_perms($file);
}
else if($file!="."){
$DirName[]=$file;
$DirTime[]=ereg_replace("PM","오후",ereg_replace("AM","오전",date("Y-m-d A H:i",filemtime($file))));
$DirPerms[]=get_perms($file);
}
}
closedir($handle);
function get_perms($file) {
$p_bin = substr(decbin(fileperms($file)), -9) ;
$p_arr = explode(".", substr(chunk_split($p_bin, 1,"."), 0, 17)) ;
$perms = ""; $i = 0;
foreach ($p_arr as $this) {
$p_char = ( $i%3==0 ? "r" : ( $i%3==1 ? "w":"x" ) );
$perms .= ( $this=="1" ? $p_char : "-" ) . ($i%3==2 ? " " : "" );
$i++;
}
return $perms;
}
function chmod_file($file, $mode){
chmod($file, $mode);
}
function rename_file($file, $dest){
if(!is_file($dest))
rename($file, $dest);
else
err("같은 이름의 파일이 존재하므로 파일명을 변경할 수 없습니다.");
}
function move_file($file, $dest){
if(!is_file($dest."/".$file))
rename($file, $DOCUMENT_ROOT.$dir.$dest."/".$file);
else
err("같은 이름의 파일이 존재하므로 파일을 이동시킬 수 없습니다.");
}
function err($e){
echo "
<script>alert('$e')</script>
<meta name='http-env' type='refresh' content='0;url=$PHP_SELF?dir=$dir'>
";
}
function del_file($file){
@chmod($file,0777);
$handle = @unlink($file);
if(@file_exists($file)) {
@chmod($file,0775);
$handle=@unlink($file);
}
return $handle;
}
function getmicrotime() {
$tmp = split(" ",microtime());
return $tmp[0]+$tmp[1];
}
?>
<HTML>
<HEAD>
<meta http-equiv=Content-Type content=text/html; charset=EUC-KR>
<style>
a, a:visited, a:link, a:active {color:navy; text-decoration:none}
a:hover {color:red; text-decoration:underline}
fd {font-size:11pt; color:gray}
</style>
<script>
function submit_del(del)
{
if(confirm(del+"을(를) 정말로 삭제하시겠습니까?"))
{
fileman.del.value=del;
fileman.submit();
}
}
function submit_dir(dir)
{
fileman.dir.value=dir;
fileman.submit();
}
function submit_chm(chm)
{
tmp=prompt("새로 변경할 권한을 입력하세요(예:707,0777,u+rwx,go+rx)",755);
if(tmp!=null){
if(confirm(chm+"을(를) "+tmp+"로 권한을 변경하시겠습니까?"))
{
fileman.chm.value=chm+";"+tmp;
fileman.submit();
}
}
}
function submit_ren(ren)
{
tmp=prompt("변경하실 이름을 입력하세요", ren);
if(tmp!=null){
if(confirm(ren+"을(를) "+tmp+"로 이름을 변경하시겠습니까?"))
{
fileman.ren.value=ren+";"+tmp;
fileman.submit();
}
}
}
function submit_mov(mov)
{
tmp=prompt("이동시킬 위치를 입력하세요(\"/\"를 뺀 폴더명 입력)","");
if(tmp!=null){
if(confirm(mov+"을(를) "+tmp+"로 이동시키시겠습니까?"))
{
fileman.mov.value=mov+";"+tmp;
fileman.submit();
}
}
}
</script>
</HEAD>
<BODY>
<form name="fileman" action="<?=$PHP_SELF?>" method="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="dir" value=<?=$dir?>>
<INPUT TYPE="hidden" NAME="ren">
<INPUT TYPE="hidden" NAME="del">
<INPUT TYPE="hidden" NAME="mov">
<INPUT TYPE="hidden" NAME="chm">
<table align="center" border="1" cellspacing="0" width="600" bordercolor="white" bordercolordark="white" bordercolorlight="black">
<tr>
<td nowrap colspan=5>
<p align="center">Neo FileMan v0.5 (현재위치 : <?=getcwd()?>)</p>
</td>
</tr>
<tr>
<td nowrap>
<p align="center">이 름</p>
</td>
<td nowrap>
<p align="center">권한(OGP)</p>
</td>
<td nowrap>
<p align="center">날 짜</p>
</td>
<td nowrap>
<p align="center">크 기</p>
</td>
<td nowrap>
<p align="center">관 리</p>
</td>
</tr>
<?
for($j=0; $j<sizeof($DirName); $j++)
{
if($j==0){
$last_pos=strrpos($dir,"/");
$ParentDir=substr($dir,0,$last_pos);
$DirLink="◈ <a href='javascript:submit_dir(\"$ParentDir\")'>Parent Directory</a>";
}
else{
$DirLink="▷ <a href='javascript:submit_dir(\"$dir/$DirName[$j]\")'>$DirName[$j]</a>";
$DirDel="<a href='javascript:submit_del(\"$DirName[$j]\")'>삭제</a>";
$DirMov="<a href='javascript:submit_mov(\"$DirName[$j]\")'>이동</a>";
$DirRen="<a href='javascript:submit_ren(\"$DirName[$j]\")'>이름변경</a>";
$DirPerms[$j]="<a href='javascript:submit_chm(\"$DirName[$j]\")'>$DirPerms[$j]</a>";
}
echo "
<tr>
<td nowrap>
<p align=left> $DirLink</p>
</td>
<td nowrap>
<p align=center>$DirPerms[$j]</p>
</td>
<td nowrap>
<p align=center>$DirTime[$j]</p>
</td>
<td nowrap>
<p align=center>폴더</p>
</td>
<td nowrap>
<p align=center>$DirRen $DirDel $DirMov</p>
</td>
</tr>
";
}
for($i=0; $i<sizeof($FileName); $i++)
{
if($FileName[$i]!="index.php" || $FileName[$i]!="index.html" || $FileName[$i]!="index.htm")
$FileDel="<a href='javascript:submit_del(\"$FileName[$i]\")'>삭제</a>";
else
$FileDel="<a href='javascript:alert(\"인덱스 파일은 직접 삭제가 불가능합니다.\n 삭제하시려면 이름을 바꾸신후 삭제하세요\")'>삭제</a>";
$FileMov="<a href='javascript:submit_mov(\"$FileName[$i]\")'>이동</a>";
$FileRen="<a href='javascript:submit_ren(\"$FileName[$i]\")'>이름변경</a>";
$FilePerms[$i]="<a href='javascript:submit_chm(\"$FileName[$i]\")'>$FilePerms[$i]</a>";
$FileLink="▶ <a href=$HOST$dir/$FileName[$i] target=_blank>$FileName[$i]</a>";
echo "
<tr>
<td nowrap>
<p align=left> $FileLink</p>
</td>
<td nowrap>
<p align=center>$FilePerms[$i]</p>
</td>
<td nowrap>
<p align=center>$FileTime[$i]</p>
</td>
<td nowrap>
<p align=right>$FileSize[$i] </p>
</td>
<td nowrap>
<p align=center>$FileRen $FileDel $FileMov</p>
</td>
</tr>
";
}
if(($TotalSize/1024)<1)
$TotalSize=$TotalSize."B";
else if(($TotalSize/1024/1024)<1)
$TotalSize=ceil($TotalSize/1024)."K";
else if(($TotalSize/1024/1024/1024)<1)
$TotalSize=ceil($TotalSize/1024/1024)."M";
else
$TotalSize=ceil($TotalSize/1024/1024/1024)."G";
echo "
<tr>
<td nowrap colspan=3>
<p align=center>디렉토리".($j-1)."개/파일".$i."개</p>
</td>
<td nowrap colspan=2>
<p align=right>총 $TotalSize </p>
</td>
</tr>
";
?>
<tr>
<td nowrap colspan=5>
<TABLE align=center>
<TR>
<TD>
<INPUT TYPE="file" NAME="upload1" style="border:1 solid gray;color:gray;">
<INPUT TYPE="file" NAME="upload2" style="border:1 solid gray;color:gray;"><br>
<INPUT TYPE="file" NAME="upload3" style="border:1 solid gray;color:gray;">
<INPUT TYPE="file" NAME="upload4" style="border:1 solid gray;color:gray;">
</TD>
<TD align=center>
<INPUT TYPE="submit" value="업로드" style="border:1 solid gray;color:gray;background:white;height=40;">
</TD>
</TR>
</TABLE>
</td>
</tr>
</table>
</form>
<center>Neo FileMan 수행시간 : <?=substr((getmicrotime()-$start_time), 0, 5)?>초</center>
</BODY>
</HTML> -
Legend
2002.04.20 13:28
그냥 아무데나 업로드 하셔서 파일을 불러오시면 됩니다.
root라는 것은 상위폴더로의 이동을 제한 하기 위해서 설정하는 부분입니다.
특정 폴더 이상 상위 디렉토리로 이동하지 못하게 하는 것이지요..
계정 루트 --- zb41
|--- image
|--- data
|--- media
디렉토리 구조가 위와 같이 되어 있다면 root="/media";로 넣으면 이 계정 관리 스크립트 파일을
불러오시면 media 폴더 안에 있는 파일과 폴더가 보이며 요 media 폴더가 스크립트로 관리할 수
있는 최상위 폴더가 되는 것이지요