はじめまして。アクセスログのCGI版を使っているのですが、時刻が外国 サーバのため15時間遅れてしまいます。どのように書き足したらよいの でしょうか?どうかお教えください。よろしくお願いします。
#1018(けいた氏)の書き込みを引用します: >こちらのアクセス解析(access2)を使いたいのですが、どうも設置が上手く行きません…。 初めまして。新キャリ と言います。 私も何度か「そういった事」があり困っていましたが、私は「 .htaccess 」ファイルで解決しました。 が! 結局私も「SSIが動かず」、最終手段として「access2 CGI版」を代用しています。 やり方は至って簡単。「CGIのaccess2」のログを獲るプログラム access2.cgiを img src="cgi-bin/access2.cgi" として配置し、ソレを各プログラムで読むんです。 logana.cgi や logview.cgi 等。 プログラム内容は同じなので(多分)、問題なく作動します。 しかも「全部CGI」なのでSSIを使わずに使用できます。 良く解からないようならメールを下さい。 今使っているのをお送りします。 SSIはプロバイダによって、「.htmか.shtml にしなさい!」って事もありますのでお気よ付け下さい。
#1019(水原@女神教会氏)の書き込みを引用します: >ログは606か666じゃないとだめですよ〜。 ログのパーミッションを変えてみたのですが、それでもダメみたいです…。 何か他に原因があるのでしょうか…。 うーん、困った…。
#1018(けいた氏)の書き込みを引用します: >こちらのアクセス解析(access2)を使いたいのですが、どうも設置が上手く行きません…。 > >logana.cgiもlogview2.cgiもブラウザから見ることは出来るのですが、ログが取れてないらしく空のままの状態なんです…。 >パスもパーミッションも合ってると思うのですが…。 >一応パーミッションはフォルダが701で、CGIとplが705、logが600だったと思います…。 >どうかよろしくお願いしますっ。 ログは606か666じゃないとだめですよ〜。
こちらのアクセス解析(access2)を使いたいのですが、どうも設置が上手く行きません…。 logana.cgiもlogview2.cgiもブラウザから見ることは出来るのですが、ログが取れてないらしく空のままの状態なんです…。 パスもパーミッションも合ってると思うのですが…。 一応パーミッションはフォルダが701で、CGIとplが705、logが600だったと思います…。 どうかよろしくお願いしますっ。
みなさん初めまして!私の欲しいスクリプトが国内外いろいろ 探したのですが見つからず、作るしかない!と「すぐに使える・・」 を買って作って見たのです。動作はするのですがもっといい方法が あるはのでは?という感じがしてなりません。 リンク集で更新日を表示させたいのですが、リンク先の更新なので 1行SSIが使えません。リンク先の人に私のサイトの更新ボタンを押させて (パスワードのスクリプトをはさんで)「〜のH/P00/06/12更新」 としたいのです。 「すぐに使える」のアンケート集計を改造して、送信すると投票総数が 増える→ファイルが書き換えられる→SSIで更新日を表示というまわり くどいものを作ったのですが・・・ 良きアドバイスお願いします。
わかやま神さま、水原@女神教会さま、見事動きました! ありがとうございました!! 今回の件で、Perlの構文をもっと勉強しなきゃと思いました...。 これからもbbs.cgiを題材としてお勉強させていただきます。 本当にありがとうございました。
#1014(わかやま神氏)の書き込みを引用します: >$ref = $ENV{'HTTP_REFERER'}; #リンク元 > >$come_url = 'http://*********/*********/*********/*********/___.htm'; >$for_url = 'http://www.yahoo.co.jp/'; >$this_url = 'http://*********/cgi-bin/bbs.cgi'; HTTP_REFERERにhttp://*****/が入ってない可能性もあるかもしれません。 (多分しっかり入ってるはずだけど)
#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") { としても同じです。(この場合は比較は文字列です) ドジな頭を絞って考えてみたんですが、もっといい方法があるかもしれません。 (上手くいくといいんだけど・・・と誰かに振ろうと考えている自分。あ〜、情けない(-_-;))
たびたびありがとうございます。現在の状況です。 条件を一つにして実行するとうまく動いています。 書きの場合は、___.htmから来た場合のみbbsが帰ってきます。 ただし、更新ボタンを押したり、直接bbs.cgiへ来るとyahooへ 飛んでいっちゃいます。 条件式ですが、頂いた内容だと片方の条件が満たされても もう片方が満たされないという状況が起こっているのでしょうか? それともほかの何か...。どーすればー!! #!/usr/bin/perl $ref = $ENV{'HTTP_REFERER'}; #リンク元 $come_url = 'http://***/***/***/***/___.htm'; #参照元URL $for_url = 'http://www.yahoo.co.jp/'; #ジャンプ先URL $this_url = 'http://***/***/bbs.cgi'; if ($ref ne $come_url) { print "Location: $for_url\n\n"; exit; } require 'jcode.pl'; #漢字変換ライブラリを読み込む
#1011(KOOL氏)の書き込みを引用します: >とてもわかりやすいご返答本当にありがとうございます! >現在、頂いたコードをみて下記のように書いてみました。 >ところが、どっから来てもYAHOOのページにしか飛ぶことが出来ません。 >ちなみに、if文のなかの || というのは、or にあたるものですか? >あと ne というのは not みたいな意味なのでしょうか? >聞いてばかりですみません... > > >#!/usr/bin/perl >$ref = $ENV{'HTTP_REFERER'}; #リンク元 > >$come_url = 'http://*********/*********/*********/*********/___.htm'; >$for_url = 'http://www.yahoo.co.jp/'; >$this_url = 'http://*********/cgi-bin/bbs.cgi'; > >if ($ref ne $come_url || $ref ne $this_url){ > print "Location: $for_url\n\n"; > >exit; > } > >require 'jcode.pl'; #漢字変換ライブラリを読み込む HTTP_REFERERの取得した内容とif文の比較内容($come_urlまたは$this_url) が違うからじゃないですかね? if文の中の「||」は、”論理和”です。「ne」は”等しくない”となります。 この場合は、等しくなければ 「print "Location: $for_url\n\n";」を実行し、等しければ実行しない。 となるはずなんですが・・・ とりあえず単純に、if ($ref ne $come_url){ とすると指定先からBBSに入れますか? (むろん書き込みは出来んだろうけど) あ、$ENV{'HTTP_REFERER'};は、 $ref = $ENV{"HTTP_REFERER"};(ダブルクォート)じゃないですか? (いや、シングルでもよかったかな?あれ、どっちだっけ・・・) 環境変数の内容を見れる様にテストCGI作れば一番いいんだけど。 HTTP_REFERERが使えないとか・・・ でも、下の書き込みでURL取れたって書いてあるし。
とてもわかりやすいご返答本当にありがとうございます! 現在、頂いたコードをみて下記のように書いてみました。 ところが、どっから来てもYAHOOのページにしか飛ぶことが出来ません。 ちなみに、if文のなかの || というのは、or にあたるものですか? あと ne というのは not みたいな意味なのでしょうか? 聞いてばかりですみません... #!/usr/bin/perl $ref = $ENV{'HTTP_REFERER'}; #リンク元 $come_url = 'http://*********/*********/*********/*********/___.htm'; $for_url = 'http://www.yahoo.co.jp/'; $this_url = 'http://*********/cgi-bin/bbs.cgi'; if ($ref ne $come_url || $ref ne $this_url){ print "Location: $for_url\n\n"; exit; } require 'jcode.pl'; #漢字変換ライブラリを読み込む
#1009(水原@女神教会氏)の書き込みを引用します: >このままだとBBS自体からのアクセスが拒否されます。 水原@女神教会様フォローありがとうございます。 申し訳ありませんm(__)m 自分から自分を呼び出すんですね。 (そこまで考えていなかったドジな私・・・)
#1008(わかやま神氏)の書き込みを引用します: >#1006(KOOL氏)の書き込みを引用します: >>すみません、質問があります。 >>HTTP_REFERERで、URLを取れることは確認できたのですが、 >>条件分岐をbbs.cgiに組み込むとすれば、どうすればよいのでしょうか? >>IF文を真似して書いてみたのですが、よくわからないのです。 >>方向としては、bbs.cgiが起動した時点で、HTTP_REFERERがaaa.htmlなら >>bbs.cgiを実行し、そうでなければbbb.htmlへという風にしてみたいのですが... >>一応、頭につけてみたりはしたのですが、だめでした。お助け願います。。。 > >こんな感じですかね? >(机上で考えてみたので保証外ですが・・・) > >$ref = $ENV{"HTTP_REFERER"}; #リンク元 > >$come_url = "http://www.hoge.hoge.ne.jp/aaa.html"; #参照元URL >$for_url = "http://www.hoge.hoge.ne.jp/bbb.html"; #ジャンプ先URL > >if ($ref ne $come_url) { #参照元URLでなければ ↑この行を if ($ref ne $come_url || $ref ne "/bbs.cgi"){ こんな感じにしましょう。 > print "Location: $for_url\n\n"; #ジャンプ先URLにジャンプ > >exit; #おしまい > } > もういっけ。 このままだとBBS自体からのアクセスが拒否されます。
#1006(KOOL氏)の書き込みを引用します: >すみません、質問があります。 >HTTP_REFERERで、URLを取れることは確認できたのですが、 >条件分岐をbbs.cgiに組み込むとすれば、どうすればよいのでしょうか? >IF文を真似して書いてみたのですが、よくわからないのです。 >方向としては、bbs.cgiが起動した時点で、HTTP_REFERERがaaa.htmlなら >bbs.cgiを実行し、そうでなければbbb.htmlへという風にしてみたいのですが... >一応、頭につけてみたりはしたのですが、だめでした。お助け願います。。。 こんな感じですかね? (机上で考えてみたので保証外ですが・・・) $ref = $ENV{"HTTP_REFERER"}; #リンク元 $come_url = "htttp://www.hoge.hoge.ne.jp/aaa.html"; #参照元URL $for_url = "htttp://www.hoge.hoge.ne.jp/bbb.html"; #ジャンプ先URL if ($ref ne $come_url) { #参照元URLでなければ print "Location: $for_url\n\n"; #ジャンプ先URLにジャンプ exit; #おしまい } 追加場所は、#!/usr/local/bin/perlの次行ぐらいでいいんじゃないかな。 (要は2行目) それから、Locationヘッダの直後は必ず一行あけて(空行)下さい。 あ、環境変数で取得したURL情報はどんな内容かは分かりませんので、 KOOLさんのサイトに合わせて下さいね。
#1005(みんにゃりん氏)の書き込みを引用します: >初めまして。 >いくつかのプログラムをDLさせていただきました。 > >で、早速改造を試みてみたのですが、質問項目を増やしたら、 >結果表に出力される票数が、最後の方、なんだかヘンになってしまいました。 > >http://www6.freeweb.ne.jp/diary/minyarin/cgi-bin/enquete.cgi > >↑こんなカンジです。 >HTMLを直すとサーバーエラーになってしまうようなのです。 >ドコを直してみたらいいでしょう? どのように改造されたのか、解らないです。 こういう風に改造したとか、こんなエラーが出る。 という風に書かれると諸先生方もお答えしやすいと思います。
すみません、質問があります。 HTTP_REFERERで、URLを取れることは確認できたのですが、 条件分岐をbbs.cgiに組み込むとすれば、どうすればよいのでしょうか? IF文を真似して書いてみたのですが、よくわからないのです。 方向としては、bbs.cgiが起動した時点で、HTTP_REFERERがaaa.htmlなら bbs.cgiを実行し、そうでなければbbb.htmlへという風にしてみたいのですが... 一応、頭につけてみたりはしたのですが、だめでした。お助け願います。。。
初めまして。 いくつかのプログラムをDLさせていただきました。 で、早速改造を試みてみたのですが、質問項目を増やしたら、 結果表に出力される票数が、最後の方、なんだかヘンになってしまいました。 http://www6.freeweb.ne.jp/diary/minyarin/cgi-bin/enquete.cgi ↑こんなカンジです。 HTMLを直すとサーバーエラーになってしまうようなのです。 ドコを直してみたらいいでしょう?
わかやま神さま 早速のご返事ありがとうございます。 「HTTP_REFERER」ですね、試してみます。
#1002(KOOL氏)の書き込みを引用します: >はじめまして。 >快適活用ライブラリで勉強させてもらっています。 >ひとつ質問なのですが、ミニBBSのような、〜.cgiというファイルに直接アクセス >できないようにする方法ってあるのでしょうか? >例えば、必ず決まったページからしか入ってこれないようにとか... >よろしくお願いします。 下の書き込みで、水原@女神教会さんが書かれていますが、 「HTTP_REFERER」を利用すれば可能かと思います。 この変数は、一つ前の場所を示しますから、 この場所が指定された場所かどうかをチェックし指定された場所から来たなら、BBSを表示する。 指定以外の場所ならトップページなどを表示する。 これでどうでしょう?
[トップページに戻る] | 管理人 : キャメル |