투표 관련 문의 드립니다.
본문
투표를 하루 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>
쿠키 하나 궈 보시죠 ^^
답변을 작성하시기 전에 로그인 해주세요.