■10415 / ) |
VOTE COMの同一IP連続投稿防止改造時間設定版
|
□投稿者/ 南 -(2005/01/19(Wed) 21:33:45)
| 2005/01/19(Wed) 21:45:02 編集(投稿者) 2005/01/19(Wed) 21:34:02 編集(投稿者)
こんばんわ、前回りゅういち様にスクリプトのアドバイスを頂いたのですが。 前回のままだと、指定時間が到達する前に、誰かが投票を行うと そこから再び指定時間までのカウントが始まり、永遠に投稿できない人が出そうなので 時間を記録して、そこから指定時間をカウントするスクリプトの改造を行ってみました。
#◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ #◆◇◆◇◆◇◆◇◆◇◆◇【改造場所】◆◇◆◇◆◇◆◇◆◇◆◇ #◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ open(IPI,"ip.log"); while (<IPI>){ chomp($_);#改行を取りのぞく if($_ eq $addr){&er_("今日の分の投票を既に行っています");}#IPがすでにある場合終わり } close(IPI);
#ホストとIP収集ログファイル生成(コメント無し投票はIPが解らないので) #時間取得ルーチンはクッキーサブルーチンからパクリ #時間、IP、ホスト名記録 $tukihime = $mong + 1;#月の取得は1月=0 12月=11だったので+1 $nekomimi = $hourg + 9;#日本の標準時は世界標準時+9時間なので+9 open(IPHO,">>iphost.csv"); print IPHO "$yearg/$tukihime/$mdayg/$youbi,$nekomimi:$ming:$secg"; print IPHO ","; print IPHO $addr; print IPHO ","; print IPHO $host; print IPHO "\n"; close(IPHO);
#ログの初期化用TIMEログ作成 #記録用時間(秒)を計算 $time55 = time;#判定用時間全部足し算、1970年1月1日からの秒数を代入(20??年問題に引っかかりそうだけど使う)
open(TMI,'<','cleartime.log'); $time66 = <TMI>;#ログファイルの時間情報を読み込み close(TMI);
#現在の時間から記録された時間を引いて一日経っていたら判定、一日は86400秒 if($time55 - $time66 >= 86400){ open(TMO,">cleartime.log");#現在時間秒を記録(上書き) print TMO $time55; close(TMO);
open(IPO,">ip.log");#ログに(「>」は上書き指定)上書きでIP書き込み print IPO $addr; print IPO "\n"; close(IPO); }else{#更新時間が記録された時間以下ならIPをログに追加 open(IPO,">>ip.log");#ログに(「>>」は追加指定)上書きでIP書き込み print IPO $addr; print IPO "\n"; close(IPO); }
#◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ #◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
一応、簡単なテストで動作不具合が起きなかったです。 これから改造する方で、投票数が多いサイトの方などにどうぞ。
スクリプトの真中にあるのはおまけで出来上がった投票IP記録スクリプトです。 年月とIPアドレス、ホストアドレスがCSV形式で保存されます。
ip.log iphost.csv cleartime.log の空のファイルを作ってください。「cleartime.log」は念のため0と書いておいたほうが いいと思います。 ファイル名を変えたときは、スクリプトのログファイル指定のところも変えてください。 全部のログファイルはパーミッション「666」で上げてください。
|
解決済み! |