クッキー無効に設定していた場合、アクセスを拒否するには?

[上に] [前に] [次に]
ふにゃちん 1999/12/17(金) 17:30:08
なんと、IE5はデフォルトがクッキー無効になってるようです。がび〜〜ん!

というわけで、ワタシのサイトで利用している投票システムではクッキーで一定の時間内の連続投票を禁止するよう処置を入れているのですが、クッキー無効の場合、上記の処置を無視してどんどん投票できてしまうのです。

どうにかして、perlスクリプトの中で「ブラウザがクッキー無効に設定されているか」判断する方法はないでしょうか?

バーチャルヒューマン [E-Mail] [HomePage] 1999/12/17(金) 17:42:54
Cookieが無効かどうかを調べる方法は知りませんが、
自分のサイトのCookieがあるかないかを調べればよいのでは。

例えば、
CGIでは、識別用のCookieを毎回setして、投稿された際に
そのCookieがあるかないかを調べて対処する
または、
JavaScriptでページが読み込まれたらCookieをsetして
投稿の際に、Cookieがあるかないかを調べ対処する
などなど・・・

ふにゃちん 1999/12/17(金) 17:54:47
>CGIでは、識別用のCookieを毎回setして、投稿された際に
>そのCookieがあるかないかを調べて対処する

まさにこれが、今ワタシが入れている処置です。

投票時に書きこんでいるのはこれ↓
print "Set-Cookie: スクリプトのURL=repost_check; expires=有効期限(現在時より24時間後)\n";

でもって、投票時にこのcookieがあればエラー(つまり24時間以内ないの連続投票)としています。

でも、Cookie無効に設定されていると、投票時に書きこんでくれないんですよね・・・。

Set-Cookieでエラーのイベントなんて返らないのかな・・・・。

のぐ 1999/12/17(金) 17:55:59
IE5だけでチェックしたいのなら、
window.navigator.cookieEnabled
で true | false が返ります(IE4も可)。
でも、CGIで cookie が返ってくるかどうかを見た方が確実&クロスブラウザ的な対応になると思います。

ふにゃちん 1999/12/17(金) 18:42:49
>CGIで cookie が返ってくるかどうかを見た方が確実

これって、あるんですか???
それが、知りたいです!!!
どなたか、ご存知の方よろしくお願いします!!

hiro-kim 1999/12/18(土) 10:56:33
1. Cookie repost_checkを getする。
   getできれば24時間以内の投票なので投票無効。エラー表示して 4.へ。
2. Cookie repost_checkを setする。
3. Cookie repost_checkを getする。
   getできればWebブラウザはCookie使用可能なので投票有効。
       投票内容をファイルに書き込む。
   get結果が空ならWebブラウザのCookieは使用不可なので投票無効。
       Cookieを使用可にする旨,警告表示する。
4. (処理の終わり)

ふにゃちん 1999/12/19(日) 23:55:12
[[解決]]
# とりあえず、このスレッドはこのハンドルで・・・

ありがとうございます。
hiro-kimさん、大変参考になりました。
今までのスクリプトでは、get-setだけだったんですが、それをget-set-getとするというわけですね。
それでなんとかできそうです。

その他のみなさまもありがとうございました。

[上に] [前に] [次に]