- Today
- Total
CODE CAVE
[PHP] 파일 형식 체크 함수 본문
파일 형식 체크 함수 (이미지, 그 외)
function file_chk($file, $type = ""){
$file_ext = explode(".", strrev($file));
$file_ext = strrev($file_ext[0]);
if(!$type or $type == "Gallery"){
//타입이 갤러리일 경우
$img_ok = array("gif", "png", "jpg", "jpeg", "bmp", "GIF", "PNG", "JPG", "JPEG", "BMP");
if(!in_array($file_ext, $img_ok)) page_move("이미지 파일만 업로드 가능합니다.", false);
} else {
//갤러리 외의 타입은 웹 코드 파일을 막는다.
$img_no = array("html", "htm", "php", "js", "jsp", "asp", "HTML", "HTM", "PHP", "JS", "JSP", "ASP");
if(in_array($file_ext, $img_no)) page_move("업로드 할 수 없는 파일 형식입니다.", false);
}
return $file_ext;
}
파일을 업로드 할 때 갤러리의 경우는 이미지만 올라가야하고, 그 외 파일 첨부는 보안에 위험이 될 수 있는 파일들은 업로드가 되면 안될 것 입니다.
그래서 만들어 봤습니다.
페이지 타입($type)에 따라 파일의 확장자 검사를 다르게 하고, 페이지 이동을 하는 함수입니다.
위 함수는 이럴 때 사용할 수 있는 단순하면서 할 기능은 다 합니다.
file_chk(파일이름, 페이지의타입)
위 함수는 단순히 확장자 검사만 할 뿐인데요~
실제로 정말 까다롭게 파일을 검사하는 큰 기업 같은 경우는 파일의 내부까지 검사하여 파일 타입을 제대로 체크하여 확장자를 속이는 간단한 훼이크로는 업로드할 수 없게 되있더라구요,
나중에 이렇게 강력한 파일 검사 기능을 개발하게 된다면 또 포스팅 해보겠습니다 ㅎㅎ (그런 날이 오길..)
추가적으로 위의 file_chk()에서 쓴 page_move 함수는 나름 꾀 유용합니다. 보통은 페이지이동 유형별로 함수를 나눠놓는데, 저는 하나의 함수가 매개변수에 따라 다수의 역할을 할 수 있게 해봤습니다.
function page_move($msg, $url){
if(!$msg) {
if(!$url) {
echo "<script>history.back();</script>";
} else {
echo "<script>location.href='".$url."'</script>";
}
} else {
if(!$url) {
echo "<script>alert(\"$msg\"); history.back();</script>";
} else {
echo "<script>alert(\"$msg\"); location.href='".$url."'</script>";
}
}
}
이 함수로 사용하는 페이지 이동 유형은4가지 입니다.
1. page_move(false, false); : 메시지 출력 없이 페이지 뒤로
: 그냥 무작정 한페이지 뒤로 가게 만듭니다.
2. page_move(false, "url"); : 메시지 출력 없이 페이지 "url" 로
: 보통 로그인이 완료될 때 "로긴이 완료되었습니다!" 라는 alert 이 뜨고 이동되지는 않죠? 이럴때 씁니다.
3. page_move("message", false); : 메시지 출력 후 페이지 뒤로
: 뭔가 에러가 있을때 이 에러를 팝업으로 알려주고 뒤로 가지게 됩니다. 팝업메세지 -> 뒤로
4. page_move("message", "url"); : 메시지 출력 후 페이지 "url" 로
: 회원가입 같은 경우는 회원가입 축하 메시지가 나오고 이동되는 경우가 많죠 ㅎㅎ 이렇게 팝업메시지 -> 특정페이지 에 씁니다.
비슷한 기능을 하는 괜찮은 함수 작성한거 있으시면 같이 댓글로 공유해주세요!! ㅎㅎ
도움이 되셨다면 아래 하트를 뿅..
▼▼▼▼▼▼
'Web > Back-End' 카테고리의 다른 글
PHP Notice 로그 지우기 (0) | 2016.07.12 |
---|---|
PHP 프레임워크 라라벨(Laravel) 사용 후기 (0) | 2016.07.05 |
[PHP] 파일 다운로드 소스코드 및 설명 (4) | 2016.06.08 |
[PHP] 업로드 된 파일 삭제 함수 (0) | 2016.06.08 |
[PHP] 파일 업로드 소스코드 및 분석 (0) | 2016.06.08 |
- AD
- For 개발자