• 締切済み

アンケートについて

現在サイトを作成しているのですが、そこにPHPで作成されたアンケートを設置したいと考えています。コードなどを公開しているサイトを検索していて私の理想どうりのアンケートを見つけ、設置する事は出来たのですが、そこに制限を付けたいと考えてます。 一度『投票』のボタンを押したら1時間は投票出来ないようにしたいのですが、私にPHPの知識がないのでコードを見てもどのようにすれば制限できるようになるのかが分かりません。 その公開されていたPHPのコードは下記になります。 あなたの好きな教科を選んで投票してください。 <form name="form" method="post" action="questionnaire.php"> <?php //ラジオボタンを項目ごとに出力 $subject=array('国語','社会','数学','理科','英語'); for($i=0; $i<count($subject); $i++){  echo "<input type='radio' name='kyouka' value='$i'>{$subject[$i]}<br>\n"; } ?> <br> <input type="submit" name="submit" value="投票"> </form> <table border="1"> <?php //データの書き込み $data=file('data.txt'); for($i=0; $i<count($subject); $i++){ $data[$i]=rtrim($data[$i]); } if($_POST['submit']){ $data[$_POST['kyouka']]++; $fp=@fopen('data.txt','w'); for($i=0; $i<count($subject); $i++){ fwrite($fp,$data[$i]."\n"); } fclose($fp); } //データの出力 echo "<hr>"; for($i=0; $i<count($subject); $i++){ echo "<tr>"; echo "<td>{$subject[$i]}</td>"; echo "<td><table><tr>"; $wd=$data[$i]*10; //出力幅の設定 echo "<td width='$wd' bgcolor='#eeeeee'> </td>"; echo "<td>{$data[$i]} 票</td>"; echo "</tr></table></td>"; echo "</tr>\n"; } ?> </table> 知識がないなりに色々検索してクッキーを使用して制限をかけてみたのですが、エラーがでてしまいました。 ご存知の方いらっしゃいましたらご教授ください。 よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>一度『投票』のボタンを押したら1時間は投票出来ないようにしたい 匿名のアンケートにはそれは無理ですね・・・ ユーザー登録をして、個人を特定できるようにし サーバー側で前回の回答を保持しておかなくてはいけません。 過去にポケモン:コイル事件、イナズマイレブン:五条事件 ピザハット:村嶋事件、などその手の被害は多発しています AKB木嶋里子事件なども記憶に新しいところです。 基本的に匿名サイトにおけるユーザーから送られてくるデータは すべて汚染されており、善意を前提になりたっていないと考えるのが妥当です。 クッキーやIPアドレスでの振り分け処理はクライアントの偽装が可能なので あまり有効ではありません。

KEN1159
質問者

お礼

yambejpさん 回答ありがとうございます。 そこまで本格的で厳密に処理されるようなシステムを求めてはいないのですが・・。提示したソースを見ても分かる通り。 あくまでも個人的に開設している趣味サイトのTOPページに設置するようなものですから。 結局レッツPHPの投票システムを設置する事にしました。ありがとうございました。

関連するQ&A