インフォメーションBBS

[使い方] [タイトルのみ] [関連発言] [最新20発言] [過去ログ一覧]
1104 わかやま神 [RE] 2000/10/08 12:35 [修正]
RE23:ミニBBSに直接アクセスできないようにするには
#1101(海豚氏)の書き込みを引用します:
>#1100(わかやま神氏)の書き込みを引用します:
>>そうねっ!単純が一番!
>>で、手元に資料がないから・・・
>>正規表現と置換を利用すれば可能です。
>>置換だけでも出来ると思うけど。
>>それらしい事分かれば連絡します。
>
>ありがとうございます。
>期待に胸膨らませてお待ちしていま〜す♪

正規表現って難しいのねん。
で、これでどうかな?

#!/usr/local/bin/perl

$r = $ENV{'HTTP_REFERER'};  #リンク元の取得

($ref, $b) = split( /\?/, $r );  #「?」より前を取得

$this_url = 'http://www.hoge.ne.jp/cgi-bin/hoge/hoge/env_cgi.cgi';  #実行CGI
$come_url = 'http://www.hoge.ne.jp/hoge/env.shtml';  #リンク元
$for_url = 'http://www.yahoo.co.jp/';  #yahooへぶっ飛ばす

#比較が「0」なら直接「1」ならリンク元または自分自身
$env_ok = ($ref eq $come_url || $ref eq $this_url) ? '1' : '0' ;

if ($env_ok == 0) {
	print "Location: $for_url\n\n";  #バイバイ
	exit;  #おちまい
 }

たとえば
http://p4room.mda.or.jp/book/cgi/info.cgi?res=1098
となっていたら、「?」より前を取ってきます。
「$b」はダミーですから使う必要はありません。
「$b」の中には「res=1098」が入っています。
該当する文字(この場合は「?」)がない時は、
すべての文字を返しますから問題ないでしょう。

2個のレスポンスが付いています:
1105 2000/10/08 23:58 RE24:ミニBBSに直接アクセスできないようにするには = 海豚
1108 2000/10/10 08:15 RE24:ミニBBSに直接アクセスできないようにするには = 海豚

[トップページに戻る]管理人 : キャメル