회원로그인
현재 디렉토리(폴더) 파일 목록 보기, PHP소스
13년 전
현재 디렉토리(폴더)에 있는 파일들 목록을 보여주고 링크를 달아주는 작은 PHP+JAVASCRIPT 코드입니다. 보여줄 파일 확장자를 제한할 수 있고 선택적으로 보여줄 수 있도록 되어 있습니다. PHP 로 디렉토리와 파일들을 어떻게 다룰 수 있는 지 알 수 있는 소스코드이며 적당히 가공해서 실무에도 사용할 수도 있겠습니다.
<html>
<head>
<title>현재 폴더 페이지 목록</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<style type="text/css">
A:link {color:#3366CC; text-decoration:none;}
A:active {color:#1F3174; text-decoration:none;}
A:visited {color:#999999; text-decoration:none;}
A:hover {color:#FF9966; text-decoration:underline;}
IMG { border: 0; }
body {margin:0px; padding:0px}
span {color:#7C9CA7; font:11px 돋움; line-height:19px;}
</style>
<body leftmargin="0" topmargin="0">
<table border=0 cellpadding=0 cellspacing=0><tr>
<td width=10></td>
<?
$start_page = "page_list.php";
$ext_array = array("php", "html", "htm", "gif", "jpg", "png");
$ext_max = count($ext_array);
$path = "./";
for ($n=0;$n<$ext_max;$n++) {
echo "<td><input type='checkbox' name='add_" . $ext_array[$n] . "' checked onclick='redisplay_page()'></td><td width=30><span>" . $ext_array[$n] . "</span></td>";
}
?>
</tr></table>
<script>
var files = Array();
<?
if ($dir = opendir($path)) {
while ($file = readdir($dir)){
if (is_dir($path.$file)) {
if ($file != '.' && $file != '..') {
if (file_exists("$file/$start_page")) {
echo "files[files.length]='$file/$start_page';\n";
}
} else {
}
} else {
if ($file!=$start_page){
$name_array = pathinfo($file);
$ext = $name_array['extension'];
if (strlen(str_replace($ext_array,"",$ext))==0) echo "files[files.length]='$file';\n";
}
}
}
closedir($dir);
}
?>
var stagex=10,stagey=20,x,y,n,z,cellw=220,cellh=20,obj,n;
function display_page() {
files.sort();
var i = 0, pass;
for (n=0;n<files.length;n++){
temp_arr = (files[n].replace(/ /gi,"%20").replace(/\\/gi,"/")).split(".");
temp_ext = temp_arr[temp_arr.length-1];
pass = 0;
switch (temp_ext){
<?
for ($n=0;$n<$ext_max;$n++) {
echo "case '".$ext_array[$n]."': if (!document.getElementsByName('add_".$ext_array[$n]."')[0].checked) pass = 1; break;\n";
}
?>
default : pass=1; break;
}
if (pass) continue;
//x = stagex + 1+(n % 4)*cellw;
//y = stagey + 1+ Math.floor(n/4) * cellh;
x = stagex + 1+ Math.floor(i/30) * cellw;
y = stagey + 1+ (i % 30) * cellh;
document.write('<div id="block_'+n+'" style="position:absolute; background-color:#efefef; z-index:'+z+'; left:'+x+'px; top:'+y+'px; width:'+(cellw-1)+'px; height:'+(cellh-1)+'px; padding-left:5px; display:block"><span>'+(10001+i).toString().substring(1)+': <a href="'+files[n]+'">'+files[n].replace('<?=$start_page;?>','')+'</a> <a href="'+files[n]+'" target=_blank>▲</a></span></div>');
i++;
}
}
function redisplay_page() {
var i = 0, pass, obj;
for (n=0;n<files.length;n++){
temp_arr = (files[n].replace(/ /gi,"%20").replace(/\\/gi,"/")).split(".");
temp_ext = temp_arr[temp_arr.length-1];
pass = 1;
switch (temp_ext){
<?
for ($n=0;$n<$ext_max;$n++) {
echo "case '".$ext_array[$n]."': if (!document.getElementsByName('add_".$ext_array[$n]."')[0].checked) pass = 0; break;\n";
}
?>
default : pass=1; break;
}
if (pass) {
//x = stagex + 1+(n % 4)*cellw;
//y = stagey + 1+ Math.floor(n/4) * cellh;
x = stagex + 1+ Math.floor(i/30) * cellw;
y = stagey + 1+ (i % 30) * cellh;
obj = document.getElementById('block_'+n);
obj.style.display='block';
obj.style.left = x;
obj.style.top = y;
i++;
} else {
document.getElementById('block_'+n).style.display='none';
}
}
}
display_page();
</script>
</body>
</html>
추천 : 643
추천
목록