cgi

[上に] [前に] [次に]
太田 2000/01/26(水) 07:16:20
こんにちは。
あるcGIに複数ページからリンクを張っています。
それぞれから来たことが(見てる方に)わかるように、それぞれbodyカラーを変えたいと考えています。
例えばAから来た人は黒背景、Bから来た人はパンダ柄(^^;とかピンク字とか…。

そのCGIの中でこれは実現できるでしょうか。
HTTP_REFERER 参照でどーにかならんかなと考えているのですが…。
よろしくお願いいたします。

茶しぶ男 2000/01/26(水) 09:55:29
> それぞれから来たことが(見てる方に)わかるように、それぞれbodyカラーを変えたいと考えています。
> 例えばAから来た人は黒背景、Bから来た人はパンダ柄(^^;とかピンク字とか…。

 イマイチ、言いたい事が分からないけど、
「掲示板などで、Aのページからやって来た人の投稿記事の背景を黒として、Bのページから来た人の投稿記事背景をパンダ画像にしたい」ということと解釈させてもらいましょう(いいのかな?)

# リンク元URL,TABLEの属性
@link_moto = (
'http://aaa/aaa.html,BGCOLOR=BLACK TEXT=WHITE',
'http://bbb/bbb.html,BACKGOUND=panda.gif BGCOLOR=WHITE TEXT=BLACK',
);

foreach (@link_moto) {
  ($url,$tablebody) = split (/,/,$_);
  if ($ENV{'HTTP_REFERER'} =~ /$url/) { # @link_motoに登録有り
    print "<TABLE $tablebody>\n"; # 背景決定
    $flag = 1;
    last;
  }
}
if (!$flag) { print "<TABLE>\n"; } # @link_motoに登録されてない場合は背景無し

print "<TR><TD>";
記事内容を出力
print "</TABLE>\n";

 一つ一つの記事をTABLEで囲んで、そのTABLEの背景として@link_motoに登録されていたら指定の背景にするようにしています。

 ただし、HTTP_REFFERは必ずしもリンク元データが入ってるわけではないので、誤動作してしまうのは避けられないでしょうね。

茶しぶ男 2000/01/26(水) 10:02:58
↑これじゃ、全部同じになってしまいますね。

投稿記事データの中に、HTTP_REFFERから設定されたリンク元データを記録するようにしないといけないですね。失礼しました。

  if ($ENV{'HTTP_REFERER'} =~ /$url/) { # @link_motoに登録有り
の部分を投稿記事データ内のリンク元データと比較させるようにすればよろしいかと。

ひつじ [E-Mail] 2000/01/26(水) 11:47:55
CGIを起動するときに、起動したページがわかるような
パラメータをつければよろしいかと。
フォームで起動するならHIDDENのフィールドにページの
IDをいれておくとか。

びぎな++ 2000/01/26(水) 11:57:49
ひつじさんに続いて・・・
Aタグだったら,
A.html・・・<A HREF="http://www.xxx.xxx.cgi?a">
B.html・・・<A HREF="http://www.xxx.xxx.cgi?b">
としてQUERY_STRINGで処理を分岐する方法もあります。

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