테스트 사이트 - 개발 중인 베타 버전입니다

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

· 13년 전 · 1499 · 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] 요건 안되는 것 같던데..

수정 방법 부탁드립니다!

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 4개

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

$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 쓰인 경우만 텍스트로 뽑는 소스인 줄 알았는데 아니었나보네요.

덕분에 해결했습니다.
빠르고 정확한 답변 주셔서 정말 감사드립니다!

게시글 목록

번호 제목
284508
284499
284492
284490
284484
284481
284478
284476
284474
284472
284470
284458
284457
284454
284453
284447
284446
284444
284441
284440