■10381 / ) |
VOTE COMの連続投稿防止改造について
|
□投稿者/ 南 -(2005/01/12(Wed) 20:45:12)
| 古い記事への返信で申し訳ないのですが No10237,10223,10122 の関連記事にあるように
votec.cgi412行目 $addr = $ENV{'REMOTE_ADDR'};
の下に、
open(IPI,"ip.log"); while (<IPI>){ if($_ eq $addr){&er_("二重投票は禁止");}#IPがすでにある場合終わり } close(IPI); if((-M "ip.log") < 1){#更新されてから1日以内ならIP追加 open(IPO,">>ip.log"); print IPO $addr; close(IPO); }else{#更新されて1日以上ならログをフォーマットして追加 open(IPO,">ip.log"); print IPO $addr; close(IPO); }
と書き込みスクリプトを改造しました。 試しに複数のアドレスで投票してみると、 IP1個目は無事規制されip.logにアドレスは追加されるものの、 2個目以降、IPアドレスが追加されるとIPアドレス規制がなくなってしまいました。 そうすると、1個目のIPアドレスはもちろん2個目、3個目以降のIPアドレスでも連続 投稿が可能になってしまいました。 その時、ip.logを覗いてみると
「192.168.1.0162.168.1.1255.255.255.201……」
の様に、IPアドレスが区切りなく連続で1行に記録されていました。
試しに if((-M "ip.log") < 1){ open(IPO,">>ip.log"); print IPO $addr; print IPO \r\n; close(IPO); } else{#更新されて1日以上ならログをフォーマットして追加 open(IPO,">ip.log"); print IPO $addr; print IPO \r\n; close(IPO); }
と、ログ内で改行させるなどさせてみました 試したのは(\r\nと\nのみ) ですが、改行されるだけで複数のIPアドレスを認知してくれませんでした。
ip.logに関してはアスキーでアップロードし、属性は666にしています。 試しにバイナリでアップロードしてみたりしましたが結果は変わりませんでした。
もしよろしければアドバイスなど頂ければ幸いです。
|
|