투표 관련 문의 드립니다.

투표 관련 문의 드립니다.

QA

투표 관련 문의 드립니다.

본문

투표를 하루 1번만 참여가능하게 하려고 합니다.

비회원 참여부분이라 사용자 정보가 없는 상태라 ip로 체크를 하고 있는데

같은 ip를 사용하는 다른 사용자도 막히는 문제가 발생합니다.

보통 이런 경우 뭘 더 체크해야 하나요? 브라우저 정보를 생각해보았지만

다른 브라우저로 접속하면 의미가 없어지니 좋은 방법이 없을까요?

 

이 질문에 댓글 쓰기 :

답변 2

방법은 다양합니다.

쿠키사용, 회원가입요구, 소셜미디어 로그인, 세션사용, CAPTCHA 사용 등 

 

예시를 참고하셔서 원하시는 로직으로 구현 하시면 될 것 같습니다.


<?php
// PHP 세션을 시작합니다.
session_start();
// 투표 처리 로직을 수행합니다.
function handleVote()
{
    // 사용자 IP 주소를 가져옵니다.
    $user_ip = $_SERVER['REMOTE_ADDR'];
    // 해당 IP의 세션 변수가 설정되어 있는지 확인합니다.
    if (!isset($_SESSION['voted_ips'])) {
        $_SESSION['voted_ips'] = array();
    }
    // 해당 IP가 이미 투표한 IP 목록에 있는지 확인합니다.
    if (in_array($user_ip, $_SESSION['voted_ips'])) {
        // 이미 투표한 IP이므로 투표 참여를 막습니다.
        echo "하루에 한 번만 투표가 가능합니다.";
    } else {
        // 투표 처리를 진행합니다.
        // ...
        // 투표가 성공적으로 처리되면 IP를 투표한 IP 목록에 추가합니다.
        $_SESSION['voted_ips'][] = $user_ip;
        echo "투표가 완료되었습니다.";
    }
}
// 투표 요청이 들어온 경우 처리합니다.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    handleVote();
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>투표 페이지</title>
</head>
<body>
    <h1>투표 페이지</h1>
    <form method="post" action="">
        <!-- 투표 양식 등록 -->
        <input type="submit" value="투표" />
    </form>
</body>
</html>

쿠키 하나 궈 보시죠 ^^

답변을 작성하시기 전에 로그인 해주세요.
전체 59,611

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT