0

各訪問者の参照 URL をセッション変数に保存し、それを参照リンクの場合と同様に、訪問者をウェブサイトに誘導した Google キーワード/フレーズなどの他のデータとともにデータベースに保存するスクリプトに取り組んでいます。通常の Google リスティング (オーガニック検索結果) または有料リンク (Google アドワーズ) でした。これまでのところ、私はこれを思いつきましたが、常に機能するとは限りません。さらに読んでみると、いくつかの条件で http_referer がブロックまたは非表示になっていることがわかったので、これを機能させるためのより良い方法を探しています。

    $session = & JFactory::getSession();
    if (!$session->get('referrer', $origref, 'extref')) //If does not exist
    {
        $origref = $_SERVER['HTTP_REFERER'];
        $session->set('referrer', $origref, 'extref');

        $url = $session->get('referrer', $origref, 'extref');
        if(!$url && !$url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false) {
            $q = 'No referer';
        }

        $parts_url = parse_url($url);
        $query = isset($parts_url['query']) ? $parts_url['query'] : (isset($parts_url['fragment']) ? $parts_url['fragment'] : '');
        if(!$query) {
            $q = 'Not from Google';
        }
        parse_str($query, $parts_query);
        $q = isset($parts_query['q']) ? $parts_query['q'] : isset($parts_query['oq']) ? $parts_query['oq'] : (isset($parts_query['p']) ? $parts_query['p'] : 'could not fetch keyword');

      if(stristr($origref, 'aclk')) { // if referer is a google adwords link as opposed to an organic link
          $type = ', paid link, '.$_SERVER['HTTP_USER_AGENT'];
      } else {
          $type = ', organic result, '.$_SERVER['HTTP_USER_AGENT'];
      }

    $ginfo = $q.$type;
    $session->set('referrer', $ginfo, 'extref');  
    }

    function search_engine_query_string($url = false) {
        if(!$url && !$url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false) {
            return 'No referer';
        }

        $parts_url = parse_url($url);
        $query = isset($parts_url['query']) ? $parts_url['query'] : (isset($parts_url['fragment']) ? $parts_url['fragment'] : '');
        if(!$query) {
            return 'Not from Google';
        }
        parse_str($query, $parts_query);
        return isset($parts_query['q']) ? $parts_query['q'] : (isset($parts_query['p']) ? $parts_query['p'] : '');
    }

何か案は?

4

2 に答える 2

0

私は間違っているかもしれませんが、両方のエンド (つまり、リファラーとリファーラー) を制御しない限り、あなたが既に行っている以上のことは不可能だと思います。

分析目的の場合は、Google アナリティクスGoogle ウェブマスター ツールを使用できます。

どちらも互いに補完し合い、スクリプトで達成したいことはほとんどありません

于 2012-07-31T17:37:54.607 に答える
0

もう 1 つの一般的な方法は、トラッカー ID 用の専用のエントリ URL を用意することです。例えば:

subdomain.mysite.com/tracker?userid=12345&source=adwords

その URL がヒットすると、ソースがアドワーズであることがわかり、リダイレクトを使用してユーザーをすぐにメイン ページにheaderリダイレクトします。そうすれば、彼らは追跡について何も知らないので、かなり信頼できるはずです.

于 2012-07-31T17:33:51.020 に答える