xe 관련 질문 끌어올립니다..
- 0
-
0
태그 입력란에 스크립트 입력하면 작성한 스크립트가 작동 불가능하게 막으려면 어떻게 해야하나요?
코어 개조를 했기때문에 코어 업그레이드는 못해주고 있는 상황이며 xe 1.7.3.7 버전이고
태그란에 스크립트를 입력시 실행이 되는 상황입니다.
스케치북 1.6.3.6 버전입니다.
http://colorscripter.com/s/Xq0Rzft 이렇게 해도 안되고
http://colorscripter.com/s/R2Yw1af 이렇게 해도 안됩니다..
/modules/tag/tag.controller.php 원본은 아래 주소입니다.
filter나 ruleset으로 validation 을 추가 하는게 제일 좋은 방법이긴 하지만.. 많이 복잡하기에 간단히 스크립트 추가하는 방법으로 구현하였습니다. 룰셋을 추가하는 방법으로는 http://www.slideshare.net/flyskykr/xe-35073789 여기를 참조해 주세요. 아주 자세히 설명되어 있네요.
여기선 간단히 wirte_form에 태그값을 검증하는 스크립트를 추가함으로 해결합니다.
좋은 방법은 아니에요.
#board/sketchbook5/write_form.html line 1
- <script>
- function validation_tags() {
- var tags = document.getElementById("tags").value;
- var pattern = new RegExp('^[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3\,]*$');
- if (!pattern.test(tags) && tags != "") {
- alert('태그는 한글,콤마로만 입력 가능합니다.')
- return false;
- }
- return true;
- }
- </script>
젤 상단에 위와 같이 script를 추가해 주세요.
#board/sketchbook5/write_form.html line 18
- <form cond="!Mobile::isMobileCheckByAgent()" action="./" method="post" onsubmit="return (validation_tags() && procFilter(this, window.insert) )" class="bd_wrt bd_wrt_main clear">
form 태그를 위와 같이 변경합니다.
_write_form_mobile.html 모바일 파일도 위와 같이 젤상단에 스크립트 추가해 주시고 form 태그 변경해 주세요.
http://colorscripter.com/s/1fFX1QX
풀코드 공유 드립니다.
건투를 빌겠습니다. 아래는 결과물입니다.
채택도 해주세요~
- #line 42
- function triggerInsertTag(&$obj)
- {
- $module_srl = $obj->module_srl;
- $document_srl = $obj->document_srl;
- $tags = htmlspecialchars($obj->tags);
- if(!$document_srl) return new Object();
- // Remove all tags that article
- $output = $this->triggerDeleteTag($obj);
- if(!$output->toBool()) return $output;
- // Re-enter the tag
- $args = new stdClass();
- $args->module_srl = $module_srl;
- $args->document_srl = $document_srl;
- $tag_list = explode(',',$tags);
- $tag_count = count($tag_list);
- for($i=0;$i<$tag_count;$i++)
- {
- unset($args->tag);
- $args->tag = trim($tag_list[$i]);
- if(!$args->tag) continue;
- $output = executeQuery('tag.insertTag', $args);
- if(!$output->toBool()) return $output;
- }
- return new Object();
- }
위의 걸로 다시 해보세요
http://colorscripter.com/s/USmHm8O
특수 문자를 html 엔티티로 변환하는 함수 입니다.
데이터 베이스 접근 가능하신가요??
이상하네요..
xe1.7.3.7, 스캐치북 레이아웃 1.6.3.6, 스케치북 게시판 스킨 1.6.2.16 버전으로 셋팅해서
태그를 등록해 보면 스크립트가 출력되지 않는데요...
스케치북의 모듈을 수정해 보도록 하죠...
같은 버전이라도 코드가 다를 수 있으니..
- #modules/board/skins/sketchbook/_read.html line 173
- <li><a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}">{htmlspecialchars($tag)}</a><span class="comma">,</span></li>
http://colorscripter.com/s/92g64G9 // 이건 _read.html 파일의 풀코드입니다.
이걸로도 안되신다면
_read.html 코드만이라도 올려주세요
아니면 모든 xe 파일들을 올려주시면 좋구요
말씀해 주신 버전으로 셋팅을 해서 태그를 등록해 보면 위와 같이 정상적으로 등록이 되어 집니다..
주신 정보만으로 문제를 해결하기엔 너무 제한적이고 어렵네요
혹시 코어를 수정하셨다고 했는데 태그 입력 부분을 수정하신건지..
전체 파일을 공유해 주신다면 해결하는데에 수월할 거 같아요..
답변 작성
질문에 적합한 답변을 상세히 작성해 주시기 바랍니다.
답변이 찬성되면 태그평판 +2점이 적립, 반대되면 태그평판 -1점 차감됩니다.
답변이 채택되면 태그평판 +10점이 적립됩니다.