YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > PHP
검색
멤버이름    오토
비밀번호 
 

첨부파일 등록시 신경쓸 것들

페이지 정보

작성자 MintState 댓글 0건 조회 12,896회 작성일 08-10-29 17:09

본문

첨부파일 등록시 신경쓸 것들

파일업로드를 할 때 form 에서 사용된 file control 이름이 attach 라고 하고,

이를 처리하기 위해 $attach, $attach_name, $attach_size, $attach_type 등을 바로 쓰게되면
편법을 써서 서버의 파일을 빼낼 수 있는 위험이 있기 때문에 이를 방지하기 위한 코딩 방법임

▶ is_uploaded_file() 함수 사용
    정말 업로드된 파일인지 확인

  사용 예)
    if (!is_uploaded_file($_FILES['attach'])) {
        exit;
    }


▶ 변수 명 지정 방식

파일 이름
$_FILES['attach']['name']

파일 종류 (예: "image/png")
$_FILES['attach']['type']

파일 크기
$_FILES['attach']['size']

임시 디렉토리에 저장된 이름
$_FILES['attach']['tmp_name']

에러 코드
$_FILES['attach']['error']

    UPLOAD_ERR_OK (0) - 업로드 성공
    UPLOAD_ERR_INI_SIZE (1) - php.ini 에서 제한한 MAX_FILE_SIZE 초과
    UPLOAD_ERR_FORM_SIZE (2) - HTML 폼에서 제한한 MAX_FILE_SIZE 초과
    UPLOAD_ERR_PARTIAL (3) - 파일의 일부분만 업로드 되었음
    UPLOAD_ERR_NO_FILE (4) - 업로드된 파일이 없음

    상수는 PHP 4.3.0 이상 부터 지원됨, 이전버전은 숫자로 지원

$_FILES[] 는 PHP 4.0.0 이상 부터 지원됨
error 속성은 PHP 4.2.0 이상 부터 지원

$_FILES[] 대신 $HTTP_POST_FILES[] 로 써도 됨


▶ 파일 복사

파일을 복사하기 위해

copy($_FILES['attach'], $dest_file);
를 사용하는 대신

move_uploaded_file($_FILES['attach']['name'], $dest_file);
을 사용


참고 :
register globals off 상태에서는 $_FILES 변수에 배열로 들어갑니다. 항상 phpinfo() 를 하는 습관을 길러야 되겠습니다. 사실 디버깅시에 echo 문으로 체크 하는것과 phpinfo() 만 확인해도 70% 이상 디버깅 가능하다고 생각합니다.

문 :
UPLOAD_ERR_FORM_SIZE
이건 첨보네요; 폼에서 사이즈를 어떻게 제한하죠?
답 :
<input type="hidden" name="MAX_FILE_SIZE" value="500">
이렇게 제한할 byte를 적어주면됩니다.

댓글목록

등록된 댓글이 없습니다.

Total 165건 3 페이지
PHP 목록
번호 제목 글쓴이 조회 날짜
115 MintState 12579 11-10
114 MintState 12585 10-29
113 MintState 12598 11-03
112 MintState 12603 10-31
111 MintState 12643 10-31
110 MintState 12647 11-10
109 MintState 12683 11-03
108 MintState 12859 11-03
107 MintState 12879 11-10
열람중 MintState 12897 10-29
105 MintState 12955 11-03
104 MintState 12961 11-10
103 MintState 13024 11-10
102 MintState 13052 10-31
101 MintState 13090 11-03
100 MintState 13099 10-28
99 MintState 13204 11-03
98 MintState 13263 02-26
97 MintState 13352 10-31
96 MintState 13356 11-10
95 MintState 13384 10-21
94 MintState 13442 11-03
93 MintState 13462 10-28
92 MintState 13481 10-29
91 MintState 13488 02-25
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™