블로그 이미지
괴스트

예진이와 고고씽!!

Rss feed Tistory
Dev/Ajax/Xml/w3c/Html5 2010/04/28 17:37

jQuery의 validation(검증) 플러그인 예제 및 사용법

크리에이티브 커먼즈 라이선스
Creative Commons License




jQuery의 validation(검증) 플러그인이다. 일단 데모 페이지부터 보면 어떤 건지 알 수 있을 것이다.

validation 플러그인 데모 페이지

사용법은 사실 데모 페이지 긁어와서 이름만 고치는 정도로도 알 수 있을 텐데, 몇 가지 써 보자.

두 가지 방법으로 사용할 수 있다. 첫 번째는 심플한 방법이다.

첫 번째 방법

이 방법은 위 데모 페이지에서 위쪽에 있는 예시에 사용된 방법이다.

△이 첫 번째 방법은 javascript 코드가 간단하다는 장점이 있는 반면, 메시지가 영어로 나오고, html 코드에 들어갈 게 많아진다는 단점이 있다. 비표준 어트리뷰트가 사용된다는 점도 단점이다.

1.$(function(){
2.  // submit 시켰을 때 #form을 검증합니다.
3.  $("#form").validate();
4.});

javascript 코드에는 위와 같이 쓰고(물론 jquery.js를 위 코드 전에 호출해야 하는 건 당연하다.) html에는 이렇게 적는 것이다.

01.<form id="form" method="get" action="">
02.    <fieldset>
03.        <legend>잘 적어 주세요</legend>
04.        <p>
05.            <label for="cname">이름 (필수, 최소 2글자)</label>
06.            <input id="cname" name="name" class="required" minlength="2" />
07.        <p>
08.            <label for="cemail">E-Mail (필수)</label>
09.            <input id="cemail" name="email" class="required email" />
10.        </p>
11.        <p>
12.            <label for="curl">URL (선택)</label>
13.            <input id="curl" name="url" class="url" value="" />
14.        </p>
15.        <p>
16.            <label for="ccomment">남기실 말씀 (필수)</label>
17.            <textarea id="ccomment" name="comment" class="required"></textarea>
18.        </p>
19.        <p>
20.            <input class="submit" type="submit" value="Submit"/>
21.        </p>
22.    </fieldset>
23.</form>

위 코드에서 볼 수 있는 것처럼, html코드에 적어 주면 된다. 정리하면 다음과 같다.

  • 필수요소인 경우 class="required" 라고 쓴다.
  • email 검증을 해야 하는 경우 class="email"이라고 쓴다.
  • 필 수이면서 이메일 검증을 해야 하는 경우에는 복수 클래스 병기하는 방법을 따라 class="required email" 이라고 적으면 되고 나머지도 마찬가지다.
  • 최소 글자수가 있는 경우 minlength="숫자" 형태로 적는다.

위와 같은 방법으로 했을 때의 최대 단점은 메시지가 영어로 나온다는 점이다. 필수 요소인데 안 적은 경우 'This field is required.'라는 메세지가 뜬다. 메세지를 한국어로 하고 싶다면 두 번째 방법을 사용하라.

다른 단점도 있다. minlength 라는 어트리뷰트는 웹표준 검증기를 통과하지 못한다. 표준 점수를 깎아먹을 수 있다는 것이다. 그게 사용성보다 중요한 요소는 아니지만, 웹을 잘 모르는 상관들에게는 중요할지 모른다.

두 번째 방법

이 방법은 모든 요소를 javascript 단에서 처리하기 때문에 가장 깔끔한 코드를 생산할 수 있다.

일단 코드를 보자.

01.$(function(){
02.  // validate signup form on keyup and submit
03.  $("#signupForm").validate({
04.    rules: {
05.      name: "required",
06.      password: {
07.        required: true,
08.        minlength: 8
09.      },
10.      confirm_password: {
11.        required: true,
12.        minlength: 8,
13.        equalTo: "#password"
14.      },
15.      email: {
16.        required: true,
17.        email: true
18.      },
19.      topic: {
20.        required: "#newsletter:checked",
21.        minlength: 2
22.      },
23.      agree: "required"
24.    },
25.    messages: {
26.      name: " 이름을 입력해 주세요",
27.      password: {
28.        required: "암호를 입력해 주세요",
29.        minlength: "암호는 8자 이상이어야 합니다."
30.      },
31.      confirm_password: {
32.        required: "암호를 한 번 더 입력해 주세요",
33.        minlength: "암호는 8자 이상이어야 합니다.",
34.        equalTo: "암호가 일치하지 않습니다."
35.      },
36.      email: "형식에 맞는 이메일을 입력해 주세요.",
37.      agree: "정책 동의에 체크해 주세요"
38.    }
39.  });
40.});

위 에서 눈여겨 볼 점은 validate 안에 들어있는 {} 안쪽 부분이다. 여기 옵션이 들어간다.

이 옵션 중 핵심적으로 사용된 것인 rules 옵션이다.

1.rules: {옵션오브젝트}

이 런 형식으로 사용된다. 옵션 오브젝트는 어떻게 구성되는지 보자.

1.{name: "required"}

이렇게 씌인 게 있다. 이것은 name이 "name"인 놈은 필수라는 뜻이다. 다른 방식으로 적용할 수도 있는데 한 input(혹은 textarea)에 여러 개의 옵션을 걸 때다.

1.email: {required: true, email: true}

이 런 식으로 들어가는데, 이 때 email: true 항목은 당연히 이메일형식 검증을 하겠다는 뜻이다.

rules 옵션 아래쪽에 있는 message 옵션은 rules에 대응되는 메시지들을 적어주면 된다. 위 형식을 참고하면 될 것이므로 굳이 일일이 설명하지 않겠다.

다음 html 코드를 보자.

01.<form id="signupForm" method="get" action="">
02.  <fieldset>
03.    <legend>정보를 입력해 주세요</legend>
04.    <p>
05.      <label for="name">Lastname</label>
06.      <input id="name" name="name" />
07.    </p>
08.    <p>
09.      <label for="password">암호</label>
10.      <input id="password" name="password" type="password" />
11.    </p>
12.    <p>
13.      <label for="confirm_password">암호확 인</label>
14.      <input id="confirm_password" name="confirm_password" type="password" />
15.    </p>
16.    <p>
17.      <label for="email">Email</label>
18.      <input id="email" name="email" />
19.    </p>
20.    <p>
21.      <label for="agree">개인정보 보호정책 동의</label>
22.      <input type="checkbox" class="checkbox" id="agree" name="agree" />
23.    </p>
24.    <p>
25.      <input class="submit" type="submit" value="제출"/>
26.    </p>
27.  </fieldset>
28.</form>

위 코드는 html 검증을 통과할 수 있는 깔끔한 코드다. label 에 있는 for 어트리뷰트는 웹표준에 맞는 어트리뷰트다. 이 라벨이 어떤 인풋에 대한 것인지, 해당 인풋의 id를 써 주는 부분이다.

그러나 jQuery 검증 플러그인의 자바스크립트 코드에서 위 폼을 인식할 때는 name 어트리뷰트를 기준으로 하는 것이므로, name을 신경쓰면 된다. 즉, label은 선택이니 너무 눈 돌아가지 않아도 된다는 말이다.

name 을 바탕으로 하므로 checkbox나 radio 같은 것도 검증이 가능하게 된다.

필수다! 하는 메시지의 스타일

자, 그럼 required 라고 써준 input에 입력을 안 하고 submit 버튼을 눌렀을 때(이 경우를 '에러가 났을 때'라고 표현하자.) 나올 스타일은 어디서 결정할까?

그건 따로 써줘야 한다. 미리 준비된 css는 제공하고 있지 않은 듯하다.

사용되는 페이지의 head 부분에 아래처럼 써 주면 된다.

두 경우를 제공하겠다. 첫 번째 것은 메시지가 input의 오른쪽에 나오는 디자인이다. 두 번째 것은 메시지가 input의 하단에 나오는 디자인이다. 둘 다 input의 테두리가 빨간 점선으로 변하고, 메시지도 빨간 색으로 뜬다. css 지식이 조금만 있다면 수정해서 자신이 원하는대로 사용할 수 있을 것이다.

01.<style type="text/css">
02.input.error, textarea.error{
03.  border:1px dashed red;
04.}
05.label.error{
06.  margin-left:10px;
07.  color:red;
08.}
09.</style>

위 스타일이 에러메시지를 input 오른쪽 공간에 띄워 주는 스타일이다.

01.<style type="text/css">
02.input.error, textarea.error{
03.  border:1px dashed red;
04.}
05.label.error{
06.  display:block;
07.  color:red;
08.}
09.</style>

이 스타일은 에러메시지를 input 하단에 띄워 주는 스타일이다.

jQuery Validation Plugin API 문서

API 문서를 보는 건 항상 귀찮은 일이지만, 유용한 일이기도 하다.

내가 보기에 API 문서 중 핵심은 rules다.

다양한 옵션의 API가 나와있는 주소를 곧장 링크할 테니 참고해서 보기 바란다.

jQuery 검증 플러그인 API 문서 : validate 함수의 option 사용법

저작자 표시
Dev/php 2010/04/23 09:14

오픈베이스 검색엔진 sphinx 설치 및 사용법

크리에이티브 커먼즈 라이선스
Creative Commons License



Zend Lucene
- http://framework.zend.com/manual/en/zend.search.lucene.html

sphinxs
- http://www.sphinxsearch.com

Xapian
- http://xapian.org/

Solr
- http://lucene.apache.org/solr/



http://www.sphinxsearch.com/docs/current.html#conf-morphology


http://www.sphinxsearch.com/docs/current.html
http://www.sphinxsearch.com/wiki/doku.php?id=charset_tables
http://code.google.com/p/sphinxsearch/source/browse/
http://code.google.com/p/sphinxsearch/source/browse/branches/rel099/api/sphinxapi.php
http://code.google.com/p/sphinxsearch/source/browse/branches/rel099/api/test.php


1. 설치

정도는 알아서...-_-;
emerge app-misc/sphinx 하면 끝나는 환경에 있는 사람이 이 이상 자세하겐 무리~



2. sphinx.conf

다국어 검색을 위해 각각의 문자범위를 일일히 conf 에 적어줘야 한다.
게다가 한줄 길이 제한까지 있어서 정규식으로 대충 정리해 넣었다.
원본 테이블은
http://www.sphinxsearch.com/wiki/doku.php?id=charset_tables
요기 맨 앞의 txt 링크이다.
conf 파일은 첨부한다.



3. query

스핑크스는 인덱싱 할 데이터가 많을 경우를 위해 범위를 나눠 쿼리해 오는 것이 가능하고,
새 범위만 인덱싱을 한 후 기존 인덱스 정보에 병합하는 것이 가능하다.
본 예제는 새 범위 인덱싱 후 병합으로 설명한다.

스핑크스의 쿼리문은 맨 앞의 것이 반드시 고유번호(sequence) 여야 하며,
그 필드명이 무엇이 되었든 간에 스핑크스 내에서는 무조건 id 이다.


source main 중
    sql_query                = \
        SELECT seq, uid, author, subject, contents \
        FROM xenobb_sphinx_view \
        WHERE sphinx_indexed = TRUE

테이블에 sphinx_indexed 라는 필드를 추가했고, main 은 이미 인덱싱 된것만 쿼리하게 했다.

source delta : main 중
    sql_query                = \
        SELECT seq, uid, author, subject, contents \
        FROM xenobb_sphinx_view \
        WHERE sphinx_indexed = FALSE
    
    sql_query_post = UPDATE xenobb SET sphinx_indexed = TRUE WHERE sphinx_indexed = FALSE

인덱싱 되지 않은 것을 쿼리해 온 후 인덱싱 되었다고 표기해 준다.



4. indexer

conf 를 다 작성했으면 인덱스를 생성한다.
$ indexer main
$ indexer delta



5. crontab

searchd 가 대몬이라 알아서 계속 인덱싱 해 줄줄 알았는데 안되나보다.

#!/bin/bash
cd /home/xenoside/sphinx
if [ -f need_indexing ]; then
    rm need_indexing
    indexer delta --rotate
    indexer --merge main delta --rotate
    #if [[ "x`date +%H%M`" == "x0400" ]]; then
    #    indexer main --rotate
    #fi
fi

* * * * * (매분) 으로 걸어주자.

게시판에서 insert, update, delete 가 발생하면 /home/xenoside/sphinx/need_indexing 파일을 빈 파일로 생성해 주면 1분 내에 인덱싱 된다.

주석 부분은 찔끔찔끔 병합되는 main 인덱스가 혹 느려지면 새로 인덱싱 시키기 위한건데 전체가 재 인덱싱 되므로 굳이 자동으로 할 필요 없이 느려졌다 생각되면 한번 해 주면 된다.



6. searchd

/etc/init.d/searchd start
rc-update add searchd default
배포판 별로 알아서 시작 스크립트에 넣어주자~



7. php
http://code.google.com/p/sphinxsearch/source/browse/branches/rel099/api/sphinxapi.php
요거를 이용한다.
자세한 예제는
http://code.google.com/p/sphinxsearch/source/browse/branches/rel099/api/test.php
요기잉다.

아래는 랭킹이고 순서고 다 필요 없이 걍 검색해 오는 간단 예제이다.

if(isset($_GET['q'])) {
    $_GET['q'] = trim($_GET['q']);
    if($_GET['q'] != '') {
        require_once 'sphinxapi.php';
        $cl = new SphinxClient();
        $cl->SetServer('/var/run/searchd.sock', 5433);
        $cl->SetConnectTimeout(1);
        $cl->SetArrayResult(true);
        $cl->SetWeights(array(100, 1));
        $cl->SetMatchMode(SPH_MATCH_ALL);
        $cl->SetLimits(0, 100);
        $cl->SetRankingMode(SPH_RANK_NONE);
        if(false !== ($res = $cl->Query($_GET['q'], '*'))) {
            $seqs = array();
            foreach($res['matches'] as $row) {
                $seqs[] = $row['id'];
            }
            if(count($seqs) != 0) {
                $sel->wheres[] = 'bb.seq IN ('.implode(',', $seqs).')';
            }
        }
    }
}


매뉴얼 잘 보면 실제 쿼리문 처럼 순서 정하고 limit 해 오고 하는 것 다 된다.



Written by Song Hyo-Jin (shj at xenosi.de)
License : Creative Commons - Attribution (CC-BY)



출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=71173


저작자 표시
Dev/flex 2010/04/22 09:57

flex 오픈소스 모음 사이트

크리에이티브 커먼즈 라이선스
Creative Commons License



[오픈소스샘플모음] http://www.quietlyscheming.com/blog/

[flexlib] http://code.google.com/p/flexlib/
[Flexed] http://flexed.wordpress.com/ 
[익스플로러] http://demo.quietlyscheming.com/ChartSampler/app.html 
[샘 플소스모음] http://tech.groups.yahoo.com/group/flexcomponents/database (로긴)
[RSSReader] http://renaun.com/flex2/MXNARSSReader/srcview/
[mxmlc] http://www.senocular.com/flash/tutorials/as3withmxmlc/
[TREE] http://cflex.net/showFileDetails.cfm?ObjectID=554&Object=File&ChannelID=1
[GRID] http://thanksmister.com/dnddatagrid/index.html
[TAB] http://everythingflex.com/flex2/MultiRowTabs/Index.html
[COMPONENT] http://shigeru-nakagaki.com/index.cfm?C
 
[*] http://www.shockwave-india.com/blog/
[*] http://www.cynergysystems.com/blogs/page/andrewtrice?entry=flex_2_bitmapdata_tricks_and
[*] http://www.cynergysystems.com/blogs/page/keunlee
[*] http://weblogs.macromedia.com/auhlmann/archives/2006/11/download_distor.cfm#more
[*] http://dougmccune.com/blog/
[*] http://recycle.andre-michelle.com/
 
[CHART] http://www.stretchmedia.ca/code_examples/offset_calculator/SeriesOffsetCalculator.html
[CHART] http://www.stretchmedia.ca/code_examples/chart_range_selection/main.html
[CHART] http://flexapps.macromedia.com/flex2beta3/chartexplorer/explorer.html
[CHART] http://demo.quietlyscheming.com/ChartSampler/app.html
[STYLE] http://www.merhl.com/flex2_samples/filterExplorer/


[*] http://graemeharker.blogspot.com/2006/06/flex-and-net-tutorials-1.html
[*] http://en.wikipedia.org/wiki/Bresenham's_line_algorithm
[STYLE] http://examples.adobe.com/flex2/consulting/styleexplorer/Flex2StyleExplorer.html

 
[Certification Program Planning Guide] http://www.donathgroup.com/pdf/DonathCERTPlanGuide.pdf 
 
[Artemis] http://artemis.effectiveui.com/
[Cairngen] http://www.ericfeminella.com/blog/2007/05/09/cairngen-ant-tasks-12-release/
[Presentations for new Web] http://www.spresent.com/v2/ 
[flexibleexperiments] http://flexibleexperiments.wordpress.com/
[renaun] http://renaun.com/blog/code-examples/ 
 
[del.icio.us 에 즐겨찾기된 사이트] http://del.icio.us/tag/flex2?page=1 
 
[component] http://flexbox.mrinalwadhwa.com/ 
 
[Flash Sample] http://www.adobe.com/support/documentation/en/flash/samples/
[Flash Resource] http://www.adobe.com/support/documentation/en/flash/ 
 
[*] http://tools.assembla.com/flashcomponent/changeset/4/flashComponentAnalysis/flex2  
[*] http://www.fullasagoog.com/

저작자 표시
Dev/flex 2010/04/21 18:47

flex를 이용한 태그클라우드

크리에이티브 커먼즈 라이선스
Creative Commons License




퍼 왔습니당..

출처 :   http://loveash.kr/94



먼저 이 글은 제가 종종 들려서 좋은 정보 얻고 있는  티 스토리>포럼>스킨/플러그인 에서 Blue'nLive 가 소개해 주신

플러그인을 이용한 글임을 밝힙니다.  자세한 소개는 http://bluenlive.net/491 를 참고하시면 됩니다.^^



자, 일단 제 블로그 오른편의 태그 목록을 보세요..먼가 달라졌지요?^^




네, 위와 같이 약간 3D 형태로 보이는 태그가 보이시죠?

자, 마우스를 태그 위로 움직여 보세요~

보신 소감이 어떠신가요?

막~~~~~ 지구본처럼 돌아가는 태그목록... 기존꺼보다는 멋지지 않나요?^^

네, Cumulus for Tistory 라는 태그 플러그인입니다.

원래 워드프레스용으로 만들어진 플러그인을 티스토리에 맞게, 그리고 한글폰트도 가능하게

Blue'nLive 님이 수정해서 올리신 거라네요.. 감사합니다!!!



그럼 이제 적용하는 방법을 알려드려야죠!

자, 일단 아래 파일들을 다운받아서 관리자모드>스킨>Html/Css 편집 으로 가서 파일 업로드를 이용해서 블로그에 올려줍니다.


위 압축파일을 열면 swfobject.js 란 파일과 tagcloud.swf 란 파일 2개가 나옵니다.
반드시 압축해제한 상태에서 파일 2개를 업로드 해주세요



파일을 업로드 하셨으면 html 을 수정하겠습니다.

 Skin.html 에서 이 부분을 찾으세요


찾으셨나요? 보시다시피 <태그목록> 또는 <s_random_tags>를 찾으시면 요런 부분이 보이실 겁니다.
수정해야 할 부분은 제가 마우스로 표시해 놓은 부분입니다.
<ul>  ~ </ul> 부분이죠..


그럼 이 부분을 고쳐보죠~

위 구간을 아래와 같이 똑같이 고쳐보겠습니다.


네, 사진을 보고 다 치라고 하면 여기서 좌절하시는 분 많겠죠~^^
텍스트 문서로 만들어놨으니 열어서 복사>붙여넣기로 수정하세요


위 텍스트 파일 열면 그 전체를 복사하시면 될겁니다.

그리고 나서 "저장"



그리고 나면 저처럼 이쁜 태그목록을 보실 수 있습니다.

참고로 스크립트 중간에 100%, 200 이런게 보이실겁니다.

이건 가로사이즈를 100%로 하란거구, 세로를 200픽셀로 하란겁니다.

색을 "0x222222"로 해 놓은것은 티스토리 기본색상으로 하란건데, 본인 입맛에 맞게 수정가능하십니다.

전 스크립트는 잘 몰라서 원본 그대로에서 움직이는 속도만 좀 빠르게 변화시켰네요^^

이 스크립트의 변수를 좀 자세히 알고 싶으신 분은

http://bluenlive.net/491 를 방문하시거나,

http://www.roytanck.com/2009/03/11/how-to-use-wp-cumulus-shortcodes/#more-1346 

를 참고하시면 되겠습니다~^^


그럼 블로그를 이쁘게!^^

아, 혹시 아시는분 알려주세요..

제가 위에 텍스트 박스들 사용했는데 저거 무조건 가로사이즈가

최대로만 열리네요. 사이즈 폭 조정하는 법 아시는 분 알려주시면 감사하겠습니다~^^
저작자 표시
Dev/php 2010/04/21 09:50

flash + xml + php + db 연동원리

크리에이티브 커먼즈 라이선스
Creative Commons License





flash + xml + php + db 간의 상호작용과 관련 파일입니다.

테스트를 위해 flash + xml  연동관련 공개된 파일을 근거로 하였습니다.
==>> flash 소스의 출처가 생각나지 않는군요...  생각나면 적겠습니다.

------------------------- 전체원리설명 --------------
1.내용
- db + xml + php + flash 연동테스트

2. 파일설명
  ㄱ. xml_updata.php
     : db정보를 근거로 php에서 xml 파일을 신규 또는 기존 파일을 새로 갱신한다. (utf-8로 변환)

  ㄴ. gallery.xml
     : xml_updata.php에서 신규생성된파일

  ㄷ. gallery.swf
     : gallery.xml 정보를 불러와서 flash 구현.

3. 원리
  xml + flash 간의 연동파일을 근거로 php에서 xml 파일을 자동생성함.

4. 그누보드와 연결성
  ㄱ. 게시판에서 자료입력후 업데이트시 xml 갱신자료를 xml_updata.php 에 전달한다.

5. 활용
  - 상단 및 좌측 네비게이션(메뉴)
  - 최신갤러리스킨
  - 갤러리게시판스킨
  - 멀티적연동 템플릿
-----------------------------------------------------


--------------xml_updata.php-------------

<?php

######################환경변수#########################
$xml_dir  = "";  // 신규생성할 디렉토리 변수
$xml_path = "gallery.xml"; // 신규생성할 xml 파일
$laguage_ = "euc-kr";

#######################################################

 

//디렉토리가 존재하지 않는다면 신규생성한다
@mkdir($xml_dir, 0707);
@chmod($xml_dir, 0707);


// file open
//$xml_file = fopen($xml_path, "w+") or die("xml file open erro.");
$xml_file = fopen($xml_path, "w+");

//파일이 존재하지 않는다면 신규생성한다.
if(!$xml_file){
fwrite($xml_file, "");
fclose($xml_file);
@chmod($xml_path, 0707);
}

 

/**************************** xml data start**************************/
/**

<gallery title="Navdeeps Gallery" thumbDir="images/thumbs/" imageDir="images/" random="False">
 <category name="3차원포토사진">
  <image>
   <date>날짜입력하는곳</date>
   <title>사진제목출력1</title>
   <desc>사진간단설명</desc>
   <thumb>3d_01.jpg</thumb>
   <img>3d_01.jpg</img>
  </image>
  <image>
   <date>날짜입력하는곳1</date>
   <title>사진제목출력2</title>
   <desc>사진간단설명22</desc>
   <thumb>3d_02.jpg</thumb>
   <img>3d_02.jpg</img>
  </image>
 </category>
</gallery>

**/
$data[lauage]       = "<?xml version=\"1.0\"  encoding=\"{$laguage_}\" ?>"; 


$data[xml_start]    = "<gallery title=\"Navdeeps Gallery\" thumbDir=\"images/thumbs/\" imageDir=\"images/\" random=\"False\">";
$data[xml_end]      = "</gallery>";

$get_xml   = "";
//$get_xml  .= $data[lauage];
$get_xml  .= $data[xml_start];

 

$get_xml  .= "<category name=\"제목변환입니다1\">";

$count_num    = 7;
for($i=1;$i<$count_num;$i++){

$get_xml    .= "<image>";
$get_xml    .= "<date>날자변경".$i."</date>";
$get_xml    .= "<title>사진제목을 출력합니다".$i."</title>";
$get_xml    .= "<desc>사진설명에 대한 정의입니다.".$i."</desc>";
$get_xml    .= "<thumb>3d_0".$i.".jpg</thumb>";
$get_xml    .= "<img>3d_0".$i.".jpg</img>";
$get_xml    .= "</image>";

 

}
$get_xml  .= "</category>";


$get_xml      .= $data[xml_end];

/****************************xml data end**************************/

//변환
$get_xml = iconv("EUC-KR", "UTF-8",$get_xml);

// write action
if(!fwrite($xml_file, $get_xml)) echo "file wite erro.";

// file close
fclose($xml_file);

 

?>

------------------------------------------------


테스트

==>> 웹서버에 업로드후 접속

fla파일 : http://www.smashingmagazine.com/2007/10/12/flash-based-galleries-for-your-images/


출처: http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=14963

저작자 표시
TOTAL 114,290 TODAY 48