제로보드 관련된 유용한 정보를 공유하는 곳입니다.
글 수 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개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시
![BEST](/modules/board/skins/xe_webmini/img/common/icon_bestreply.gif)
추천수에 따른 배경색 보기
본문으로 바로가기
- 추천수 50개이상
- 추천수 30개이상
- 추천수 20개이상
- 추천수 10개이상
- 추천수 3개이상