제로보드 관련된 유용한 정보를 공유하는 곳입니다.
글 수 98
11
조회 수 : 3742 신고 : 0
출처 : |
---|
http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=on&ss=on&sc=off&keyword=이름&select_arrange=headnum&desc=asc&no=6525---------------------------------------------------------------
일단 기본적으로 화일의 중복을 최대한 막기위해 회원일 경우 화일이름앞에 글쓴이의 아이디가 들어가도록 하였고, 비회원일 경우 0~999 까지의 숫자가 랜덤하게 들어가도록 하였습니다.
비회원 몇십명이 한 게시판에서 완전히 동일한 시간에 글을 작성하여도 파일이름이 중복되는 것을 막기 위함입니다..
--------------------------------------------------------------
수정할 내용은 다음과 같습니다..
write_ok.php 에서 아래 부분을 찾아서 밑에 글을 추가해 주시고,,
/***************************************************************************
* 업로드가 있을때
**************************************************************************/
if($HTTP_POST_FILES[file1]) {
$file1 = $HTTP_POST_FILES[file1][tmp_name];
$file1_name = $HTTP_POST_FILES[file1][name];
$file1_size = $HTTP_POST_FILES[file1][size];
$file1_type = $HTTP_POST_FILES[file1][type];
}
if($HTTP_POST_FILES[file2]) {
$file2 = $HTTP_POST_FILES[file2][tmp_name];
$file2_name = $HTTP_POST_FILES[file2][name];
$file2_size = $HTTP_POST_FILES[file2][size];
$file2_type = $HTTP_POST_FILES[file2][type];
}
------------ 윗 글 아래에 다음을 추가
//추가 한글그림화일 이름 변경...
if($member[no]!=0) {
$user_no=$member[no];
$user_id_c=mysql_fetch_array(mysql_query("select user_id from $member_table where no='$user_no'"));
$user_id_r=$user_id_c[0];
}
else {
srand(time()); // 중복 방지를 위한 램덤출력.
$ran_c = (rand()%999); //0~999 숫자중 랜덤 출력
$user_id_r=$ran_c;
}
-----------여기까지...-------
같은 wriite_ok.php 파일에서 내려가다 보면
$file1=eregi_replace("\\","\",$file1);
$s_file_name1=str_replace(" ","_",$s_file_name1);
$s_file_name1=str_replace("-","_",$s_file_name1);
// 디렉토리를 검사함
if(!is_dir("data/".$id)) {
@mkdir("data/".$id,0777);
@chmod("data/".$id,0706);
}
이 나오는데 이글 바로 밑에 다음을 붙혀 넣으시면 됩니다..
// 한글이름인 그림화일인 경우 날짜로 화일명 변환
preg_match('/.([^.]+)$/', $s_file_name1, $match1);
$gfile_name1_type=$match1[1];
if((eregi("jpg",$gfile_name1_type))||(eregi("gif",$gfile_name1_type))||(eregi("bmp",$gfile_name1_type))||(eregi("png",$gfile_name1_type))) {
if(eregi("jpg",$gfile_name1_type)) $temp_c1="jpg";
elseif(eregi("gif",$gfile_name1_type)) $temp_c1="gif";
elseif(eregi("bmp",$gfile_name1_type)) $temp_c1="bmp";
else $temp_c1="png";
if(eregi("'",$s_file_name1)) {
$temp_name1=$user_id_r."_".time()."_01";
$s_file_name1 = "$temp_name1.$temp_c1";
}
else {
for($i2=0;$i2<strlen($s_file_name1);$i2++)
{
if(ord($s_file_name1[$i2])>0x80)
{
$temp_name1=$user_id_r."_".time()."_01";
$s_file_name1 = "$temp_name1.$temp_c1";
break;
}
}
}
}
또, 조금 아래에...
$file2=eregi_replace("\\","\",$file2);
$s_file_name2=str_replace(" ","_",$s_file_name2);
$s_file_name2=str_replace("-","_",$s_file_name2);
// 디렉토리를 검사함
if(!is_dir("data/".$id)) {
mkdir("data/".$id,0777);
@chmod("data/".$id,0706);
}
이 나오는데.. 그 바로 아래에... 다음을 붙혀 넣으시면 됩니다.
// 한글이름인 그림화일인 경우 날짜로 화일명 변환
preg_match('/.([^.]+)$/', $s_file_name2, $match2);
$gfile_name2_type=$match2[1];
if((eregi("jpg",$gfile_name2_type))||(eregi("gif",$gfile_name2_type))||(eregi("bmp",$gfile_name2_type))||(eregi("png",$gfile_name2_type))) {
if(eregi("jpg",$gfile_name2_type)) $temp_c2="jpg";
elseif(eregi("gif",$gfile_name2_type)) $temp_c2="gif";
elseif(eregi("bmp",$gfile_name2_type)) $temp_c2="bmp";
else $temp_c2="png";
if(eregi("'",$s_file_name2)) {
$temp_name2=$user_id_r."_".time()."_02";
$s_file_name2 = "$temp_name2.$temp_c2";
}
else {
for($i2=0;$i2<strlen($s_file_name2);$i2++)
{
if(ord($s_file_name2[$i2])>0x80)
{
$temp_name2=$user_id_r."_".time()."_02";
$s_file_name2 = "$temp_name2.$temp_c2";
break;
}
}
}
}
여기까지....------------------------------------
또한,, 한글파일이름이던, 영문 파일이름이던 모든 그림파일을 모두 숫자 형식으로 변경하고 싶으시면
위의 추가 팁에서 아래처럼 몇줄을 삭제하시면 됩니다.. file_name2 부분도 마찬가지로 수정..
// 한글이름인 그림화일인 경우 날짜로 화일명 변환
preg_match('/.([^.]+)$/', $s_file_name1, $match1);
$gfile_name1_type=$match1[1];
if((eregi("jpg",$gfile_name1_type))||(eregi("gif",$gfile_name1_type))||(eregi("bmp",$gfile_name1_type))||(eregi("png",$gfile_name1_type))) {
if(eregi("jpg",$gfile_name1_type)) $temp_c1="jpg";
elseif(eregi("gif",$gfile_name1_type)) $temp_c1="gif";
elseif(eregi("bmp",$gfile_name1_type)) $temp_c1="bmp";
else $temp_c1="png";
// if(eregi("'",$s_file_name1)) {
// $temp_name1=$user_id_r."_".time()."_01";
// $s_file_name1 = "$temp_name1.$temp_c1";
// }
// else {
// for($i2=0;$i2<strlen($s_file_name1);$i2++)
// {
// if(ord($s_file_name1[$i2])>0x80)
// {
$temp_name1=$user_id_r."_".time()."_01";
$s_file_name1 = "$temp_name1.$temp_c1";
// break;
// }
// }
// }
}
--------------------------------------------
또, 날짜표시를 리눅스형식이 아닌 달력형식으로 변경을 원하시면...
위의 글에서 아래 내용을 찾아서 변경해주시면 됩니다..물론 file_name2도 마찬가지 형식으로 변환해야겠죠..
$temp_name1=$user_id."_".time()."_01"; -> 이부분을 아래와 같이 변경...
$temp_name1=$user_id."_".date("Ymd_His")."_01";
초단위까지 표시하지 않으면,, 파일이름이 중복될 수가 있어서.....
-------------------------------------------
또 마지막으로... 화일이름 앞에 본인의 사이트 이름을 남기고 싶으신 분들은.
$temp_name1=$user_id."_".time()."_01"; -> 이부분을 아래와 같이 변경...
$temp_name1="site_name_".$user_id."_".time()."_01";
한글 파일이름을 변경해 주는 기능인데.. 사이트 이름을 한글로 넣으시는 분들은 없으시겠죠..^^;;;
노파심에 한가지 더... 사이트 이름에 "http://" "/" "" "빈칸" 등의 특수문자는 빼고 넣으셔야 합니다.-.-;;;
-------------------------------------------
여기 까지 입니다..
제가 초보라.. 손 가는데로 수정을 하였습니다.. 각종 테스트는 모두 해보았습니다만,,.좀더 간략화된 구문이나, 문제점을 아시는 분의 조언 부탁드립니다... 그럼..
테스트를 마친 파일이름과 그 결과는 다음과 같습니다..
abc abc.jpg -> abc_abc.jpg
abc 한글_01.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.abc.한글.jpg -> user_id_날짜_02 (그림2에 올릴경우)
abc.abc_abc.jpg -> 변화없음
한글_abc.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.zip -> 변화없음
abc'abc.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.jpg.zip -> 변화없음
일단 기본적으로 화일의 중복을 최대한 막기위해 회원일 경우 화일이름앞에 글쓴이의 아이디가 들어가도록 하였고, 비회원일 경우 0~999 까지의 숫자가 랜덤하게 들어가도록 하였습니다.
비회원 몇십명이 한 게시판에서 완전히 동일한 시간에 글을 작성하여도 파일이름이 중복되는 것을 막기 위함입니다..
--------------------------------------------------------------
수정할 내용은 다음과 같습니다..
write_ok.php 에서 아래 부분을 찾아서 밑에 글을 추가해 주시고,,
/***************************************************************************
* 업로드가 있을때
**************************************************************************/
if($HTTP_POST_FILES[file1]) {
$file1 = $HTTP_POST_FILES[file1][tmp_name];
$file1_name = $HTTP_POST_FILES[file1][name];
$file1_size = $HTTP_POST_FILES[file1][size];
$file1_type = $HTTP_POST_FILES[file1][type];
}
if($HTTP_POST_FILES[file2]) {
$file2 = $HTTP_POST_FILES[file2][tmp_name];
$file2_name = $HTTP_POST_FILES[file2][name];
$file2_size = $HTTP_POST_FILES[file2][size];
$file2_type = $HTTP_POST_FILES[file2][type];
}
------------ 윗 글 아래에 다음을 추가
//추가 한글그림화일 이름 변경...
if($member[no]!=0) {
$user_no=$member[no];
$user_id_c=mysql_fetch_array(mysql_query("select user_id from $member_table where no='$user_no'"));
$user_id_r=$user_id_c[0];
}
else {
srand(time()); // 중복 방지를 위한 램덤출력.
$ran_c = (rand()%999); //0~999 숫자중 랜덤 출력
$user_id_r=$ran_c;
}
-----------여기까지...-------
같은 wriite_ok.php 파일에서 내려가다 보면
$file1=eregi_replace("\\","\",$file1);
$s_file_name1=str_replace(" ","_",$s_file_name1);
$s_file_name1=str_replace("-","_",$s_file_name1);
// 디렉토리를 검사함
if(!is_dir("data/".$id)) {
@mkdir("data/".$id,0777);
@chmod("data/".$id,0706);
}
이 나오는데 이글 바로 밑에 다음을 붙혀 넣으시면 됩니다..
// 한글이름인 그림화일인 경우 날짜로 화일명 변환
preg_match('/.([^.]+)$/', $s_file_name1, $match1);
$gfile_name1_type=$match1[1];
if((eregi("jpg",$gfile_name1_type))||(eregi("gif",$gfile_name1_type))||(eregi("bmp",$gfile_name1_type))||(eregi("png",$gfile_name1_type))) {
if(eregi("jpg",$gfile_name1_type)) $temp_c1="jpg";
elseif(eregi("gif",$gfile_name1_type)) $temp_c1="gif";
elseif(eregi("bmp",$gfile_name1_type)) $temp_c1="bmp";
else $temp_c1="png";
if(eregi("'",$s_file_name1)) {
$temp_name1=$user_id_r."_".time()."_01";
$s_file_name1 = "$temp_name1.$temp_c1";
}
else {
for($i2=0;$i2<strlen($s_file_name1);$i2++)
{
if(ord($s_file_name1[$i2])>0x80)
{
$temp_name1=$user_id_r."_".time()."_01";
$s_file_name1 = "$temp_name1.$temp_c1";
break;
}
}
}
}
또, 조금 아래에...
$file2=eregi_replace("\\","\",$file2);
$s_file_name2=str_replace(" ","_",$s_file_name2);
$s_file_name2=str_replace("-","_",$s_file_name2);
// 디렉토리를 검사함
if(!is_dir("data/".$id)) {
mkdir("data/".$id,0777);
@chmod("data/".$id,0706);
}
이 나오는데.. 그 바로 아래에... 다음을 붙혀 넣으시면 됩니다.
// 한글이름인 그림화일인 경우 날짜로 화일명 변환
preg_match('/.([^.]+)$/', $s_file_name2, $match2);
$gfile_name2_type=$match2[1];
if((eregi("jpg",$gfile_name2_type))||(eregi("gif",$gfile_name2_type))||(eregi("bmp",$gfile_name2_type))||(eregi("png",$gfile_name2_type))) {
if(eregi("jpg",$gfile_name2_type)) $temp_c2="jpg";
elseif(eregi("gif",$gfile_name2_type)) $temp_c2="gif";
elseif(eregi("bmp",$gfile_name2_type)) $temp_c2="bmp";
else $temp_c2="png";
if(eregi("'",$s_file_name2)) {
$temp_name2=$user_id_r."_".time()."_02";
$s_file_name2 = "$temp_name2.$temp_c2";
}
else {
for($i2=0;$i2<strlen($s_file_name2);$i2++)
{
if(ord($s_file_name2[$i2])>0x80)
{
$temp_name2=$user_id_r."_".time()."_02";
$s_file_name2 = "$temp_name2.$temp_c2";
break;
}
}
}
}
여기까지....------------------------------------
또한,, 한글파일이름이던, 영문 파일이름이던 모든 그림파일을 모두 숫자 형식으로 변경하고 싶으시면
위의 추가 팁에서 아래처럼 몇줄을 삭제하시면 됩니다.. file_name2 부분도 마찬가지로 수정..
// 한글이름인 그림화일인 경우 날짜로 화일명 변환
preg_match('/.([^.]+)$/', $s_file_name1, $match1);
$gfile_name1_type=$match1[1];
if((eregi("jpg",$gfile_name1_type))||(eregi("gif",$gfile_name1_type))||(eregi("bmp",$gfile_name1_type))||(eregi("png",$gfile_name1_type))) {
if(eregi("jpg",$gfile_name1_type)) $temp_c1="jpg";
elseif(eregi("gif",$gfile_name1_type)) $temp_c1="gif";
elseif(eregi("bmp",$gfile_name1_type)) $temp_c1="bmp";
else $temp_c1="png";
// if(eregi("'",$s_file_name1)) {
// $temp_name1=$user_id_r."_".time()."_01";
// $s_file_name1 = "$temp_name1.$temp_c1";
// }
// else {
// for($i2=0;$i2<strlen($s_file_name1);$i2++)
// {
// if(ord($s_file_name1[$i2])>0x80)
// {
$temp_name1=$user_id_r."_".time()."_01";
$s_file_name1 = "$temp_name1.$temp_c1";
// break;
// }
// }
// }
}
--------------------------------------------
또, 날짜표시를 리눅스형식이 아닌 달력형식으로 변경을 원하시면...
위의 글에서 아래 내용을 찾아서 변경해주시면 됩니다..물론 file_name2도 마찬가지 형식으로 변환해야겠죠..
$temp_name1=$user_id."_".time()."_01"; -> 이부분을 아래와 같이 변경...
$temp_name1=$user_id."_".date("Ymd_His")."_01";
초단위까지 표시하지 않으면,, 파일이름이 중복될 수가 있어서.....
-------------------------------------------
또 마지막으로... 화일이름 앞에 본인의 사이트 이름을 남기고 싶으신 분들은.
$temp_name1=$user_id."_".time()."_01"; -> 이부분을 아래와 같이 변경...
$temp_name1="site_name_".$user_id."_".time()."_01";
한글 파일이름을 변경해 주는 기능인데.. 사이트 이름을 한글로 넣으시는 분들은 없으시겠죠..^^;;;
노파심에 한가지 더... 사이트 이름에 "http://" "/" "" "빈칸" 등의 특수문자는 빼고 넣으셔야 합니다.-.-;;;
-------------------------------------------
여기 까지 입니다..
제가 초보라.. 손 가는데로 수정을 하였습니다.. 각종 테스트는 모두 해보았습니다만,,.좀더 간략화된 구문이나, 문제점을 아시는 분의 조언 부탁드립니다... 그럼..
테스트를 마친 파일이름과 그 결과는 다음과 같습니다..
abc abc.jpg -> abc_abc.jpg
abc 한글_01.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.abc.한글.jpg -> user_id_날짜_02 (그림2에 올릴경우)
abc.abc_abc.jpg -> 변화없음
한글_abc.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.zip -> 변화없음
abc'abc.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.jpg.zip -> 변화없음
소중한 댓글 부탁드립니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 아이콘이 붙게됩니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 아이콘이 붙게됩니다.
추천수에 따른 배경색 보기
본문으로 바로가기
- 추천수 50개이상
- 추천수 30개이상
- 추천수 20개이상
- 추천수 10개이상
- 추천수 3개이상