• ベストアンサー

cgiもしくはJAVAなのでしょうか・・・?困ってます!!

少し解らずらい内容なのですが・・すみません、教えてください。 実はアクセスログを設置し、運営しようかと思っております。 そのプログラムがフレームに対応していないとの回答(開発者)をいただき、一番初めに表示されるページにタグのリロードをつけ、そしてフレームページにジャンプさせる・・・、と考えておりました。が、エンドユーザー側がそのページにブックマークをつけると、次回は次のページからスタートしてしまい、正確なログが取れないという問題に直面しました。 図) |-index.htm(ログ集計・・・リロードにてnext.htmへジャンプ) | |-next.htm(エンド側にてブックマークにすると、次回はnxet.htmからとなる) で何かよい方法はないかと思い、相談しました。 例) |-index.htm |  |-???.cgi | |-index.htm とできれば、ブックマークをつけても、常にindex.htmとできるのですが・・・? これは、cgiですか?javaですか? あと、ソースを教えてください。

  • CGI
  • 回答数7
  • ありがとう数9

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

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.5

cgiかJavaか? これは問題ではないです。javaであってもかまわんです。ただ、javaをCGIとして使用している人は少ないとは思いますが。 リロード形式を今一歩補えばできないことはないですが・・・ Perlなどで、 $url[0] = 'http://*****/index.html'; $url[1] = ''; # ほかにあるなら… $ENV{'HTTP_REFERER'}=~ s/%(..)/pack("C",hex($1))/eg; if($ENV{'HTTP_REFERER'}){for(@url){if($_&&$ENV{'HTTP_REFERER'}=~ /^\Q$_\E/){$flag=1;last;}}} if($flag==1){ #直前のページが指定された(トップの)URLだったので、どうやら、順調にはいってきたようだがなや。 すでにindexでアクセス解析してるはずなので、終了しようかいなこりゃ。 exit(); } #どうやら、サイト外からご訪問なさった模様なので、ログ解析でもいっちょとったるかいなこりゃ。 #以下つらつらとログ解析プログラミングでもどっかからぺちってきてはっ付けとくがやさ。 あ、つらつらつらら。 お・わ・り。 これをindex.htmと、next.htmの両方から呼び出してしまえば良いんではないですかいな? index→next.htmに来たときには、indexの時だけログ解析が行われる。next.htmでは直前がindexなのでexitし、ログ解析しません。 いきなりnext.htmに来たときには、直前がindexでないので、ログ解析が行われる。

_duke_
質問者

お礼

ありがとうございました。 参考にさせていただいて、試しているのですが・・・。 はずかしながら、ど素人にはすごく難しいです。 もう少し教えていただけますか?

その他の回答 (6)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.7

友人がちょうどログ解析をつけたというので,そのWebページの解析やっていたら,JavaScriptになかなか使えるプロパティがあることを発見。 ###################################### <script language="JavaScript"> <!-- document.write('<img width=0 height=0 src="ログ解析CGI?refer='+document.referrer+'">); --> </SCRIPT> <noscript> <img width=0 height=0 src="ログ解析CGI?refer=NoJavaScript"> </noscript> ####################################### JavaScriptを利用してForm type=GETと同じ形式でCGIにreferrerを渡す。 JavaScriptが利用できないときはreferrerあきらめる。 こんな形式で利用できるようにCGI改良すれば,CGI処理が遅くなっても,閲覧者はストレスなくWebの閲覧が可能。

_duke_
質問者

お礼

ありがとうございました。 幾分素人なもので・・・、 もう少し詳しく設置方法などを教えてください。

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.6

CGIとは,Webサーバプログラムと他のプログラムが協調動作するための仕組み。 JavaやPerlは,他のプログラムとして何を使っているかという事。 Javaに関していえば… JavaはJavaAppletやCGIとして,Webに利用可能。 ログ回収CGIがnext.htmを吐くという方法もありますね。Perlならこんな感じ ########################## binmode(STDOUT); print "Content-type: text/html\r\n"; print "\r\n"; open(MAINHTML,"next.htm"); read(MAINHTML,$myMain,102400); #<-でかい数字で適当に読んでます。 print $myMain; close(MAINHTML);

_duke_
質問者

お礼

ご丁寧にありがとうございます。 色々と調べた結果、フレームに対応したアクセスログができる方法を探した方が良さそうな感じがします。 アクセス元のリモートホストやブラウザ、OS情報、解像度、検索キーワードなどが解析できるも。 ありがとうございました。

  • arata
  • ベストアンサー率49% (139/279)
回答No.4

イメージタグ<img=でログを取るタイプのものもありますよ。

参考URL:
http://hyperbox.com/support/cgi/logmail.html
_duke_
質問者

お礼

ありがとうございます。 参考にします。 依然・・・困ってます!

  • dany
  • ベストアンサー率35% (27/77)
回答No.3

>上記の記述ですと、直前のURLが、index.htmとなってしまいます。 解析cgiのあるページを呼んでいるのはindex.htmですよね。 REFFERは直前に見ていたページが表示されるわけですから。:-) フレームもしかり…なのかな? フレームで問題がでるのなら index.htmはフレームもなにもきらない 構成にすればいいと思います。よくありますよね、入口ページ。 そこがブックマークされないと心配しているなら、ブックマークして もらえるような工夫をすればいいだけのことです。更新情報を 載せるとか、絵描きさんなら新作は必ずそこに掲載してからにするとか。 一言日記を載せるとか。 技術技術だけじゃなくてちょっとした工夫だと思いますよ。 それでも私みたいに直接日記、掲示板にブックマークする人はいます(笑)。一番いいのはログを貰えるプロバイダを使うことです。

_duke_
質問者

お礼

すみません。お礼するつもりが・・・補足になってました。 どーも、すみませんでした!

_duke_
質問者

補足

アドバイス、ありがとうございました。 確かに・・・・と思うのですが、 困った事に、構造は変えなれないのです。 いやぁ・・・悩んでマス!

  • senna13
  • ベストアンサー率28% (67/237)
回答No.2

ユーザーズグループのASPメーリングとかD-HTMLメーリングの 活用をお勧めします。 プログラムの話は、何回かのやり取りも必要でしょう。 きっと参考になるはずです。

参考URL:
http://www.users.gr.jp/
_duke_
質問者

お礼

ありがとうございました。 参考にしてみます。

noname#1785
noname#1785
回答No.1

cgiでもjavaでもなく、HTMLでフレームきればいいのでは? index.htmの内容を、 <html> <frameset cols="0%,100%"> <frame src="ログを取るcgiのファイル(1)"> <frame src="実際に表示するファイル(2)"> </frameset> </html> とやれば、index.htmにアクセスしたときに(1)でログを取り、実際に表示されるのは(2)の画面。 後、画面遷移はそのまま(2)の画面の部分だけ移動するようにすれば、ログが二重に吐き出されることもありません。 (colsはrowsにしても同じです) ただし、この方法だとURL表示はindex.htmlひとつだけになりますので、URL表示を変更したいという場合にはむきません。

_duke_
質問者

補足

ありがとうございます。 index.htmの内容を <html> <frameset cols="0%,100%"> <frame src="ログを取るcgiのファイル(1)">・・・ue.htm <frame src="実際に表示するファイル(2)"> ・・・shita.htm </frameset> </html> ですよね。という事は、ue.htmでログを採取する記述を入れる・・・。 はい、やってみました。問題なく動作するのですが、 キーワードや直前のURLの情報が取れないんです。 上記の記述ですと、直前のURLが、index.htmとなってしまいます。

関連するQ&A

  • これはcgiですか?javaですか?

    少し解らずらい内容なのですが・・すみません、教えてください。 実はアクセスログを設置し、運営しようかと思っております。 そのプログラムがフレームに対応していないとの回答(開発者)をいただき、一番初めに表示されるページにタグのリロードをつけ、そしてフレームページにジャンプさせる・・・、と考えておりました。が、エンドユーザー側がそのページにブックマークをつけると、次回は次のページからスタートしてしまい、正確なログが取れないという問題に直面しました。 図) |-index.htm(ログ集計・・・リロードにてnext.htmへジャンプ) | |-next.htm(エンド側にてブックマークにすると、次回はnxet.htmからとなる) で何かよい方法はないかと思い、相談しました。 例) |-index.htm |  |-???.cgi | |-index.htm とできれば、ブックマークをつけても、常にindex.htmとできるのですが・・・? これは、cgiですか?javaですか? あと、ソースを教えてください。

  • CGI用直リンク防止プログラムについて(トップがフレームでCGI表示の場合)

    質問させて頂きます。 二分割のフレーム構成でのサイトですが、左にメニュー、そして右にCGIを表示させています。(index.htmはフレームなしの一枚ペラで、そこをクリックするとコンテンツのフレームページ、cont.htmにいくようになっています) CGIには直リンクを防止する為、KEEPOUT(http://cgiroom.nu/list/level_up/keepout/readme.htm)という直リンク防止CGIを仕込んであるのですが、フレーム構成でいきなりCGIを表示させている為か、index.htmからcont.htmという正規ルートを辿っても、直リンクだと判断されてindex.htmに戻されてしまうのです。 それでフレームという概念をぼかす為にCGIの前にrefresh.htmを設けて、カウント0で瞬時にCGIに行くようにしたところ、ある程度のバージョンのIEなら弾かれなくなりましたが、IE5.1以下はやはりindexに戻ってしまいます。現在は6か7が主流なので別にいいかとも思ったのですが、クラシックMacのユーザーは5.1を使っている方がまだ割といらっしゃると聞いたので、どうにか5.1でも弾かれないようにしたいのです。 どなたかお知恵を貸して頂けないでしょうか。宜しくお願い致します。(ちなみにネスケでは全部弾かれますが、諦めています)

    • 締切済み
    • CGI
  • フレームセットのリンクを変更するCGI

    フレームセットを利用していると直リンクされると、レイアウトが崩れて嫌なので普段はJavaScriptで <body onLoad="if (top == self) { location.replace('index.html') };"> このタグで強制的にフレームセットのページであるindex.htmlにリロードしています。 でも、この場合だとindex.htmlにフレーム設定をしているA.htmlとB.htmlしか表示できません。 これを、直リンクされた場合に強制的にindex.htmlに飛んで、さらにフレームセットのページをA.htmlとC.html(直リンクされたページ)に変更させたいのです。 index.htmlを表示させた後、C.html(直リンクされたページ)のアドレスを取得してフレームセットを書き直すCGIなのだと思いますが、このようなCGIのフリーなどありましたら教えてください。 JavaScriptとCGIの混合技らしいので、JavaScriptカテゴリにも書き込んでおります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=745359

    • ベストアンサー
    • CGI
  • トップページにCGI

    トップページにCGIを使ったらアドレスの最後が /index.cgi になるじゃないですか、それを /index.html にしたいのですがどうすればいいのですか? フレームを使うやり方は知っているのですが それ以外の方法があれば教えてください。

    • ベストアンサー
    • CGI
  • CGIだとうまくいかない!

    まずは下記ソースをご覧ください。 これを実行させると上下2のフレームができまして、上フレームにある「Jump C」と いうリンクをクリックすると、下フレームが「ccccccccc」というところまでジャンプ するように作りました。 まずは実験版としてCGIでなくPC上でHTMLファイルを作成(main.cgiがmain.htmになる) しました。その時はうまく下フレームの「cccccccc」までジャンプしたのですが、これを CGIに作り直して実行させたところ、何も動作しないままでした。 CGIでもHTML上同様の動きをさせるにはどのようにしたらよろしいでしょうか? どなたかご存知の方いましたら、ご鞭撻のほどお願い致します。 -------------- main.cgi ------------------------------------- <HTML> <HEAD><TITLE>フレームテスト</TITLE></HEAD> <FRAMESET ROWS="20%,*"> <FRAME SRC="top.cgi" NAME="FRAME2"> <FRAME SRC="btm.cgi" NAME="FRAME3"> </FRAMESET> </HTML> -------------- top.cgi ------------------------------------- <HTML> <head> </head> <body> <a href="right_btm.cgi#c" target="FRAME3">Jump C</a> </body> </html> -------------- btm.cgi ------------------------------------- <HTML> <head> </head> <body> <A NAME="#a">aaaaaaaaa<br><br><br><br><br><br><br><br><br> <A NAME="#b">bbbbbbbbb<br><br><br><br><br><br><br><br><br> <A NAME="#c">ccccccccc<br><br><br><br><br><br><br><br><br> <A NAME="#d">ddddddddddd<br><br><br><br><br><br><br><br><br> </body> </html> ------------------------------------------------------------ このCGIを実行すると、

  • CGI(BBS)の設置が出来ません(2)

    --------------------↓ # ログディレクトリ (フルパスだと / から) $log_dir = "."; ↑これは「/bbs.log」と入れるのでしょうか? ちなみに上記全ての書類はcgi-binで同階層です。 # 表示ファイルディレクトリ (フルパスだと / から) $htm_dir = "."; ↑これもよく分かりません。 # CGIスクリプト自身をURLで指定 $script = "http://www.●●●.ne.jp/cgi-bin/lomobbs.cgi"; ↑の様に入れましたが合っていますでしょうか? # 表示ファイル (index.html) のある「ディレクトリ」をURLで指定 $htm_url = "http://www.●●●.ne.jp/cgi-bin"; # ログファイル名 $logfile = "bbs.log"; # ロックファイル名 $lockfile = './bbs.lock'; # 過去ログのあるディレクトリ (フルパスだと / から) $past_dir = "."; # 補助プログラムのファイル名 $subfile = './bbs2.cgi'; ---------------------------- 以上、アヤシイ個所を書いてみました。 おかしな個所があれば教えてください。 ちなみに、DLしたcgiの書類名を変更したのですが、 それは何か影響はありますか? いくらやり直してもページが表示されません。

    • 締切済み
    • CGI
  • アクセス制限cgiを探しています

    Javascriptを無効にしている閲覧者が勝手にパスをたどっていったり、ブックマークして欲しくないページをブックマークしてそこから毎回閲覧されることを防ぎたいのです。 JavascriptだけならReferrerを調べればできると思いますが、Javascriptを無効にしている閲覧者を正規のルートから入ってもらうために必要なのです。 具体的には index.html → toppage.html → page1.html, page2.html となるのですが、 page1.htmlをブックマークされていると、いきなり index.html,toppage.htmlやらを飛ばしてpage1.htmlから入ってしまいます。 何かよいCGI有りますでしょうか? できれば、ページに記述するタイプがあれば嬉しいですね。 ちなみに、index.html,toppage.html,page1.html,... は全て同じ階層に有ります。

    • 締切済み
    • CGI
  • アクセス・ログ用CGIをHTMLから自動起動する方法は?

    ホームページ・アクセスログ用のCGI(実際はjavaサーブレット)を作ったのですが、トップページをアクセスした時に、このCGIを自動的に呼び出すようにトップページのHTMLを修正したいのですが、どうしたら呼び出せるのかがわかり ません。 ・ホームページとCGIのサーバーは別です。 ・このCGI自体はブラウザ側に特に返す内容はありません。必要であれば返しても良いですが。 ・HTMLだけでは無理であれば、javascriptを使っても良いです。 普通はどうしてるのでしょうかね?

  • CGIでのtarget指定について

    CGI初心者です。 下記図のようなイメージでhtmとcgiを組み合わせて表示させたいと考えています。 index.htm | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|←bunner.htm |  ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| |      |                    | |      |                    | |      |                    | |      |                    | |      |                    | |      |                    | |      |                    | |      |                    | | ___|_____________|  ↑ menu.cgi       ↑mein.htm index.htmにFRAMEタグを使用して表示させています。 menu.cgiに固定リンクを表示し、リンクをクリックした時にtarget指定でmein.htmに表示させたいです。 IE6では上手くいったのですが、IE7以降で試した場合、新規ウインドウでリンクが開かれてしまいます。(target=_blankと同じ動きです) ちなみにFireFoxでは新規タブに表示されます。 html形式の時点では問題なくできるようなので、恐らくcgiが絡んでいるのが原因だと考えています。 そもそもこのような作り方が問題なのでしょうか? menu.cgiに当たる部分は、固定リンクの他にテキストファイルを読み出して表示させるような可変リンクを表示したい部分もあるのですが、回避方法が見付からなく困っています。 どうか、お力添え宜しくお願いします。

    • ベストアンサー
    • CGI
  • リンク元を調べるCGIの作り方で悩んでいます

    はじめまして。Perl暦1ヶ月の者です。 自分のサイトのリンク元を調べるCGIを設置しようと思いますがどんな方法があるでしょうか。 私が調べた方法は、 1.CGI+SSIを利用 2.CGI+インラインフレームを利用 ですが、1.は各ページに <!--#exec cgi="○○.cgi"--> を入れてCGIを起動させるわけですが、全ページが.shtmlとなってしまい抵抗を感じます。.htm → .shtmlと変わることにより当分検索順位が下がるかもしれません。 それで2.を試しました。通常ページ page1.htm にインラインフレームで○○.cgiを埋め込み、ここでカウンターを表示させるとともにログを取得しようと思ったのです。しかしHTTP_REFERERが取得してくれるリンク元はあくまで「page1.htm」ですので役に立ちません。 最も一般的な方法はどのようなものでしょう?詳しい方よろしくお願いいたします。m(_"_)m *できればコードを丸ごと教えていただけると助かります。 ↓作成の条件です↓ ・一般ページはあくまで.htm にしたい。 ・レンタルサーバー屋はSSIは.shtmlと言っている。 ・リンク元一覧は一般ページには表示しない。 ・全ページの外部リンク元を知りたい。

    • ベストアンサー
    • Perl

専門家に質問してみよう