달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
index.php

$('#file_upload').uploadify({
   'uploader'  : './swf/uploadify.swf',
   'script'    : './common/uploadify.php',
   'cancelImg' : './images/cancel.png',
   'folder'    : './uploads<?=$path?>',
   'multi'     : true,
   'fileExt'   : '*.jpg;*.jpeg;*.png;*.gif',
   'onComplete'  : function(event, ID, fileObj, response, data) {
    var ret = response.toString().split('|');
    if(ret[0] != 0){
     alert("Err : " + ret[0] + "\n" + ret[1]);     // ret[0] = 오류 코드 ,  ret[1] = 파일명     uploadify.php 에서 받은 리턴값
    } else {
     $("#filename").val(ret[1]);
          $.ajax({
           url : './common/upload.php',
           type : 'POST',
           dataType : 'json',
           data : $('form').serialize(),
           timeout : 5000,
           error : function(xhr){
            alert('DB 저장 중 오류가 발생하였습니다.\n' + xhr.responseText);
           },
           success : function(xhr){
       getThumbnailList(pathid);
           }
          });
    } 
      }
  });



<form name="frmFile" id="frmFile" method="POST" action="common/upload.php">
    <input type="hidden" id="filename" name="filename" value="" />
    <input type="hidden" id="pathID" name="pathID" value="<?=$pathid?>" />
    <input type="hidden" id="pathDir" name="pathDir" value="uploads<?=$path?>" />
    <div id="uploadBtn_layer"><input type="button" id="btnStartUpload" value="업로드 시작"/></div>

    <input type="file" name="file_upload" id="file_upload" />
   </form>

pathid 나  pathDir 은 DB에서 읽어온 정보를 넣는 것이므로 개인적인 작업이라 무시하시고 수정해서 사용 가능

jquery.uploadify.xx.js 파일  에서
g.folder=escape(f.folder); 를 찾아서
g.folder=encodeURIComponent(f.folder);  로 수정


Uploadifiy.php

if (!empty($_FILES)) {
  $tempFile = $_FILES['Filedata']['tmp_name'];
  $targetPath = $_SERVER['DOCUMENT_ROOT'] . urldecode($_REQUEST['folder']) . '/';    ///* 폴더 명을 urldecode 로 받는다.  */;
  $filename = iconv("UTF-8", "EUC-KR", $_FILES['Filedata']['name']);    // /* 파일 명을 urldecode 로 받고  iconv 로 처리 */
  $targetFile =  str_replace('//','/',iconv("UTF-8", "EUC-KR", $targetPath)) . $filename;   // /* 폴더명도 iconv 처리  */
  
   if(file_exists($targetFile)){
   echo "-200|overlap file name. [".iconv("EUC-KR", "UTF-8", $filename)."]";    // 이미 파일이 존재할  경우 -200cjfl
  } else {
   move_uploaded_file($tempFile, $targetFile);
   echo "0|".iconv("EUC-KR", "UTF-8", $filename);     // 업로드 성공하면 0
  }
 }
 else
 {
  echo "-100|Uploaded file is empty.";      // 파일이 없으면 -100 처리
 }
uploadify.php 에서 성공 처리 되면  upload.php 를  호출해서 DB에 데이터를 넣는다 이때 중요한것은 uploadify.php 에서 리턴시 다시 iconv("EUC-KR", "UTF-8", $filename)로
반대로 인코딩 해서 보내야 정상적으로 처리된다.. serialize 자체가 encodeURIcomponent() 가 붙다보니.. 인코딩 디코딩 부분이 까다롭다.

Upload.php

$filename = urldecode($_REQUEST['filename']);   // file명은 꼭 urldecode로
 $pathId = $_REQUEST['pathID'];
 if($pathId == "") $pathId = 1;
  $fullpath = "gallery/uploads";
 $path_result = mysql_query("select * from path where pidx = $pathId") or die(mysql_error());
 while($path_row = mysql_fetch_array($path_result)){
  $fullpath = $path_row[FULLPATH];
 }
 
 $targetFile =  $_SERVER['DOCUMENT_ROOT'] . $lib->upload_dir . iconv("UTF-8", "EUC-KR", $fullpath) . iconv("UTF-8", "EUC-KR", $filename);   // 경로명은 DB에서 가져와서 iconv 만 했지만 파라미터로 받을 경우 urldecode 후 iconv
 $ext = substr(strrchr($targetFile, '.'), 1);
 $filesize = filesize($targetFile);
 $width = 0;
 $height = 0;
 if(strtolower($ext) == "jpg" || strtolower($ext) == "gif" || strtolower($ext) == "png") {
  list($width, $height) = getimagesize($targetFile);
 }
 $now = date("Y-m-d h:i:s", time());
 //$filename = iconv("EUC-KR", "UTF-8", $filename);
 $file_query = "insert into Files (filename, pidx, extension, width, height, filesize, regdate)
  values('$filename','$pathId','$ext','$width','$height','$filesize','$now')";
 
 mysql_query($file_query) or die(mysql_error());



대충 문제가 됐던 것은 php 에서 리턴받은 한글 파일을 다시 다른 페이지로 넘기는 과정에서 한글 문제가 있었다.
어쨋든 폴더명이 한글이던 파일명이 한글이던 잘 올라간다.





Posted by SadDev
|
Posted by SadDev
|
회원가입을 받는데 완성형 한글만 작성이 가능하도록 하려고 한다.
하지만 모든 데이터는 UTF-8이다보니 아무문제 없이 조합형 한글도 작성이 가능하다
그래서 완성형 한글만 따로 체크를 하는 스크립트를 작성

function chkID()
{
var useTextEn = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQUSTUVWXYZ0123456789';
            var useTextKr = '가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝';

    var obj = document.getElementById('txtid');
    var val = obj.value;
    var chk = 0;
    for(i = 0; i < val.length; i++)
    {
        chk = 0;
        var v = val.charAt(i);
       
        for(j = 0; j < useTextEn.length; j++)
        {
            var v2 = useTextEn.charAt(j);
            if(v == v2)
            {
                chk++;
                break;
            }
        }
       
        for(j = 0; j < useTextKr.length; j++)
        {
            var v2 = useTextKr.charAt(j);
            if(v == v2)
            {
                chk++;
                break;
            }
        }
        if(chk == 0)
        {
            alert('사용 할 수 없는 문자');
            break;
        }
    }
}


순간 이게 머야~~ 라고 놀란 분도 있겠지만...
영문 a~z와 숫자 0~9 완성형 한글 2850자이다...

for문을 돌면서 체크를 하고 오류를 뱉어낸다.

간단한 유저 아이디 체크 같은 경우 큰 부하 없이 체크가 가능하지만.
게시판의 게시물 내용같은 긴 문장 검색하면 부하가 엄청날것 같다 ;;
Posted by SadDev
|