php로 디렉토리 이동을 하고 싶은데요...

맹고이의 이미지

phpschool.com에 비슷한 내용의 질문을 했었는데
답변이 없어서 급한 마음에 여기에도 올려봅니다... 죄송 :oops:

아파치 httpd.conf 에서...
Options Indexes FollowSymLinks MultiViews
이렇게 설정을 하면 파일과 디렉토리가 출력되는걸로 알고있습니다...
그런 형식을 php로 구현하려는데 기본적인 문법도 겨우 아는 상태라
어떻게 해야될지 모르겠네요...

일단 제 머리로...

<? 

if($dir != "") {
    chdir($dir);
}

$curdir = getcwd(); 
$inputarray = opendir($curdir); 
$resultarray = array(); 

while($var = readdir($inputarray)) { 
    if(is_dir($curdir . "/" . $var)) { 
            $resultarray[] = $curdir . "/" . $var; 
    } 
} 
closedir($inputarray);

for($x = 0; $x < sizeof($resultarray); $x++) 
{
    $url="<a href=\"$PHP_SELF?dir=$resultarray[$x]\"> $resultarray[$x] </A>"; 
    echo $url . "<BR>";
} 

?>

일단 이렇게 하면 디렉토리를 출력하고 이동은 됩니다만
<a href>에 절대경로를 줘버린 탓에
그럼 URL이 너무 조잡해지고 여러가지로 좋지 않을 거 같네요.
뭔가 멋진 방법 알고 계시면
답변 부탁드립니다.(__)

p.s. 개인적인 용도로 간단한 이미지 뷰어를 만드는 중인데
나름대로 탐색기 부분입니다.-_-;

wind772의 이미지

function ShowDir($DP, $URL, $ViewFile) {
	$Directory = dir("./$DP");
	while($FN = $Directory->read())
		if(strcmp($FN, ".") && strcmp($FN, "..") && is_file("./$DP/$FN")) {
			$FN_LINK = str_replace(" ", "%20", $FN);
			echo("<a href=$URL/$ViewFile?DocPath=$DP&filename=$FN_LINK><li>$FN</li></a><br>");
		}
	$Directory->close();
}

제가 쓰는 함수인데요.^^
파일을 사용해서 웹에서 텍스트 저장&편집하는거라
파일만 목록으로 뿌려서 링크걸어줄때 필요해서 만든 함수 입니다...

음..참고로 사용한 인수는....
$DP - 파일이 있는 디렉토리
$URL - 링크를 걸어줄 주소($ViewFile이 있는)
$ViewFile - 파일내용을 보여주는 파일

도움이 되시길..^^

===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.

맹고이의 이미지

답변 감사드립니다.
그런데 디렉토리들을 마구 돌아닐려고 하는데
인용해주신 함수를 어떻게 활용해야될지
모르겠네요...;;

Quote:
.
..
directory1
directory2
directory3

이런 모양에... 해당링크를 누르면 다시
하위 디렉토리 목록을 표시하고
그 정도 수준만 되면 되는데
지금 제가 만들어놓은게 url에 절대경로가 보여서요
그것만 안보이는 방법만 가르쳐주시면...

wind772의 이미지

^^;; 그럼 절대주소를 쓰지 마시고 상대 주소를 쓰시는게 어떠실런지...
저도 저 소스 사용할때 상대주소 사용하거든요..
그리고 변수는 (URL)?Path=xxx 이렇게 넘기신 다음,
파일 내부에서 저 변수 사용하시면 깔끔해질꺼 같네요.
참고로 저 소스 이용한 홈피가..
http://wind772.xwow.net(허접..ㅠㅠ)
http://202.30.46.2:8005/~mi022186/source.zip(소스)
입니다.

===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.

맹고이의 이미지

아... 소스까지 올려주시고... 감사합니다.

wind772 wrote:
그리고 변수는 (URL)?Path=xxx 이렇게 넘기신 다음,
파일 내부에서 저 변수 사용하시면 깔끔해질꺼 같네요.

이말은 변수를 변수로 넘긴다는 말인가요?-_-a

아무튼 상대경로만 이용해서는 여러단계를 이동할때
제 머리로는 표현하기 힘든 어려움이 있네요
님의 홈페이지같이 직접입력하는것도 아니고... 으음...
제 자신도 답답합니다.-_- 일단 프레임으로만들어서
가리던지 파일에 써서 이용하던지 해서...
php공부좀 더 하고 어느정도 만든 뒤에 다시 질문 드리겠습니다.
감사합니다.

wind772의 이미지

음..^^
제가 원래 썼던 방식은 index.html 파일 헤더부분에서 refresh 를 사용해서
뷰어파일로 하는 것이었는데...

<html>
<META HTTP-EQUIV="REFRESH" CONTENT="1; URL=http://testserver.test.test/~wind772/view.php?DocPath=test&filename=알림"> 
</html>

디렉토리 별로 확장하려다보니 index.html 파일에서 디렉토리명 입력받게 한것입니다.

그리고 제가 변수로 넘기라고 말씀드린것은.
만약에 위에 링크처럼 (URL)/ViewFile?Path=test 이렇게 넘어갔을때,
ViewFile 내에서는 "./$Path", 이렇게 사용하시면 될꺼 같다는 말이었습니다.^^
디렉토리 변경할때는 저 Path 에 다른 디렉토리명을 대입해서 페이지를 열면,
그 디렉토리에 있는 파일을 사용할수 있겠죠.
단 뷰어파일이 존재하는 디렉토리 내의 디렉토리만 이동할수 있겠죠.
약간 고치면 그건 상관 없을것 같습니다.^^

===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.

맹고이의 이미지


앗 감사합니다 헤헷^^;
마소를 사봐야 겠네용

http://gon1982.nafly.net/library/project/image_viewer/view_main.php?dir=picture1&page=1

방금 삽질로 구성해본겁니다.
대강 이런식으로 만들려구요...

답답하실텐데도 끝까지 도와주신
wind772 님께도 감사드립니다.^^
제가 만든 함수가 아니다 보니
이해가 어렵네요... 아무래도
제가 더 공부를 해야 될것 같습니다;;

p.s. alfalf님께도 감사드립니당

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.