リファラーのデータ送信について
こちらの質問(http://okwave.jp/qa3205563.html)で一定の解決を見たのですが、新たな問題が発生してしまったので教えてください。
sample.htmlへの記述
<script type="text/javascript">
var ref = document.referrer ;
document.write("<script type=\"text/javascript\" src=\"http://hoge.com.info.php?ref="+ref+"\"></script>");
</script>
で、refを送信したのですが、
受け取ったrefが、googleだと、
「http://www.google.co.jp/search?hl=ja」になってしまい、&で区切られている以降のデータ(つまり「q」)が取得できません。
別質問(http://okwave.jp/qa3200959.html)で、
hrm_mmmさんの回答=======================================
$_SERVER['HTTP_REFERER']が対象ならば、以下で、$query_hashに、$_GETと同様のurldecode済みデータがハッシュ配列として得られます。
$url_hash = parse_url( $_SERVER['HTTP_REFERER'] );
if( array_key_exists( 'query', $url_hash ) and strlen($url_hash['query'])>0 ){
parse_str( $url_hash['query'], $query_hash);
}
// あとは、$url_hash['host'] によって切り分けて検索キー取り出しをすればよいと思います。
$word = '';
if( preg_match ("/\.google\./", $url_hash['host']) ) {
$word = $query_hash['q'];
} elseif( preg_match ("/\.yahoo\./", $url_hash['host']) ) {
$word = $query_hash['p'];
} elseif( preg_match ("/\.goo\.ne\.jp/", $url_hash['host']) ) {
$word = $query_hash['MT'];
}
====================ここまで============================
こんなんでやればいいよ。と教えていただいたのですが、グーグルから送られたref自体にqが入っていません。
というか、?以降の1番目のクエリーしか入ってきません。
ヤフーなら ?p=~でOK
gooなら ?MT=~でOK
google は hl=jaが一番最初にくるので、qがとれません。
なぜ、送信されてくるreferrerに2番目以降のパラメータがついてこないのでしょうか。。。
ちなみにsample.htmlで document.write(document.referrer)をやるとちゃんと全て表示されます。
お礼
ありがとうございました!
補足
どうやら私の力だと難しいようなので、FireFoxのアドオンからURLを監視し、ヒットしたらテキストに書き込み、それをC#の常駐プログラムで読み取ろうと思うのですが、もっとスマートな方法があったら教えていただけるとありがたいです。