インフォメーションBBS
[使い方]
[タイトルのみ]
[関連発言]
[最新20発言]
[過去ログ一覧]
発言#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") { としても同じです。(この場合は比較は文字列です) ドジな頭を絞って考えてみたんですが、もっといい方法があるかもしれません。 (上手くいくといいんだけど・・・と誰かに振ろうと考えている自分。あ〜、情けない(-_-;))
[トップページに戻る]
管理人 :
キャメル