• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセス元URLによって振り分ける方法)

アクセス元URLによって振り分ける方法

このQ&Aのポイント
  • アクセス元URLによって異なるCGIに送信する方法が知りたい。
  • 50以上のアクセス元URLを別々のCGIに振り分けたい。
  • アクセス元がアドレス1なら1.cgi、アクセス元がアドレス2なら2.cgi、アクセス元がアドレス3なら3.cgi、アクセス元がアドレス4なら4.cgi、アクセス元がアドレス5なら5.cgiに送信する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.4

>エラーになってしまいます ちょっと手抜きで書いたので アドレス1→'アドレス1' 1.cgi→'1.cgi' addrX→'addrX' みたいに「'」で括ってみてください。 それでもエラーになるなら、 CGIの2行目あたりに、 use CGI::Carp qw(fatalsToBrowser); と、入れるとエラーの出る行番号なんかが出るはずなので場所を特定してください。

MKNET
質問者

お礼

おかげさまで解決することができました。本当にありがとうございました。

その他の回答 (3)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

こんな感じで。 リファラーと送信先CGIの名前の関連性みたいのがはっきりしていれば、 50以上のリストをバカ正直に書かなくてもいいかもしれないけど。 # リファラーと送信先のリスト定義 %ref_addr=( アドレス1 => 1.cgi, アドレス2 => 2.cgi, ~~ アドレス50 => 50.cgi, ); # 環境変数HTTP_REFERERに合わせた送信先の設定 $cgiaddr = $ref_addr{$ENV{HTTP_REFERER}}; # 値が空だったら未定義のリファラー、送信先をaddrXに設定 $cgiaddr = addrX unless($cgiaddr); print qq|<FORM name="form" action="$cgiaddr" method="POST">|;

MKNET
質問者

お礼

ご回答ありがとうございます。 何度か試してみましたが、エラーになってしまいます。cgiスクリプトとの相性がわるいのでしょうか?No.2で教えていただいた内容では動作しました。お手数ですが、宜しくお願いいたします。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

>リファラーは正常に取得できております。 でしたら、 @adr = ('アドレス1','アドレス2',・・・ for($i = 0; $i <= $#adr; $i++){ if($ENV{'HTTP_REFERER'} eq $adr[$i]){ print('<FORM name="form" action="'.($i+1).'.cgi" method="POST">'); last; } } こんな感じでどうでしょう?

MKNET
質問者

お礼

ご回答ありがとうございます。 実際に使う送信先のcgi名が数字でないのですが、その場合はどのようにすればよろしいのでしょうか。 また、リファラーが取得できなかった場合の送信さきも指定できますでしょうか。わからないことばかりで申し訳ございません。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

$ENV{'HTTP_REFERER'} 環境変数でアクセス元を調べる手が有ります。 しかし、プロバイダによっては、内容が入ってないことも、違うアドレスが入ることもあります。 まず、これが使えるか確認してみてください。

MKNET
質問者

お礼

ありがとうございます。リファラーは正常に取得できております。

関連するQ&A