웹마스터 팁

이와 비슷한 내용의 글을 이미 Simulz님께서 올린 적이 있습니다. 하지만, 현재 1.0.3 버전과는 차이가 있어서 다시 내용을 정리해서 올립니다.

참고로 이 글은 제 블로그에 올렸던 글을 수정해서 올립니다.


제로보드XE의 설문조사 모듈은 기본적으로 로그인하지 않은 상태에서도 설문에 참여할 수 있기 때문에 때로는 이것이 문제가 될 수도 있습니다. 그래서 로그인하지 않은 사용자는 설문조사에 참여할 수 없도록 하기 위해 조금 손을 봐줄 필요가 있습니다.

우선 modules/poll/poll.model.php 파일에 있는 isPolled() 함수를 수정합니다.

        function isPolled($poll_srl) {
            $args->poll_srl = $poll_srl;

            if(Context::get('is_logged')) {
                $logged_info = Context::get('logged_info');
                $args->member_srl = $logged_info->member_srl;
            } else {
                $args->ipaddress = $_SERVER['REMOTE_ADDR'];
            }
            $output = executeQuery('poll.getPollLog'+
 '+
 ', $args);
            if($output->data->count) return true;
            return false;
        }

이렇게 되어 있는 함수를

        function isPolled($poll_srl) {
            $args->poll_srl = $poll_srl;

            if(Context::get('is_logged')) {
                $logged_info = Context::get('logged_info');
                $args->member_srl = $logged_info->member_srl;
            }
            $args->ipaddress = $_SERVER['+
 'REMOTE_ADDR'];

            $output = executeQuery('poll.getPollLog', $args);
            if($output->data->count) return true;
            return false;
        }

와 같이 25, 26, 27번째 줄을 수정합니다. 이 함수를 수정하는 것은 실제로 로그인하지 않은 사용자가 설문조사에 참여하지 못하도록 하는 것과는 큰 관계는 없지만, 이렇게 함으로 중복 투표를 막을 수 있기 때문에 수정하는 것입니다.

그런 다음, 같은 파일의 getPollHtml() 함수를 수정합니다.

            if($poll->stop_date > date("Ymd")) {
                if($this->isPolled($poll_srl)) $tpl_file = "result";
                else $tpl_file = "form";
            } else {
                $tpl_file = "result";
            }

이렇게 되어 있는 부분을

            if($poll->stop_date > date("Ymd")) {
                if($this->isPolled($poll_srl) or !Context::get('is_logged')) $tpl_file = "result";
                else $tpl_file = "form";
            } else {
                $tpl_file = "result";
            }

이와 같이 수정해줍니다.

이제 로그인하지 않은 사용자의 경우 설문조사 화면에서 결과 화면을 보여줌으로 결과적으로 로그인하지 않으면 설문조사에 참여할 수 없게 됩니다.

단, 이렇게 수정을 하면 모든 설문조사에 참여하고자할 때는 로그인을 해야합니다. 따라서, 경우에 따라 로그인하지 않은 사용자가 설문조사에 참여하도록 하기 위해서는 이렇게 수정해서는 안됩니다.

각각의 설문조사에서 로그인 사용자만 참여 가능하도록 설정하기 위해서는 DB 테이블 등을 수정해줘야 하기 때문에 현재로서는 별로 권하고 싶지 않습니다.

태그 연관 글
  1. [2018/11/15] 묻고답하기 메시지 모듈 삭제후 계속 나타나는 태그 by jayj8
  2. [2017/03/09] 묻고답하기 list.html에서 letter-spacing 수정 문의드립니다 by lifema**** *2
  3. [2016/03/25] 묻고답하기 레이아웃에서 변수선언시 모듈에서의 이용 by 카니엘 *3
  4. [2015/03/23] 포럼 이메일 주소 제공자를 제한하는 모듈 1개, 랜덤 게시글 애드온 1개 by misol *4
  5. [2015/03/09] 묻고답하기 특정 모듈에서의 로그인 위젯 작동 문제 by hexit
제목 글쓴이 날짜
IIS에서 아웃로그인,최근게시물이 htm,html 에선 안돼고 php에서만 될때 해결방법 [4] kyjzz 2004.07.01
'대표도메인'연결후 '로그인'이 안될때,,(먹통) moonlight994 2011.01.24
외부로그인을 어떻게 생성 하나요? [3] 엄경선 2011.02.08
XE공식레이아웃(xe_official_v2)에서 소셜XE로그인창 연동 ehdgkr97 2011.02.13
외부페이지 로그인 연동 [10] 응삼 2011.02.28
1.4.5 업데이트후 로그인 안되시는 분들 [3] BlogJh 2011.04.03
XE 업데이트 이후 로그인 에러 및 첨부파일 증발에 대한 해결 팁 모음 [5] ksdwm72 2011.04.20
로그인풀림방지 - 주소 고정하기 [27] ezi 2011.05.28
비로그인시 본문대신 지정문구 보이기 [1] 도라란 2011.07.11
로그인 정보 폼에 읽지 않은 쪽지 개수 보이기. [21] file 무얼까 2011.07.23
로그인 위젯 질문드립니다. 소리없는 2011.08.31
특정 확장변수를 로그인한 회원에게만 보이게 하기 [3] 비밀얌 2011.09.17
갑자기 로그인(관리자 및 회원)이 안되는 경우 [2] 비밀얌 2011.10.02
로그인이 안되는 문제를 겪고 계시면 참고해볼만 합니다. [2] 안구건조 2011.10.06
1.5 에서 기존 로그인 스킨 이메일 로그인 구동시키기 [1] 쿨키드 2011.11.01
phpmyadmin 로그인시 아래와 같은 에러나올경우 해결방법 [1] file 때린데 또때려 2012.03.12
[공유]로그인 하지 않아도 게시판에서 회원정보 출력 하기 (가입품 확장변수 포함) [6] file rminkim 2012.03.20
소셜로그인 이메일 입력시 SSL 사용 패시브 2012.07.27
외부로그인 (레이아웃 파일만 수정) [4] 투씨 2012.10.13
로그인 실패 관련 쪽지 또는 메일이 안 날라오게 하는 방법 [9] sejin7940 2012.11.12