php,cookieを利用して1日1票しか投票できないサイトを作ったのですが、cookieを消してしまうと何回も投票できてしまいます。そこでsessionを利用して1日1票を実装したいと考えたのですが、どうすればよいのかわかりません。もしcookieだけで実装できる方法があれば教えて頂きたいです。
以下にcookieを利用した時のphpのソースを貼っておきます。(wordpressを利用しているため数個wordpress専用の関数等が使用してあります。)
php
1<?php 2date_default_timezone_set('Asia/Tokyo'); 3setcookie("useable_cookie",'true',time()+60*60*24*1); 4 5if (isset($_POST['no'])) { 6 setcookie("voted",'true',strtotime("tomorrow")-1); 7} 8 9mb_language("Ja"); 10mb_internal_encoding("UTF-8"); 11$to = "メールアドレス"; 12$sub = "番号:".$_POST['no']; 13$message = "番号:".$_POST['no']; 14$from = "From: メールアドレス\r\n"; 15$from .= "Return-Path: メールアドレス"; 16 17get_header(); 18?> 19 <main> 20 <article> 21 <h1>投票</h1> 22<?php 23if(!isset($_COOKIE['useable_cookie'])){ 24?> 25 <h2>エラー</h2> 26 <p>投票するためにはCookieを有効にする必要があります。</p> 27<?php 28}else{ 29 if (isset($_COOKIE['voted'])) { 30?> 31 <h2>投票済み</h2> 32 <p>明日の0:00投票することができます。</p> 33<?php 34 }else{ 35 if(isset($_POST['no']) == false){ 36?> 37 <h2>投票フォーム</h2> 38 <form class="vote_form" action="<?php echo esc_url( home_url( '/category/vote' ) ); ?>" method="post" > 39 <label class="no"> 40 <input type="radio" name="no" value="1" />1 41 </label> 42 <label class="no"> 43 <input type="radio" name="no" value="2" />2 44 </label> 45 <input class="vote_button" type="submit" name="vote" value="投票" /> 46 </form> 47<?php 48 }else{ 49 $send = mb_send_mail($to, $sub, $message, $from); 50 if(isset($send)){ 51?> 52 <p>投票しました。</p> 53<?php 54 }else{ 55?> 56 <p>投票できませんでした。</p> 57<?php 58 } 59 } 60 } 61} 62?> 63 </article> 64 </main> 65<?php get_footer(); ?>
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/13 12:10