악성태그 변환 함수에 레벨 추가하려는데요. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

악성태그 변환 함수에 레벨 추가하려는데요. 정보

악성태그 변환 함수에 레벨 추가하려는데요.

본문

// 악성태그 변환
function bad_tag_convert($code)
{
    global $view;
    global $member, $is_admin;

    if ($is_admin && $member[mb_id] != $view[mb_id]) {
        //$code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>(\<\/(embed|object)\>)?#i",
        // embed 또는 object 태그를 막지 않는 경우 필터링이 되도록 수정
        $code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>?(\<\/(embed|object)\>)?#i",
                    create_function('$matches', 'return "<div class=\"embedx\">보안문제로 인하여 관리자 아이디로는 embed 또는 object 태그를 볼 수 없습니다. 확인하시려면 관리권한이 없는 다른 아이디로 접속하세요.</div>";'),
                    $code);
    }

    //return preg_replace("/\<([\/]?)(script|iframe)([^\>]*)\>/i", "&lt;$1$2$3&gt;", $code);
    // script 나 iframe 태그를 막지 않는 경우 필터링이 되도록 수정
    return preg_replace("/\<([\/]?)(script|iframe)([^\>]*)\>?/i", "&lt;$1$2$3&gt;", $code);
}



이 소스가 너무 불편해서 조금 수정하려고 하는데요.
레벨 3 이상인 사람의 글이면 관리자도 바로 동영상을 볼 수 있고
레벨 3 이상이 글을 쓰면 script나 iframe 모두 가능하게 하려고 하거든요.

첫번째 if 문으로
if($is_admin && 글쓴이레벨 < 3 )

마지막 줄에 if 문 추가해서
if(글쓴이레벨 < 3) 마지막줄;

이런식으로 수정하려고 하거든요.
근데 $member[mb_id]가 로그인한 사람 아이디인 것 같고
$view[mb_id]가 글쓴 사람 아이디인 것 같은데 맞나요?

그리고 글쓴 사람 레벨을 확인하려면 변수(?)를 어떻게 써야하죠?
$member[$view[mb_id]_level] 뭐 이런식으로 써야하나요?
$view[mb_level] 요건 안되는 것 같던데..

수정 방법 부탁드립니다!
  • 복사

댓글 전체

글쓴이 레벨이 틀려서 수정합니다. ^^;

$view[mb_id]가 글쓴 사람 아이디인 것 같은데 맞나요?  ==> 네 맞습니다.

그리고 글쓴 사람 레벨을 확인하려면 변수(?)를 어떻게 써야하죠?
==>
$w_mb = get_member($view[mb_id]);
$w_mb[mb_level];    //  <== 이것이 글쓴이 레벨입니다. ^^;
빠른 답변 진심으로 감사드립니다.
get_member를 해주는 거군요.

근데 한가지 문제가 발생해서요..

if($is_admin && $w_mb[mb_level] < 3)
이렇게 이것만 수정했더니 원하던대로 레벨2가 올린 동영상은
문구가 뜨면서 바로 확인할 수 없었고 레벨3이 올린 동영상은 바로 확인할 수 있었습니다.

그리고 나서 아래에
if($w_mb[mb_level] < 3)
    return preg_replace("/\<([\/]?)(script|iframe)([^\>]*)\>?/i", "&lt;$1$2$3&gt;", $code);

이렇게 수정해주고 iframe 테스트를 해봤는데요.
이렇게 하고나니까 레벨 2가 쓴 글은 정상적으로 iframe이 텍스트로 뜨는데
레벨 3이 쓴 글은 아예 아무것도 나오지 않습니다.
iframe을 써서 안 나오는 건 줄 알았는데 동영상 올린 것도 안 나오더라고요.
운영자가 봐도 안 나오고 자기 자신이 봐도 안 나옵니다.
혹시 왜 그런지 알 수 있을까요..
혹시 마지막 조건문의 else 인경우, return $code를 해주셨는지요..
그렇지 않으면, 레벨이 3이상인 경우는 아무것도 리턴을 하지 않을것 같네요. ^^
기본적으로 code는 무조건 리턴하는데
script, iframe 쓰인 경우만 텍스트로 뽑는 소스인 줄 알았는데 아니었나보네요.

덕분에 해결했습니다.
빠르고 정확한 답변 주셔서 정말 감사드립니다!
© SIRSOFT
현재 페이지 제일 처음으로