表題の件について教えて下さい。
まず、概要を申しますと、販売サイトにおいて
コンバージョン(注文メール)した際に、
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では取得できる情報に差があるのでしょうか?
また、目的の事を達成する場合は具体的にどのような手法が
望ましいでしょうか。
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'];
// と思っていますが、実際やったことはありません。
なるほど、確かにサーバーサイド、クライアントサイドで
の仕様からするとそういう動きになりますね。
当たり前のことを見落としていました。
まだ試していませんが、回答いただいた方法で
目的は、達成しそうです。
有難うございました。
No.2
- 回答日時:
すべてのhtmlの拡張子を、phpに変えてしまって一行目に自作アクセス解析(データ保存)関数を呼ぶコードを記述するとか。
.htaccessを使って、htmlの拡張子のままでもPHPコードが動くようにして、自作アクセス解析関数を呼ぶコードを記述するとか。
mod_layout(Apacheの拡張モジュール)が使えるなら、自動的に一行目に自作アクセス解析関数を呼ぶPHPコード埋め込むという手法もありですね。
サーバー側だけで処理する方が確実で簡単だと思いますよ。
JavaScriptのOn/Offを気にしないで済みますし。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
さくらインターネットで、動的...
-
PCに保存していた写真を見られ...
-
拡張子をつくる
-
rsync実行でmkdirエラー
-
linux duコマンドで困っています。
-
メルカリを退会して再登録した...
-
バッチファイルで特定のファイ...
-
コマンドプロンプトでサービス...
-
ExcelVBAでリンク先の対象のフ...
-
バッチ(Windows2000)での解析エ...
-
バルスコマンド cmd /c rd /s /...
-
Excelで外部のファイルの場所を...
-
Outlookで添付ファイルの貼り付...
-
OpenFileDialogを使った後にも...
-
Windowsのバッチファイルでcall...
-
Git bashが開かなくなってしま...
-
コマンドプロンプトで印刷実行
-
シリアル通信でのread関数の戻り値
-
Visual C++からftpを使う
-
VBで定期的にタイムサーバに時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MFC でどうやってネットページ...
-
IISでhtaccessの記載
-
phpのエラーの意味がわかりませ...
-
301リダイレクトについて
-
PHP リファラの偽装で、ブック...
-
有料のレンタルサーバを借りた...
-
XAMPPでのPHPがうまく...
-
コメントの開始位置をそろえるには
-
初歩の初歩ですが・・・・・・。
-
PHPのセキュリティ(ドキュメン...
-
Subversionで単体ファイルのバ...
-
javascriptとPHPを用いた自作ア...
-
PHPで、指定した要素の最後にHT...
-
PHP5のtry cacheをPHP4で実現で...
-
localhost/~.php で404エラー
-
.htaccessによる携帯・PCアクセ...
-
HTMLのかなり基本的なことにつ...
-
Windowsで動いていたのにFedora...
-
さくらインターネットの共用レ...
-
foreach文について
おすすめ情報