웹마스터 팁

이와 비슷한 내용의 글을 이미 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
제목 글쓴이 날짜
카테고리별로 최근게시물 뽑아오기 [11] file 팔공산 2008.05.22
회원 확장 변수(extra_vars) 출력하는 방법 [15] file 척~ 2008.05.23
배경음악 넣기(ZBXE를 기본폴더에 설치한 경우) [4] 백성찬 2008.05.26
IE6 한글도메인에 ZBXE 때문에 속 썩이시는 분 [1] 햇살과수원 2008.05.26
제로보드 XE에서 파비콘(favicon) 만들기 [8] file tindrum 2008.05.26
자바스크립트로 브라우저 타이틀 바꾸기 [4] Geun 2008.05.26
이미지 삽입후 이미지 위에 노란색 박스 사라지게하는 법 [5] dhseo 2008.05.28
스크롤바색상 변하게 [5] file 김민787 2008.05.28
오른쪽 마우스 사용 금지하기 [15] Fursys 2008.05.28
이전글, 다음글 얻기 [25] 라르게덴 2008.05.29
설문조사에서 로그인하지 않은 사용자는 투표하지 못하도록 수정하기 [3] mooo 2008.05.29
제로보드와 플래시 게시판 연동해서 사용하기 [5] Park Ki-tae 2008.05.30
확장변수 다중선택에서 체크박스의 선택개수를 제한하기 [5] file 우야꼬 2008.05.30
제로보드4 스타일 이전글/다음글 구현하기 (라르게덴님 팁 재탕) [12] file 老姜君 2008.05.30
본문글 하단 목록 옵션 처리하기 [4] file 老姜君 2008.05.31
가입시 웹마스터에게 가입했다는 메일 보내기. [4] file dhseo 2008.06.02
회원 가입시 admin이 가입 승인이후 동작시키도록 변경!! [1] dhseo 2008.06.02
웹용 색상코드표 기타 푸른커튼 2008.06.03
외부페이지 접근을 제로보드XE를 통해서만 접근을 허용 하고 싶다면 [9] 임기택924 2008.06.03
레이아웃에 스크립트를 이용한 화면을 띄우고 싶은 경우 [3] dhseo 2008.06.03