Extra Form
PHP PHP 7.2
CMS XpressEngine

게시판 상담기능 사용에 체크를 하고

 

접근 권한을 모든 대상에게 열어두면 

 

알아서 게시판 스킨의 message.html 을 읽어 옵니다.

 

여기에 _header.html 을 불러오는데..

 

$oDocument->isExists()  의 함수가 사용되면 비로그인 상태에서 해당 게시판에 접근하면  500에러가 발생합니다.(백지)

로그인을 할 경우는 이상이 없구요.

 

여기서 해결법은 상담 기능을 체크한 경우 접근권한을 로그인 대상자로 하여 비로그인 한 상태에서 접근하면 메시지모듈? 의 에러메시지로 출력되어 500에러가 발생하지 않습니다.

 

이와 같은 상황이 XE에서는 당연히 발생하는 증상인지 궁금합니다.

 

스킨제작자분께서 이 부분을 해결하려면 코드를 어떻게 고쳐야 하는걸까요?

  • profile

    현재 보고 있는 문서가 없다면 $oDocument라는 변수가 아예 존재하지 않을 것입니다. 존재하지 않는 변수에 ->isExists() 메소드를 실행하면 치명적인 오류가 발생하면서 500 코드가 나타나게 됩니다.

     

    if($oDocument->isExists())

    이렇게 되어 있는 코드에서 치명적인 오류가 발생한다면

    if($oDocument && $oDocument->isExists())

    이렇게 먼저 $oDocument 변수의 존재 여부를 확인한 후 사용하시면 됩니다.

  • profile profile

    상담기능 체크할 경우 접근을 열어두면 생기는 문제인데 코드가 완벽하지 않았다고 보는게 맞겠죠?
    상담기능이 동작하지 않았다면 발생하지는 않는 상황이긴 합니다.

    상담기능을 쓰지 않고 비회원이 막혀야 하는 경우는 권한설정에서 권한을 제대로 설정할 수 밖에 없을테니...

     

    아마 메시지모듈 에러 출력할 경우는 게시판 스킨이 불러올 이유는 없을거구요...

  • profile profile
    상담기능과 함께 사용하면 문제가 발생하는 서드파티 자료가 은근히 많습니다. 제가 만든 자료도 문제를 일으킨 적이 있고요. 은근히 많이 사용하는데도 서드파티 자료 제작자들 사이에서는 존재감이 떨어지는 기능인가 봅니다.