Extra Form
PHP PHP 7.3
CMS Rhymix

 

게시판별로 댓글 작성제한을 레벨별로 걸어두었는데

 

7.1에서는 정상작동하던게 7.3에서는 작동을 안하네요..

 

// 레벨 제한
$module_info = Context::get("module_info");
$module_srl = $module_info->module_srl;
if (in_array($module_srl, array(게시판 모듈srl)))
{
    // 포인트 & 레벨 정보 불러오기
    $oPointModel = &getModel('point');
    $point = $oPointModel->getPoint($logged_info->member_srl);
    $oModuleModel = &getModel('module');
    $config = $oModuleModel->getModuleConfig('point');
    $level = $oPointModel->getLevel($point, $config->level_step);
    // 어드민은 레벨제한 없이 작성가능
    $notadmin = $logged_info->is_admin != 'Y';
    // 본인 글에서는 레벨 제한 없이 작성가능
    $nothuman = $obj->member_srl != $oDocument->get('member_srl');

    $subject = $obj->content;
    $pattern = "/감사합니다[.!]*|사랑합니다[.!]*/";
    preg_match($pattern, $subject, $matches);
    if ($level<5 && $notadmin && $nothuman && !in_array($subject, $matches)) return new BaseObject(-1, '해당게시판에서는 5레벨 미만은 지정된 문구 외에 작성하실 수 없습니다.');
}

 

이런식으로 작성을 해놨습니다.

7.1에서 테스트했을때는 정상적으로 작동을 했는데

7.3에서는 계속 지정해둔 오류문구가 뜨네요.. 조건에 안맞는것도 아닌데.. 

  • profile

    if ($level<5 && $notadmin && $nothuman && !in_array($subject, $matches))

     

    조건이 4개나 있는데 그 중 어느 것이 참으로 나와서는 안 되는 상황에서 참으로 나오는지 각각 따로 찍어보시면 되겠습니다. 개인적으로는 마지막 조건이 가장 의심스럽네요. 정규식 체크 후에 in_array 함수로 또다시 체크하는 방식은 생전 처음 봅니다. ㅎㅎ

     

    서버 환경이 바뀌었다면 정규식 마지막 슬래시 뒤에 u를 붙여서 유니코드 처리를 해주어야 할 수도 있습니다.

  • profile ?
    마지막 조건이 문제인거같아서

    $obj->content != "감사합니다"

    조건을 다 지우고 위에 조건만 넣어봤는데도 안되네요.

    7.1에서는 정상적으로 작동하던게 갑자기 안되니 뭔가 머리로 이해가 안되네요.. ㅋㅋ

    그리고 생전 처음보는이유는.. 제가 그냥 머릿속으로 생각한걸 그대로 적은거라서 ..
    이쪽엔 지식이 아주 적다보니 ㅋㅋ..
  • ?
    $subject = strip_tags($obj->content);

    html 태그를 제거하고 출력시키면 되네용.. 호홓