2

私の仕事では、トラフィックがどこから来ているのかを把握する必要があることがよくあります。Google 広告を購入すると、そのトラフィックは URL 内のクエリ文字列によって識別されます。(mywebsite.com/?x="google_ad_group_4")。

すべてのページに、$_GET['x'] がある場合に $_SESSION['x'] を $_GET['x'] に設定するいくつかのセッションを含めます。$_GET['x'] がない場合は、他のいくつかのオプションを調べて、それらがどこから来たのかを確認し、それを $_SESSION['x'] に設定します。

$refurl = parse_url($_SERVER['HTTP_REFERER']);
$query = $refurl['query'];
parse_str($query, $result);

if (isset($result['q'])&& strstr($_SERVER['HTTP_REFERER'],'google')) {
    $_SESSION['x'] = 'G-'.str_replace('\\"',"X",$result['q']);
}elseif (isset($result['p'])&& strstr($_SERVER['HTTP_REFERER'],'yahoo')) {
    $_SESSION['x'] = 'Y-'.$result['p'];

//took out bing, aol, ask etc in the name of brevity

}else{
    if ($refurl['host']){
        $_SESSION['x'] = $_SESSION['x'].'_ref-'.$refurl['host'];
    }
}

このようにして、ユーザーをサイトに誘導した検索クエリと、ユーザーが使用した検索エンジンを追加できます。着信 $_SESSION['x'] をログに記録します。

多くのユーザーが "_ref-mywebsite.com" の $_SESSION['x'] でアクセスしていますが、これは意味がありません。自分のドメインからアクセスしている場合、既に $_SESSION[' x'] は、彼らがいたページに設定されます。これは、ブラウザのセキュリティを高く設定しているためですか?

明らかな何かが欠けていますか?これを行うよりスマートな方法はありますか?

4

3 に答える 3

5

このようなリファラーを取得できます

echo $_SERVER['HTTP_REFERER'];

しかし、コメントで述べたように、それは簡単に操作することができます。

于 2012-04-25T23:43:23.050 に答える
0

クライアント(ブラウザ)が見出しの「HTTP_REFERER」を渡さない限り、取得できません。そして、それは彼らが由来するサイトに依存します。

ワークフローがどのようなものかはわかりませんが、JavaScriptで取得してPHPスクリプトに渡すことができます。お役に立てれば。

于 2012-04-25T23:52:01.937 に答える
0

考えられるシナリオは次のとおりだと思います。

  • 新しい訪問者は、通常のリファラーで Web サイトにアクセスします。
  • 彼は、Web サイトのタブを開いた状態でブラウザーを閉じます (これによりセッション Cookie がクリアされます)。
  • 古いタブに復元された Web サイトでブラウザーを再度開きます。
  • ページ上の任意のリンクをクリックすると、同じドメインからのリファラーとクリーン セッションを含む別のページに移動します。
于 2012-04-26T00:04:28.443 に答える