html_purifier 함수에 태그 를 추가하는 방법에 질문드려요.ㅜ
안녕하세요.
저는 영카트 html_purifier 함수에 태그들과 기능들을 추가할려고 합니다.
그 이유는 팝업레이어[내용]에 다음과 같은 코딩이 되어 있는데요. 파일이름은 newwinform.php 이에요.
<td><?php echo editor_html('nw_content', get_text(html_purifier($nw['nw_content']), 0)); ?></td>
여기에 제가 다음과 같은 코딩을 하면
===============================================================
<?php
include_once('./_common.php');
?>
<form style="display:inline" id="fregisterform" name="fregisterform" action="http://localhost/......php" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
<select name="a" id="a">
<option value="1">b</option>
<option value="2">c</option>
<option value="3">d</option>
</select>
<button type="submit" class="btn_submit" style="height:30px; width:300px;">가입하기</button>
<input type="hidden" id="mb_id" name="mb_id" value="<?php echo $member['mb_id'] ?>">
<input type="hidden" id="mb_name" name="mb_name" value="<?php echo $member['mb_name'] ?>">
<input type="hidden" id="mb_hp" name="mb_hp" value="<?php echo $member['mb_hp'] ?>">
==================================================================
위 모든 소스들이 다 사라지고 없습니다. b,c,d 만 나오는데 이것이 html_purifier 이 함수 때문에
그렇다고 하는데 이 함수는 다음과 같습니다. common.lib.php 에 있습니다.
function html_purifier($html)
{
$f = file(G5_PLUGIN_PATH.'/htmlpurifier/safeiframe.txt');
$domains = array();
foreach($f as $domain){
// 첫행이 # 이면 주석 처리
if (!preg_match("/^#/", $domain)) {
$domain = trim($domain);
if ($domain)
array_push($domains, $domain);
}
}
// 내 도메인도 추가
array_push($domains, $_SERVER['HTTP_HOST'].'/');
$safeiframe = implode('|', $domains);
include_once(G5_PLUGIN_PATH.'/htmlpurifier/HTMLPurifier.standalone.php');
include_once(G5_PLUGIN_PATH.'/htmlpurifier/extend.video.php');
$config = HTMLPurifier_Config::createDefault();
// data/cache 디렉토리에 CSS, HTML, URI 디렉토리 등을 만든다.
$config->set('Cache.SerializerPath', G5_DATA_PATH.'/cache');
$config->set('HTML.SafeEmbed', false);
$config->set('HTML.SafeObject', false);
$config->set('Output.FlashCompat', false);
$config->set('HTML.SafeIframe', true);
if( (function_exists('check_html_link_nofollow') && check_html_link_nofollow('html_purifier')) ){
$config->set('HTML.Nofollow', true); // rel=nofollow 으로 스팸유입을 줄임
}
$config->set('URI.SafeIframeRegexp','%^(https?:)?//('.$safeiframe.')%');
$config->set('Attr.AllowedFrameTargets', array('_blank'));
//유튜브, 비메오 전체화면 가능하게 하기
$config->set('Filter.Custom', array(new HTMLPurifier_Filter_Iframevideo()));
$purifier = new HTMLPurifier($config);
return $purifier->purify($html);
}
사라지는 form, select, option, button, input 태그들 및 <?php ?> 문을 살리기 위해서는
여기 html_purifier 함수에 추가를 해야하는 것 같은데 어떻게 추가해 하는지 도저히 찾아봐도 없어서 이렇게 선배님께 답변 부탁드립니다. ㅜㅜ 답변해 주시면 정말 고맙겠습니다.
답변 4개 / 댓글 4개
html_purifier를 빼셔야죠. html을 모두 제거하는 펑션인데. 현재 아래 문을 넣으면 모두 제거 됩니다.
즉 태그기능 추가는 그냥 함수를 빼고 쓰시는 것하고 똑같습니다.
답변에 대한 댓글 1개
php가 실행되면서 echo를 해석해서 뒤에 있는 문장을 뿌져 줍니다.
그러면 이미 php가 파싱한 부분은 넘어갔기 때문에 어떤 코드를 뿌려도 php코드는 실행이 안됩니다.
파싱이 된 후에 로컬로 내려와 진다고 하면, 그 다음에는 자바스크립트 영역이 될 것입니다.
안되는 것을 붙잡고 있질 말고, 어떤 것을 구현하고 싶은지에 대해서 문의를 하는 것이 더 빠를 수도 있습니다.
고수님들이 비슷한 것을 바로 찾아 줄수도 있으니까요...
답변에 대한 댓글 1개
html_purifier 함수 말고 get_text 함수 쪽을 확인해 보셔야 될 것 같습니다.
답변에 대한 댓글 1개
$configuration->set('HTML.Allowed', 'form,select,option,button,input');
이렇게 한 줄 추가후 테스트해 보시죠.
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
include_once('./_common.php');
?> 안먹힙니다. 그래서 input tag 있는 mb_id , mb_name, mb_hp 안넘어 갑니다. <?php include_once('./_common.php'); ?> 기능이 되도록 하는 방법이 있나요?