XHOST 사이트 이미지 검색프로그램입니다. (1개짜리 간단한 파일) > XHOST BBS 관련자료

본문 바로가기

검색취소

XHOST 사이트 이미지 검색프로그램입니다. (1개짜리 간단한 파일)

검색 이전 다음 목록

첨부파일

본문

제가 개발할 때 주로 사용하는 이미지 조회 프로그램입니다.

서버에 images 등의 폴드에 이미지가 많이 있을때 일일이 찾아서 올리기 힘들고 사이즈등도 파악을 해야 하기 까다로와서 갤러리 형태로 만들고 복사,이동등이 가능하게 했습니다.

1개 파일로 되어 있어서 간단하게 사용하기 편하실것입니다..

데모는 여기 http://xhost.co.kr/demo2/listimg/listimg.php 에 있습니다.

 

만든지가 수년 되었고, 그동안 찔끔찔끔 짜집기 식으로 업데이트 하다보니 소스가 영 엉망이 되었네요..(이해해주시길..)

사용은 상용/비상용 프리이고, 마음대로 배포하셔도 됩니다. GPL 입니다.^^

사용시 카피라이트 안적어도 됩니다만.. 게시판에 배포할때는  출처밝히시는것 잊지마시구요..

소스에서 데모라인을 false로 바꾸면 마음대로 사용가능합니다.  다운받아서 설치하시구요. 아래소스는 참고용입니다.

아래 소스입니다..

-------------------------------------------------

<?
//if(count($_GET)) extract($_GET);
//if(count($_POST)) extract($_POST);
//if(count($_SERVER)) extract($_SERVER);
//if(count($_COOKIE)) extract($_COOKIE);
$GLOBALS[데모]=true;  //데모모드입니다.  $GLOBALS[데모]=false; 로 해주세요..
$GLOBALS[관리자용아이디]="admin";  //데모모드입니다. 소스에서 $GLOBALS[데모]를 지워주세요.

session_start();
$super_user=0;

if ($GLOBALS[데모]||$_SESSION[userid]==$GLOBALS[관리자용아이디]) $super_user=323451; //관리자일때
if ($_SERVER[REMOTE_ADDR]=="999.999.999.999") $super_user=323451; //특정아이피일때 관리자로 지정하기

/* 홈페이지가 있는 URL */
//echo "<pre>";var_dump($_SERVER);echo "</pre>";exit;
$wwwrooturl =  dirname($_SERVER[PHP_SELF]);
$wwwrootpath =  getcwd();  /* 위 URL에 상응하는 디렉토리 */
$wwwrooturl=str_replace("//","/",$wwwrooturl);
if ($wwwrooturl=="/") $wwwrooturl="";

$delim =  "/";   /* Path 중 디렉토리 구분하는 delimiter */

$path=$_REQUEST[path];
$path=str_replace("//","/",$path);
$path=str_replace("../..","",$path);
$path=str_replace("//","/",$path);
$cmd=$_REQUEST['cmd'];
$alb=$_REQUEST['alb'];
$alb_type=$_REQUEST['alb_type'];
$parent=$_REQUEST[parent];

/* 보고 싶은 이미지의 확장자를 넣어주면 됩니다. 별로 바꿀 필요없겠죠.. */

if ($alb==0) $filter = "(.gif|.jpg)$";
else if ($alb==1) $filter = "(.gif|.jpg)$";
else if ($alb==2) $filter = "(.gif|.jpg|.php|.htm|.html|.php3)$";
else $filter = "(.php|.htm)$";

if ($GLOBALS[데모]&&$alb!=0) error("데모에서는 이미지만 적용됩니다.");
if ($GLOBALS[데모]&&$cmd) error("데모에서는 각종 명령어가 막혀있습니다.");
if ($GLOBALS[데모]&&$cmd) error("데모에서는 각종 명령어가 막혀있습니다.");
if ($GLOBALS[데모]&&$_REQUEST[movedir]) error("데모에서는 각종 명령어가 막혀있습니다.");


////////////////////////////////////////////////////////////
function list_dir($dirname, $filter, $delim) 
{                 
 global $alb,$alb_type;
    
    if( $dirname[strlen($dirname)-1] != $delim )
        $dirname.=$delim;

 if (!is_dir($dirname)) error("$dirname 은 디렉토리가 아닙니다.");
    $result_array=array(); 
    $handle=opendir($dirname); 
        
    while ($file = readdir($handle)) 
    {         
        if($file== '.'||$file== '..') 
            continue; 
        if(is_dir($dirname . $delim . $file)) {
            $result_array[]= "!$file";
            continue;
        }
        else {
   //echo "$alb,$file ";
   $is_jpg=(stristr($file,".gif")||stristr($file,".jpg"));
   $is_htm=(stristr($file,".php")||stristr($file,".htm"));
   if ( ($alb_type==0&&$is_jpg) ||
     ($alb_type==1&&$is_jpg) ||
     ($alb_type==2&&$is_htm) ||
     ($alb_type==2&&$is_jpg) ||
     ($alb_type==3&&$is_htm) ) {
    //echo "$alb_type,$file ";
    $result_array[]=$file; 
   }
  }
    }
    
    closedir($handle); 
    
    return $result_array; 
}

///////////////////////////////////////////  
if($path !=  "") $path2dir=$path;  
else $path2dir =  "";

echo '<meta http-equiv="content-type" content="text/html; charset=euc-kr">';
if ($GLOBALS[데모]) echo "<B>데모모드입니다. 소스에서 \$GLOBALS[데모]를 지워주세요.</B><BR>";

if ($super_user==323451&&$cmd=="delete"&(strstr($file,".jpg")||strstr($file,".gif"))) {
 $filename="$wwwrootpath/$path2dir/$file";
 echo $filename;
 if (file_exists($filename)) {
  unlink($filename);
  echo " 삭제됨<BR>";
 }
 else {
  echo " 삭제실패!!<BR>";
 }
 
}

if ($super_user==323451&&$cmd=="delete_select"&&$_POST[achk]) {
 $count=0;
 foreach($_POST[achk] as $file) {
  $file=urldecode($file);
  $filename="$wwwrootpath/$path2dir/$file";
  $count++;
  if (file_exists($filename)&&unlink($filename)) {
   echo "$count. $filename 삭제됨<BR>";
  }
  else {
   echo "$count. $filename 삭제실패!!<BR>";
  }
 }
 
}

if ($super_user==323451&&$cmd=="move_select"&&$_POST[achk]) {
 $movedir=$_POST[movedir];
 $이동경로="$wwwrootpath/$movedir";
 if (strstr($movedir,"..")) echo "이동경로에는 절대경로를 지정하세요. .. 사용불가..<BR>";
 else if (!$movedir) echo "이동할경로를 입력하세요<BR>";
 else if (!is_dir($이동경로)) echo "$movedir 디렉토리 검색실패<BR>";
 else {
  $count=0;
  foreach($_POST[achk] as $file) {
   if (!$file||strlen($file)<3) continue;
   $file=urldecode($file);
   $filename="$wwwrootpath/$path2dir/$file";
   $count++;
   $ok=false;
   if (file_exists($filename)) {
    if (rename($filename,"$이동경로/$file")) {
     $ok=true;
    }
   }
   echo "$count. $filename ".($ok?" -> $이동경로/$file 이동됨!!":"이동실패!!")."<BR>";
  }
 }
 
}


if ($super_user==323451&&$cmd=="copy_select"&&$_POST[achk]) {
 $movedir=$_POST[movedir];
 $이동경로="$wwwrootpath/$movedir";
 if (strstr($movedir,"..")) echo "복사경로에는 절대경로를 지정하세요. .. 사용불가..<BR>";
 else if (!$movedir) echo "복사할경로를 입력하세요<BR>";
 else if (!is_dir($이동경로)) echo "$movedir 디렉토리 검색실패<BR>";
 else {
  $count=0;
  foreach($_POST[achk] as $file) {
   if (!$file||strlen($file)<3) continue;
   $file=urldecode($file);
   $filename="$wwwrootpath/$path2dir/$file";
   $count++;
   $ok=false;
   if (file_exists($filename)) {
    if (copy($filename,"$이동경로/$file")) {
     $ok=true;
    }
   }
   echo "$count. $filename ".($ok?" -> $이동경로/$file 복사됨!!":"복사실패!!")."<BR>";
  }
 }
 
}


if ($super_user==323451&&$cmd=="rename_select"&&$_POST[achk]) {
 $새파일명=$_POST[movedir];
 if (strstr($새파일명,"..")) echo "변경할 이름에는 특수문자를 사용할수 없습니다.<BR>";
 else if (!$새파일명) echo "변경할 이름을 입력하세요<BR>";
 else {
  $count=0;
  foreach($_POST[achk] as $file) {
   if (!$file||strlen($file)<3) continue;
   $file=urldecode($file);
   $filename="$wwwrootpath/$path2dir/$file";
   $filename2="$wwwrootpath/$path2dir/$새파일명";
   $count++;
   $ok=false;
   if (file_exists($filename)) {
    if (file_exists($filename2)) {
      echo "이미 $새파일명 이 존재합니다.<BR>";
    }
    else if (rename($filename,$filename2)) {
     $ok=true;
    }
   }
   echo "$count. $filename ".($ok?" -> $flilename2 이름변경됨!!":"변경실패")."<BR>";
   break;
  }
 }
}


if (!$alb_type) $alb_type=0;
if ($cmd=="t_alb_type") {
 $alb_type++;
 if ($alb_type>3) $alb_type=0;
 setcookie("alb_type","$alb_type");
}

///////////////////////////////////////////
$dir =  "$wwwrootpath$delim$path2dir";                    
$dirlist = list_dir($dir, $filter, $delim);
$size = sizeof($dirlist);              
$start = $start + $size;
echo  "
$wwwrooturl$path2dir  
<a href='$PHP_SELF?cmd=t_alb_type&path=$path2dir&parent=$path'>형태 $alb_type</a>
";
//echo "(Path:$wwwrootpath)";
echo "
<script>
var nSelectFlag = 0;
function select_all(frm) {
 var nCheckedCnt = 0;
 for (var nIdx=0; nIdx < frm.elements.length; nIdx++) {
  var objElement = frm.elements[nIdx];
  //alert(frm.elements[nIdx].name);

  if (objElement.name == 'achk[]') {
   nCheckedCnt++;

   if (nSelectFlag == 0)
    objElement.checked = true;
   else
    objElement.checked = false;
   }
 }

 if (nSelectFlag == 0) {
  //alert(nCheckedCnt + '개의 자료가 선택되었습니다');
  nSelectFlag = 1; 
 }
 else {
  nSelectFlag = 0; 
 }
}

function moveto() {
 if (document.form_list.movedir.value=='') {
  alert('이동할 디렉토리를 선택하세요..');
  document.form_list.movedir.focus();
  reurn;
 }
 document.form_list.cmd.value='move_select';
 document.form_list.submit();
}

function copyto() {
 if (document.form_list.movedir.value=='') {
  alert('복사할 디렉토리를 선택하세요..');
  document.form_list.movedir.focus();
  reurn;
 }
 document.form_list.cmd.value='copy_select';
 document.form_list.submit();
}
function renameto() {
 if (document.form_list.movedir.value=='') {
  alert('변경할 이름을 입력하세요..');
  document.form_list.movedir.focus();
  reurn;
 }
 document.form_list.cmd.value='rename_select';
 document.form_list.submit();
}


function delete_select() {
 document.form_list.cmd.value='delete_select';
 document.form_list.submit();
}
</script>

<BR>
<form name=form_list action='?path=$path&alb_type=$alb_type' method=post>
<input type=hidden name=cmd value=''>

<TABLE bgColor=#ffffff border=1 cellPadding=0 cellSpacing=0 width=100%>
<tr>
<td colspan=2>
 <a href=javascript:select_all(document.form_list)>전체선택</a> |
 <a href=javascript:delete_select(); onclick=\"return confirm('선택된 자료를 한꺼번에 전부 삭제할까요?');\">선택삭제</a> |
 <a href=\"$PHP_SELF?path=$parent\">위로</a> |
 <a href=/>홈</a> |
 <input name=movedir size=20 class=box><a href=javascript:moveto(); onclick=\"return confirm('선택된 자료를 한꺼번에 지정된 경로로 이동할까요?');\">이동</a> |
 <a href=javascript:copyto(); onclick=\"return confirm('선택된 자료를 한꺼번에 지정된 경로로 복사할까요?');\">복사</a> |
 <a href=javascript:renameto();>이름변경</a> |
 </td>\n<tr>
";
$aval=array();
while (list ($key, $val) = each ($dirlist)) {
 $aval[]=$val;
}
sort($aval);


if ($alb_type==1) {
 for ($i=0;$i<sizeof($aval);$i++) {
  $val=$aval[$i];
  if ($super_user==323451) {
   $edit="<a href='$PHP_SELF?path=$path&cmd=delete&file=$val&#n_$i' onClick=\"return confirm('$val 을 삭제할까요?')\">[D]</a>";
   $edit2="<input type=checkbox name=achk[] value='".urlencode($val)."'>";
  }
  if($val[0]== '!') {
   $val = substr($val, 1);
   echo  "$edit2<a href=\"$PHP_SELF?path=$path2dir$delim$val&parent=$path\">[$val]</a> ";
  } else {        

   $filename="$wwwrootpath$path2dir$delim$val";
   $filesize=filesize($filename);
   $size = GetImageSize ($filename);

   $imgcnt++;
   $encodedurl = urlencode( "$path2dir$delim$val");
   $encodedurl = ereg_replace( "%2F",  "/", $encodedurl);
   $encodedurl = ereg_replace( "[+]",  "%20", $encodedurl);

   echo  "<a href=\"$wwwrooturl$encodedurl\">\n";
   echo  "<img src=\"$wwwrooturl$encodedurl\" border=0 align=absmiddle hspace=2 vspace=2></a>\n";
  }
 }

}

else {
 for ($i=0;$i<sizeof($aval);$i++) {
  $val=$aval[$i];
  if ($super_user==323451) {
   $edit="<a href='$PHP_SELF?path=$path&cmd=delete&file=$val&#n_$i' onClick=\"return confirm('$val 을 삭제할까요?')\">[D]</a>";
   $edit2="<input type=checkbox name=achk[] value='".urlencode($val)."'>";

  }
  if($val[0]== '!') {
   $val = substr($val, 1);
   echo  "<td>";
   echo  "<b>DIR </b>";
   echo  "</td>";
   echo  "<td nowrap>";
   echo  "<a href=\"$PHP_SELF?path=$path2dir$delim$val&parent=$path\">$val</a><br>\n";
  } else {        

   $filename="$wwwrootpath$path2dir$delim$val";
   $filesize=filesize($filename);
   $size = GetImageSize ($filename);

   $imgcnt++;
   echo  "<td valign=top nowrap>$edit<a name=n_$i></a>";
   echo  "<font size=-1 color=green>[$imgcnt] $val ($filesize B)</font> \n";
   echo  "</td>";
   echo  "<td><font size=-1 color=green></font>";        
   $encodedurl = urlencode( "$path2dir$delim$val");
   $encodedurl = ereg_replace( "%2F",  "/", $encodedurl);
   $encodedurl = ereg_replace( "[+]",  "%20", $encodedurl);

   echo  "$edit2&nbsp; <a href=\"$wwwrooturl$encodedurl\">\n";
   if (stristr($encodedurl,".gif")||stristr($encodedurl,".jpg")) {
    echo  "<img src=\"$wwwrooturl$encodedurl\" border=0></a> ";
    echo  "<font size=2>&lt;img src=$wwwrooturl$delim$val  ".str_replace("\"","",$size[3])." align=absmiddle border=0&gt;</a>";
   }
   else {
    echo "$encodedurl</a> &nbsp; &lt;a href='$encodedurl'&gt;<BR>";
   }
  }
  echo  "</td></tr><tr>";
 }
 echo  "</tr></table>";
}

echo "
<TABLE bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 width=100%>
<tr><td>
 <a href=javascript:select_all(document.form_list)>전체선택</a> |
 <a href=javascript:document.form_list.submit(); onclick=\"return confirm('선택된 자료를 한꺼번에 전부 삭제할까요?');\">선택삭제</a> |
 <a href=\"$PHP_SELF?path=$parent\">위로</a> |
 <a href=/>홈</a> |
 <a href=#>처음으로</a> |
 <a href='http://xhost.co.kr'>출처:XHOST.co.kr</a> |
</td></tr>
</table>
</form>
";


function error($str,$go='-1',$url="") {
 echo "<script>alert (\"$str\");history.go($go);";
 if ($url) echo "location='$url';";
 echo "</script>";
 flush();
 exit;
}


?>

 

등록된 댓글이 없습니다.

검색취소

XHOST BBS 관련자료

검색
  • no image
  • XHOST 관련 화면 자료입니다.

    댓글1

    XHOST 에 대한 이해를 돕기 위해 현재 운영중인 XHOST BBS 로 동작되는  BBS 의 화면 캡춰를 등록합니다. 소개는 오래전에 등록된 소개로 대치합니다.^^ XHOST bbs 리눅스는 자체만으로 매력이 많은…

  • no image
  • [소스공개] XHOST 5.22d 버젼입니다.

    첨부파일

    XHOST BBS 호스트의 전체 소스입니다. (화면,데이타등등 포함) 소스설명,구조,활용법,컴파일방법등에 관한 질문은 받지 않으니 양지바랍니다. 상업적으로 사용하실때는 반드시 개발자의 승인을 받아야 합니다. 소스를 …

  • no image
  • XHOST6.0BB Mysql DB 버젼 소스 입니다.

    첨부파일

    공개된 버젼중에는 제일 마지막 버젼입니다. XHOST의 DB 버젼이면서 동시에 WEB bbs 연동버젼입니다. 상당히 많은곳에서 사용하고 있고, 텔넷 BBS의 거의 모든기술이 포함된 버젼입니다. 그래서 공개하기가 참 …

?>