- ベストアンサー
cgiもしくはJAVAなのでしょうか・・・?困ってます!!
少し解らずらい内容なのですが・・すみません、教えてください。 実はアクセスログを設置し、運営しようかと思っております。 そのプログラムがフレームに対応していないとの回答(開発者)をいただき、一番初めに表示されるページにタグのリロードをつけ、そしてフレームページにジャンプさせる・・・、と考えておりました。が、エンドユーザー側がそのページにブックマークをつけると、次回は次のページからスタートしてしまい、正確なログが取れないという問題に直面しました。 図) |-index.htm(ログ集計・・・リロードにてnext.htmへジャンプ) | |-next.htm(エンド側にてブックマークにすると、次回はnxet.htmからとなる) で何かよい方法はないかと思い、相談しました。 例) |-index.htm | |-???.cgi | |-index.htm とできれば、ブックマークをつけても、常にindex.htmとできるのですが・・・? これは、cgiですか?javaですか? あと、ソースを教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
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でないので、ログ解析が行われる。
その他の回答 (6)
- onosuke
- ベストアンサー率67% (310/456)
友人がちょうどログ解析をつけたというので,その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の閲覧が可能。
お礼
ありがとうございました。 幾分素人なもので・・・、 もう少し詳しく設置方法などを教えてください。
- onosuke
- ベストアンサー率67% (310/456)
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);
お礼
ご丁寧にありがとうございます。 色々と調べた結果、フレームに対応したアクセスログができる方法を探した方が良さそうな感じがします。 アクセス元のリモートホストやブラウザ、OS情報、解像度、検索キーワードなどが解析できるも。 ありがとうございました。
- arata
- ベストアンサー率49% (139/279)
イメージタグ<img=でログを取るタイプのものもありますよ。
お礼
ありがとうございます。 参考にします。 依然・・・困ってます!
- dany
- ベストアンサー率35% (27/77)
>上記の記述ですと、直前のURLが、index.htmとなってしまいます。 解析cgiのあるページを呼んでいるのはindex.htmですよね。 REFFERは直前に見ていたページが表示されるわけですから。:-) フレームもしかり…なのかな? フレームで問題がでるのなら index.htmはフレームもなにもきらない 構成にすればいいと思います。よくありますよね、入口ページ。 そこがブックマークされないと心配しているなら、ブックマークして もらえるような工夫をすればいいだけのことです。更新情報を 載せるとか、絵描きさんなら新作は必ずそこに掲載してからにするとか。 一言日記を載せるとか。 技術技術だけじゃなくてちょっとした工夫だと思いますよ。 それでも私みたいに直接日記、掲示板にブックマークする人はいます(笑)。一番いいのはログを貰えるプロバイダを使うことです。
お礼
すみません。お礼するつもりが・・・補足になってました。 どーも、すみませんでした!
補足
アドバイス、ありがとうございました。 確かに・・・・と思うのですが、 困った事に、構造は変えなれないのです。 いやぁ・・・悩んでマス!
- senna13
- ベストアンサー率28% (67/237)
ユーザーズグループのASPメーリングとかD-HTMLメーリングの 活用をお勧めします。 プログラムの話は、何回かのやり取りも必要でしょう。 きっと参考になるはずです。
- 参考URL:
- http://www.users.gr.jp/
お礼
ありがとうございました。 参考にしてみます。
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表示を変更したいという場合にはむきません。
補足
ありがとうございます。 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となってしまいます。
お礼
ありがとうございました。 参考にさせていただいて、試しているのですが・・・。 はずかしながら、ど素人にはすごく難しいです。 もう少し教えていただけますか?