웹마스터 팁

이와 비슷한 내용의 글을 이미 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
제목 글쓴이 날짜
게시판 별로 에디터의 옵션 설정하기 [6] 레드맨 2008.01.01
서브 메뉴를 항상 펼쳐있도록... [2] :맥노턴 2008.01.01
원하는 값으로 게시판 정렬하기 [3] 화니군 2007.12.30
xe에 라이프팟 연동하기 [6] 가클 2007.12.30
레벨에 따라 자동으로 그룹 변경하기 [11] 지연아빠 2007.12.29
Parse error: parse error, unexpected '':'' in /home/hosting_users/xxx/www/xx/classes/template/TemplateHandler.class.php(341) : eval()''+ 'd code on line 14 에러에 대하여... 왕경태 2007.12.29
플래쉬 테두리 없애기 [3] 부우우 2007.12.28
대용량 파일 첨부 업로드시 php.ini 파일조정값들 [5] 비나무 2007.12.28
APM_Setup 6 과 ZBXE 설치하기(개인서버) [3] 백성찬 2007.12.27
제로보드에서 로그인후 테크노트에서 로그인정보 사용하기 [4] JinHoHan 2007.12.26
Ms 워드로 게시판 글쓰기 [1] file 더하기나무 2007.12.25
관리자 포인트 조작 없이 레벨 아이콘 대신 원하는 아이콘 띄우기 [9] file ꂎꌰ&#41 2007.12.24
XE설치시 인스톨화면으로 무한 롭백오류 [2] cen89co 2007.12.23
외부프로그램(페이지)에서 zbxe 로그인 정보 연동하기 [33] file 도데군 2007.12.23
회원가입시 추가한 추가정보를 관리자와 회원자신만 보기... [5] 지연아빠 2007.12.22
회원이 이름, 닉네임등 정보 변경 못하도록 하기 [8] 지연아빠 2007.12.22
IE Toy 사용시 ''페이지'', ''외부페이지'' 차단되네요... [2] 폭풍의 전야 2007.12.22
xml 포함한 플래쉬를 제로보드xe 에서 적용하는 과정 [4] file 도토리나무 2007.12.20
IP대역에 따라 다른 페이지 보여주기 [1] 지연아빠 2007.12.20
최근 댓글이 가장 위로 정렬 [2] 쏘프티 2007.12.20