CGI_同じIPが配列内にあったら指定のURLにLocationしたいのですが・・・

[上に] [前に] [次に]
たいちょー 2000/03/01(水) 18:22:37
あるファイルに日付とIPがコンマ区切りで入っています。
新しく来てくれた人ののIPをENV{'REMOTE_ADDR'}でとって
上記ファイルとマッチングをかけてエラーメッセージのファイルにLocationしたいのですが、うまくいかずにそのままOKの場合のページに行ってしまいます。
文法にエラーは出ていないので、何がおかしいのかわかりません。
どなたかお知恵を拝借させてください。
よろしくお願いします。

$ip_check = '○○.log';
$sorry = '◆◆.html';
$ok = '□□.html';
open(IPCHECK,">$ip_check");
&lockfile(IPCHECK);
if(~/ENV{'REMOTE_ADDR'}/){
print"Location $sorry";
}
else{
print"Location $ok";
}
close(IPCHECK);

sekita 2000/03/01(水) 18:39:10
$_の¥nはchop or chomp で削除しているでしょうか?

コウノトリ 2000/03/01(水) 21:14:24
>open(IPCHECK,">$ip_check");
あれ?この時点でファイルの内容が消えちゃいませんか?

元祖パラパラ系 2000/03/01(水) 21:29:24
$ip_check = '○○.log';
$sorry = '◆◆.html';
$ok = '□□.html';
open(IPCHECK, "$ip_check");
while (<IPCHECK>) {
    if($_ !~ /$ENV{'REMOTE_ADDR'}/){
        print"Location: $sorry\n\n";
    } else {
        print"Location: $ok\n\n";
    }
}
close(IPCHECK);

EMI 2000/03/01(水) 21:34:13
>元祖パラパラ系さん
これだと、最初のが一致しない場合に$sorryに飛んじゃいますけど。

$ip_check = '○○.log';
$sorry = '◆◆.html';
$ok = '□□.html';
open(IPCHECK, "$ip_check");
while (<IPCHECK>) {
    if($_ =~ /$ENV{'REMOTE_ADDR'}/){
        close(IPCHECK);
        print"Location: $ok\n\n";
        exit;
    }
}
close(IPCHECK);
print "Location: $sorry\n\n";

たいちょー 2000/03/03(金) 12:04:23
教えてくださった方法はすべて試してみました。結果EMIさんの方法で$sorryに無事Locationすることができました。

ご回答をいただいたみなさま、どうもありがとうございました。

たいちょー 2000/03/03(金) 12:05:11
[[解決]]
忘れてました。ごめんなさい。

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