html_purifier 함수에 태그 를 추가하는 방법에 질문드려요.ㅜ

html_purifier 함수에 태그 를 추가하는 방법에 질문드려요.ㅜ

QA

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

html_purifier를 빼셔야죠.  html을 모두 제거하는 펑션인데.  현재 아래 문을 넣으면 모두 제거 됩니다.

 

즉 태그기능 추가는 그냥 함수를 빼고 쓰시는 것하고 똑같습니다.

답변주셔서 고마워요. 말씀하신대로 빼고 <td><?php echo editor_html('nw_content', get_text($nw['nw_content'])); ?></td>  테스트를 했는데 모든 태그들은 되지만 <?php
include_once('./_common.php');
?> 안먹힙니다. 그래서 input tag 있는 mb_id , mb_name, mb_hp  안넘어 갑니다.          <?php include_once('./_common.php'); ?> 기능이 되도록 하는 방법이 있나요?

$configuration->set('HTML.Allowed', 'form,select,option,button,input');

이렇게 한 줄 추가후 테스트해 보시죠.

html_purifier 함수 말고 get_text 함수 쪽을 확인해 보셔야 될 것 같습니다.

php가 실행되면서 echo를 해석해서 뒤에 있는 문장을 뿌져 줍니다. 

 

그러면 이미 php가 파싱한 부분은 넘어갔기 때문에 어떤 코드를 뿌려도 php코드는 실행이 안됩니다.

 

파싱이 된 후에 로컬로 내려와 진다고 하면,  그 다음에는 자바스크립트 영역이 될 것입니다.

 

안되는 것을 붙잡고 있질 말고,  어떤 것을 구현하고 싶은지에 대해서 문의를 하는 것이 더 빠를 수도 있습니다.

 

고수님들이 비슷한 것을 바로 찾아 줄수도 있으니까요...

마젠토님 대단히 감사하고 고마워요.  그누보드 팝업레이어 기능에서 <?php include_once('./_common.php'); ?> 기능은 안되는 것이었군요.  말씀대로 안되는것 붙잡지 않고 정확히 구현하고자 하는 것을 찾아서 문의 하겠습니다. 좋은 조언 고맙습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 182
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT