インフォメーションBBS
[使い方]
[タイトルのみ]
[関連発言]
[最新20発言]
[過去ログ一覧]
発言#1014へのレスポンスを書き込んでください:
お名前:
←パスワード(修正用)
アドレス:
タイトル:
本文:
#1014(わかやま神氏)の書き込みを引用します: >#1013(KOOL氏)の書き込みを引用します: >>たびたびありがとうございます。現在の状況です。 >>条件を一つにして実行するとうまく動いています。 >>書きの場合は、___.htmから来た場合のみbbsが帰ってきます。 >>ただし、更新ボタンを押したり、直接bbs.cgiへ来るとyahooへ >>飛んでいっちゃいます。 >>条件式ですが、頂いた内容だと片方の条件が満たされても >>もう片方が満たされないという状況が起こっているのでしょうか? >>それともほかの何か...。どーすればー!! > >BBSが表示されている状態で、 >登録ボタンなどを押すと、またBBSが呼ばれます。 >(自分で自分を呼びだしているから) >条件式を一つにしてあり「HTTP_REFERER変数」にはBBS(CGI)のURLが入っていますから、 >比較の時点ではねられてしまうんですね。 >という事はきちんと動いている・・・という事です > >ちょっと調べてみましたが、 >条件式を複数にした場合は、論理演算子「||」は真(1)または偽(0)を返さず、 >最後に評価された演算子の値を返すようです。 >ですから、このままでは、いつまでたってもBBSに入れません。 >一度下記のスプリクトで試してみて下さい > > >$ref = $ENV{'HTTP_REFERER'}; #リンク元 > >$come_url = 'http://*********/*********/*********/*********/___.htm'; >$for_url = 'http://www.yahoo.co.jp/'; >$this_url = 'http://*********/cgi-bin/bbs.cgi'; > >$bbs_ok = ($ref eq $come_url || $ref eq $this_url) ? '1' : '0' ; > >if ($bbs_ok == 0) { > print "Location: $for_url\n\n"; > >exit; > } > > >基本的に考え方は変わっていません。 > >$bbs_ok = ($ref eq $come_url || $ref eq $this_url) ? '1' : '0' ; > >を追加しています。 > >この内容は、条件演算子で、 >「$ref eq $come_url」または「$ref eq $this_url」を比較して >真になった場合「$bbs_ok = 1」偽になった場合「$bbs_ok = 0」となります。 >(入るデータは?より後ろの1(真)0(偽)の数値です) >あとは、「$bbs_ok」が「0」ならLocationヘッダを実行する・・・となります。 > >真・偽を返す条件演算子は >$bbs_ok = ($ref eq $come_url || $ref eq $this_url) ? "OK" : "NO" ; >if ($bbs_ok eq "NO") { >としても同じです。(この場合は比較は文字列です) > >ドジな頭を絞って考えてみたんですが、もっといい方法があるかもしれません。 >(上手くいくといいんだけど・・・と誰かに振ろうと考えている自分。あ〜、情けない(-_-;))
[トップページに戻る]
管理人 :
キャメル