• ベストアンサー

javascriptとPHPを用いた自作アクセス解析について

表題の件について教えて下さい。 まず、概要を申しますと、販売サイトにおいて コンバージョン(注文メール)した際に、 1.どこから来たのか(リスティング・検索エンジン・他サイトからのリンク等) 2.注文した金額 3.その他ユーザー変数 を記録したく、自作アクセス解析を作ろうと考えております。 方法としてはjavascriptとPHPを使用してユーザー変数やアクセス履歴を データベースに格納する事を考えております。 ここで試した方法なのですが、 まず、HTMLファイル内(index.htmlとします)には下記記述を書きます。 <script type="text/javascript" src="test.php"></script> このページにアクセスが合った場合、test.phpが実行されますが 動きとしては$_SERVER["~"]にて取得できるサーバー環境変数を MySQLのDBに格納するようにしております。 しかしながら、test.php内にてリファラ値が格納された $_SERVER["HTTP_REFERER"]を参照すると、 本来であれば、リンク元のURLが拾えるはずですが なぜかtest.phpの実行元であるHTMLファイルのパス(index.html) を拾ってしまいます。 またどこからindex.htmlにリンクしても、やはりindex.htmlを 拾ってしまいます。 恐らく、$_SERVER["HTTP_REFERER"]にリファラ値が記録される タイミングの問題だと考えておりますが、 例えばここで、index.htmlで読み込むプログラムをPHPではなく javascript(.jsファイル)を用いて、 リファラ値(document.referer)を拾うと、正常にリンク元の値が拾えました。 scriptタグにて読み込むプログラムにおいて PHP・javascriptでは取得できる情報に差があるのでしょうか? また、目的の事を達成する場合は具体的にどのような手法が 望ましいでしょうか。

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

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

正常な動作だと思います、test.php にアクセスした時のリファラは index.html なので。 js の場合は index.html 上で動作するので期待する値が取れます。 なので test.php に js で取得した referrer を渡せばよいかと。 具体的には --index.html <script src="test.js" /> -- test.js ref = document.referrer; document.write('<script src="test.php?ref=' + ref + '">'); -- test.php header('Content-type: application/x-javascript'); $ref = $_GET['ref']; // と思っていますが、実際やったことはありません。

SOU48
質問者

お礼

なるほど、確かにサーバーサイド、クライアントサイドで の仕様からするとそういう動きになりますね。 当たり前のことを見落としていました。 まだ試していませんが、回答いただいた方法で 目的は、達成しそうです。 有難うございました。

その他の回答 (1)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

すべてのhtmlの拡張子を、phpに変えてしまって一行目に自作アクセス解析(データ保存)関数を呼ぶコードを記述するとか。 .htaccessを使って、htmlの拡張子のままでもPHPコードが動くようにして、自作アクセス解析関数を呼ぶコードを記述するとか。 mod_layout(Apacheの拡張モジュール)が使えるなら、自動的に一行目に自作アクセス解析関数を呼ぶPHPコード埋め込むという手法もありですね。 サーバー側だけで処理する方が確実で簡単だと思いますよ。 JavaScriptのOn/Offを気にしないで済みますし。

関連するQ&A