投票システムを作っていますが、多重投稿を防ぐためにクッキーに値を保存しようと考えました。(それほど厳密な多重投稿防止ではないので)
投票するアイテムが複数あり、1番目のアイテムに投票した場合は、同じアイテムには連続して投稿はできないけれど、他のアイテムには投票できると、要するに投票されたアイテムもクッキーに保存しておきたいのです。
今、
setcookie("ABC","vote".$id."=1",time()+90*24*60*60);
として、id1に投票した場合はvote1という変数に1が保存されるようになっています。
で、2番目、3番目のアイテムに投票された場合や、投票時にすでに投票されているかどうかチェックするときにクッキーの情報を呼び出すわけですが、変数名自体を自動生成させるのはどうすればいいのでしょうか。
例えば、id1に投票があったかどうかチェックする場合に
if(isset($ABC)){
parse_str($ABC);
if(isset("$vote".$id)){
・・・
とは書けないですよね?
変数名自体を作る方法を教えてください。

また、このような状態で多重投稿を防ぎたい場合に、もっと簡単な方法はないでしょうか。
(クッキーを使わない方法でも結構です)
あわせて教えて頂けると嬉しいです。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

そしたら、可変変数を使えばよいのでは。



//$vote1 = 99;

$id = 1;
$vote = "vote$id";

print isset($$vote);

参考URL:http://php.s3.to/man/language.variables.variable …
    • good
    • 0
この回答へのお礼

なるほど。
可変変数というもの自体を扱ったことがなかったので勉強になりました。
まだ完全に理解していませんが、いろいろ調べてみます。
ありがとうございました。

お礼日時:2003/10/01 22:51

ひとつの変数で、複数のアイテムを扱えばよいのでは。


アイテム3つだとしたら、
0が投票してない、1が投票したという意味だとして、
1番目と3番目に投票しているなら、、
101
とか、あるいは単純に
OXO
とかでも、いいかも。

特定のアイテムについてチェックするときは
substr で簡単に取り出せますよね。

この回答への補足

ご回答ありがとうございます。
アイテム数が、最低でも1万件ありますので・・・
この方法はちょっと・・・他によい方法はないでしょうか。

補足日時:2003/10/01 16:33
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング