특정게시판에서만 (묻고답하기)
글작성 시 쿼리를 돌려 이 회원이 서명에 아무것도 입력하지 않은 회원인지 확인해서 입력 안했다면...
너 서명좀 입력해줄래! 정말....!
이라고 알럿을 띄워주고 글 작성은 안되고 리턴되게 가능할까요...
질문시 굉장히 참조가 될만한 사항 그리고 커뮤니티 회원들끼리 가장 궁금해하는 내용을 서명에 넣도록 하는 관례가 만들어진 사이트에요 ㅡㅡ;
특정게시판에서만 (묻고답하기)
글작성 시 쿼리를 돌려 이 회원이 서명에 아무것도 입력하지 않은 회원인지 확인해서 입력 안했다면...
너 서명좀 입력해줄래! 정말....!
이라고 알럿을 띄워주고 글 작성은 안되고 리턴되게 가능할까요...
질문시 굉장히 참조가 될만한 사항 그리고 커뮤니티 회원들끼리 가장 궁금해하는 내용을 서명에 넣도록 하는 관례가 만들어진 사이트에요 ㅡㅡ;
댓글 21
현재 로그인된 회원의 서명을 가져오는 코드:
$signature = getModel('member')->getSignature(Context::get('logged_info')->member_srl);
회원정보 수정시 서명을 입력하지 않으면 공백이나 빈 태그만 들어갈 수도 있으므로
아래의 코드를 사용해서 공백과 태그를 지워줍니다.
$signature = trim(strip_tags($signature));
여기서 $signature에 내용이 없으면 빠꾸~
if(Context::get('mid') == 묻고답하기게시판mid && !$signature)
{
return new Object(-1, '서명입력하셈!!!!도대체몇번을말해야알아듣나!!!');
}
if(in_array($called_position, array('before_module_init', 'after_module_proc')))
{
$signature = getModel('member')->getSignature(Context::get('logged_info')->member_srl);
$signature = trim(strip_tags($signature));
if(!$signature)
{
return new Object(-1, '회원정보 서명입력란에 함께하는 반려견 정보를 입력하셔야 글 작성이 가능합니다!');
}
}
before_module_proc 시점에서 $this->stop('에러메시지'); 해보세요.
if(in_array($called_position, array('before_module_init', 'after_module_proc')))
{
$signature = getModel('member')->getSignature(Context::get('logged_info')->member_srl);
$signature = trim(strip_tags($signature));
if(!$signature)
{
if(in_array($act, array('procBoardInsertDocument', 'procBoardInsertDocumentBydocument_srl')) && $called_position == 'before_module_init')
{
$this->stop_proc = TRUE;
$this->stop($error_message);
}
}
}
요렇게 고쳐봐쓴데 그냥 통과네요... 뭐가 빠졌나봐요..
before_module_proc에서 잡아야 합니다.
stop만으로 먹히지 않는다면 $this->act = '무의미한 랜덤 문자열'; 이것도 추가해 보세요.
감사합니다. 아래로 해서 일단 막아지기는 했는데 다른 애드온에서 작성된 코드를 참조하다보니 그 애드온과 비슷하게 다른 애드온의 경고창도 같이 뜨게 되는데 포지션 차이인가요??
아이고.,..... 모바일에서는 왜 안막히는거지..... 모바일은 또 통과가 되네요.. 이런....
if(in_array($called_position, array('before_module_init', 'after_module_proc')))
{
$signature = getModel('member')->getSignature(Context::get('logged_info')->member_srl);
$signature = trim(strip_tags($signature));
if(!$signature)
{
if (in_array($act, array('dispBoardWrite', 'dispBoardWriteBydocument_srl')) && $called_position == 'after_module_proc')
{
$this->act = 'true';
$this->stop('문구!');
}
}
}
일단 위 코드로 되긴 하는데 다른 애드온에서 띄우는 팝업까지는 같이 뜨는데 에디터는 안뜨고 메시지창은 떠서 막는거 까지는 정상적으로 되었습니다.
위의 코드를 보면 서명 체크를 먼저 하고 그 다음에 act 체크를 하도록 되어 있는데, 이렇게 하면 글쓰기와 관련없는 act에서도 불필요하게 서명을 체크하게 됩니다. act 체크를 먼저 하고 그 다음에 서명 체크를 하도록 바꿔보세요.
PC에서는 로그인, 모바일에서는 로그아웃 하라고 하네요 ㅋ
이부분을
$this->act = 'true';
$this->stop('문구!')
이것으로해서 해결을한 것으로 알고 있었고 실제 php7 이 아닌 경우 잘 되는데 php7에서 테스트해보니 그냥 통과가 되어 버리네요. 혹시 다른 방법이 있을까요??
다시 읽어본다.
한번 더 읽어본다.
이해 불가능.. 젠장!
위 대화는 뭔가를 만드는 대화..ㅎㄷㄷ.. 저에겐 아직 미지의 길..
수정과는 달라보여양 ㅠㅠ