웹마스터 팁

http://sangsangsoft.com정말 마지막 버젼이 아닐까 생각한다 ㅡ.ㅡ

ver4에서 업그레이드 된 부분은 아래와 같다.

기존의 중복방지 (시분초) 를 붙이던 부분을 찜찜함을 이기지 못 하고 타임스탬프 값으로 교체했다. 결론적으로 거의 중복이 일어날 상황이 없다는 것이다.

data.zip ==(중복발생)==> data(1234567890).zip 로 변경

기존에는 중복발생시 그래도 의미있는 값을 붙여보고자 했는데 생각해 보니 별 쓸모 없는 값이었다. 어차피 더미라고 생각되서 타임스탬프를 사용하기로 했다.

여기까지가 끝이라고 생각했는데... 어떤분이 .php나 기타 스크립트 파일을 업로드 제한을 해달라고 해서 적용해 봤다.

사실 업로드만 신경써서 다른 스크립트 파일이 올라갔을 때는 신경 안 쓰고 있었는데 이것도 큰 문제일것 같아서 아래와 같이 처리해 봤다.

.php .php3 .php4 .htm .html .cgi .pl .jsp .asp 파일이 업로드 되면 긑에 .txt를 붙여서 일반 텍스트 파일로 인식하게 했다.

그냥 막아 버리면 업로드컴포넌트 역활을 넘어서기에 업로드를 시키는대신 .txt를 붙이므로 스크립트 실행을 막았다.

이제 마지막이라는 기분으로 사용법을 정리하자면...

업로드폼이 있는 html 파일에서

<form method="post" action="upload.cgi" enctype="multipart/form-data">
이거 밑에 이 두가지 히든 폼이 반드시 들어가야 된다. 업로드 태그보다 앞에 있어야 된다는 말이다.
<input type="hidden" name="upload_dir" value="up/">
<input type="hidden" name="return_url" value="end.php">

name="upload_dir" value="up_data/" <== 업로드 시킬 경로 마지막 /는 붙이던 안 붙이던 상관없음. upload.cgi를 중심으로 상대경로를 적어주면 된다.

name="return_url" value="end.php" <== 업로드가 완료되고난 후 이동할 파일 ( 보통 여기서 DB 작업을 하게 된다. 업로드폼의 데이터가 post로 submit 되기 때문에 일반 프로그램하듯이 그냥 하면 된다. 업로드 파일은 <input type="file" name="upfile"> 이런 식으로 사용시 echo $upfile; 하면 업로드 된 파일의 이름이 나오게 된다. upfile[]의 배열 방식도 echo $upfile[0]; 똑같이 업로드 시킨 파일의 이름이 나오게 된다.

== up.html ==
<form method="post" action="upload.cgi" enctype="multipart/form-data">

<input type="hidden" name="upload_dir" value="up/">
<input type="hidden" name="return_url" value="end.php">

name <input type="text" name="name">
.....
....
..
</form>

아직도 테스트는 하고 있는데 어디서 버그가 발견 될지는 모르겠다. 버그 발견시 즉시 신고를 해주시기 바랍니다^^ 그럼...