dポイントプレゼントキャンペーン実施中!

表題の件について教えて下さい。

まず、概要を申しますと、販売サイトにおいて
コンバージョン(注文メール)した際に、
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では取得できる情報に差があるのでしょうか?

また、目的の事を達成する場合は具体的にどのような手法が
望ましいでしょうか。

A 回答 (2件)

正常な動作だと思います、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'];
// と思っていますが、実際やったことはありません。
    • good
    • 0
この回答へのお礼

なるほど、確かにサーバーサイド、クライアントサイドで
の仕様からするとそういう動きになりますね。
当たり前のことを見落としていました。

まだ試していませんが、回答いただいた方法で
目的は、達成しそうです。

有難うございました。

お礼日時:2008/11/22 12:52

すべてのhtmlの拡張子を、phpに変えてしまって一行目に自作アクセス解析(データ保存)関数を呼ぶコードを記述するとか。



.htaccessを使って、htmlの拡張子のままでもPHPコードが動くようにして、自作アクセス解析関数を呼ぶコードを記述するとか。

mod_layout(Apacheの拡張モジュール)が使えるなら、自動的に一行目に自作アクセス解析関数を呼ぶPHPコード埋め込むという手法もありですね。

サーバー側だけで処理する方が確実で簡単だと思いますよ。
JavaScriptのOn/Offを気にしないで済みますし。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!