SSI未対応のプロバイダでログ解析CGIを実行するには?
[上に]
[前に]
[次に]
ヘラクレス
[E-Mail]
[HomePage]
2000/01/12(水) 00:16:25
プロバイダはニフティーを使用しているのですが、
CGIは使えるのですが、SSIは未対応みたいで困っています。
アクセスログ解析を作ってみたのですが、index.htmlが開かれた時に
カウントようのlog.cgiを呼び出したいと思っています。
javascriptのdocument.writeを使えば行けるかも!
と思い
<script language="JavaScript1.2">
<!--
document.write("<IMG SRC='http://www.***.nifty.com/***/log.cgi"+document.referrer+"' width=1 height=1>");
// --></script>
上記の様にindex.htmlに書きこんだのですが、カウントされません。
実際にlog.cgiのURLにアクセスするとカウントされるのでCGIに
ミスは無いと思っています。
何か良い方法がありましたら、知恵をお貸しください。
andi
2000/01/12(水) 00:23:30
このままだと例えばヤフーからのアクセスだと
http://www.***.nifty.com/***/log.cgihttp://www.yahoo.co.jp/
ってなるからじゃないですか?
cgiのあとに?を付けると良いと思います。
あとさらに?をエスケープしたりする必要もありますが、
詳しくはここの過去ログを探したらでてきそうです。
気まぐれ
2000/01/12(水) 00:44:40
さらに付け加えると、JavaScript1.2 だと効果が少ないような・・・
あたしゃ log.cgi の代わりに カウンターにその機能を付けて
こうしてますが・・・
<SCRIPT LANGUAGE="JavaScript">
<!--
var ref = document.referrer;
document.write('<IMG SRC="http://www.hoge.com/~foo/cgi-bin/counter.cgi?'+ref+'">');
//-->
</SCRIPT>
<NOSCRIPT>
<IMG SRC="http://www.hoge.com/~foo/cgi-bin/counter.cgi?ScriptOff"><br>
</NOSCRIPT>
#この方法だと一部のIE4が、最初に ScriptOff でアクセスした直後に
#もう一度スクリプトを On の状態でもう一度読み込んでいる様です
#なんで ? をエスケープするのかと思ったけどサーチエンジンから来
#た場合のキーワードを取る時ね、でもこれだけでも結構イケますよ
ヘラクレス
2000/01/12(水) 00:45:33
すいません、?は一度つけてみました。
でも、だめだったんです。
エスケープについては、エスケープって言うのを検索して
一通り目を通したのですが、良く分からなかったです。
具体的に教えてください。
unicodeの事なんでしょうか?
気まぐれ
2000/01/12(水) 00:57:16
エスケープするってのは、本来漢字やいつかの記号を UR Lの部分に
使用していけないって規定?が有るから %02 だとかの文字に置き換
えて使います。
つまり、Yahoo 等の検索エンジンでの検索時のキーワードをそのまま
ロギングする事が可能ってこと。
必要ないなら、log.cgi で ? 以降をカットしちゃえばいいし、そんな
に細かくログを取らなけりゃ無視しても良い
andi さんが言ってるのは、JavaScript で生成した URL が正当じゃ
ないって事。試しに最初の例で WIDTH と HEIGHT の指定を外してみ
ればいい、多分 Not Found になってるから。
最初の例では、CGIを指す URL とデータを区切るための ? が抜けて
るって事です。
気まぐれ
2000/01/12(水) 00:58:30
あいや!
>いつかの記号を
>いくつかの記号を
Selly
2000/01/12(水) 01:56:40
Content-Typeはちゃんと出力していますか?
SSI用と言うことで、なにも出力してないような気がするのですが。
CGIとして呼び出される以上、ヘッダにContent-Typeが出力されてないとServer Errorが発生します。
ヘラクレス
2000/01/12(水) 19:53:09
う〜ん、解決しない(t_T
もともと、CGIで動作させるつもりだったので、
ちゃんと
print"Content-type: image/gif\n";
print"Content-length: $tt\n\n";
print <IMG>; close(IMG);
って最後の方に書いてます。
上記が合ってるかどうか自身は無いですが・・・・
[上に]
[前に]
[次に]