<?
# Auth : shkim
# filename :
# Email : isunnyk@empal.com, idxzone@naver.com
# Start Date : 2004.03.16.Tues
# Last Date :
# Description : filename
$ff = '신촌하하__1234abcd_+=|!@#$%^&*().gif';
$t = file_allowed($ff);
echo '$ff==' . $ff. '<br>';
echo '$t='. $t. '<p>';
$ff = '가 나{파}[학].--ㄴㅍㅎ_11_ㄱㄴㅍㅎ_99_1290_abyzABYZ_+=|!@#$%^&*().gif';
#$ff = 0;
$t = file_allowed($ff);
echo '$ff==' . $ff. '<br>';
echo '$t='. $t. '<p>';
echo file_nameDeny_hanGul($ff);
function file_allowed($given_filename){
//우선, 파일명에 부적합한것들 없애기
$str = $given_filename;
$b = array();
$a = array( "/\*/", "/\?/", "/\//", "/\|/"); //반드시 역슬래쉬
$str = preg_replace($a, $b, $str);
//$a2 = array('/"/', "/'/", "/ /", "/:/", "/;/", "/>/", "/</"); //역슬래쉬는 선택
$a2 = array('/\"/', "/\'/", "/ /", "/\:/", "/\;/", "/\>/", "/\</"); //역슬래쉬는 선택
$str = preg_replace($a2, $b, $str);
//추가적으로... `~ !@#$%^&
$c4 = array("/`/", "/~/", "/!/", "/@/", "/#/", "/%/", "/&/", "/^/", "/$/");
$str = preg_replace($c4, $b, $str);
$c5 = array("/\^/", "/\$/"); // 역슬래쉬 필수적.
$str = preg_replace($c5, $b, $str);
//역슬래쉬는 어케 제거하나??
// $ \ 를 어케 하나.
//appended....2004.03.16.
#$str = eregi_replace('$', '', $str); #wrong
#$str = eregi_replace("$", '', $str); #wrong
$str = eregi_replace('\$', '', $str); #success
#$str = eregi_replace("\$", '', $str); ## wrong
return $str;
}
function file_nameDeny_hanGul($filename){
//파일명 허용... 영문 숫자 [.], [_()-] , []{},
$newFileName = '';
$l = strlen($filename);
for( $i=0 ; $i<$l; $i++){
$c_one = substr($filename, $i, 1);
$d_ord = ord($c_one);
#echo $i. ':: '. $c_one. ' == '. $d_ord. "\t<br>\n";
if( $d_ord >=48 && $d_ord <= 57 ){ //0~9
$ok_name = true;
}else if( $d_ord>=97 && $d_ord<=122 ){ //a~z
$ok_name = true;
}else if( $d_ord>=65 && $d_ord<=90 ){ //A~Z
$ok_name = true;
}else if( $d_ord == 46 ){ //.
$ok_name = true;
}else if( $d_ord == 95 || $d_ord == 45 || $d_ord == 40 || $d_ord == 41 ){ //_ - ( )
$ok_name = true;
}else if( $d_ord == 123 || $d_ord == 125 || $d_ord == 91 || $d_ord == 93 ){ //{} []
//$ok_name = true;
}else{
$ok_name = false;
}
if( $ok_name == true ){
$newFileName = $newFileName . $c_one;
}
}
//파일명이 .으로 시작한다면, 앞에 뭔가 하나를 덧붙인다. 왜냐면, 숨김파일이니까..
if( $newFileName ){
if( eregi('^[.]', $newFileName) ){
$f_head = date('Ymd');
$newFileName = $f_head . $newFileName;
}
}
#echo '<hr>$newFileName=' . $newFileName;
return $newFileName;
}
?>
'인터넷정보' 카테고리의 다른 글
파일업로드 삭제 클래스 (0) | 2007.10.16 |
---|---|
파일업로드 삭제 클래스 (0) | 2007.10.16 |
문자열 내의 HTML 태그를 모두 없애는 방법 (0) | 2007.10.16 |
문자열 내의 HTML 태그를 모두 없애는 방법 (0) | 2007.10.16 |
파일네임 금지 (0) | 2007.10.16 |
mysql query 관련 class (0) | 2007.10.16 |
mysql query 관련 class (0) | 2007.10.16 |
호스팅 받는 업체들 용량체크하는법 (0) | 2007.10.16 |
호스팅 받는 업체들 용량체크하는법 (0) | 2007.10.16 |
Error Page Code (0) | 2007.10.16 |