0

Google アナリティクスの Cookie からデータを取得し、隠しフィールドに入力して、その情報を Silverpop のデータベースに送信しようとしています。Web フォームに UA コードを挿入しました。Google アナリティクスを介して、サイト (私) に誰かがいることがわかります。しかし、ここで見つけた JavaScript のいくつかのバリエーションを試して、Google Cookie からキャンペーンとソースを抽出し、フォーム送信時にその情報をデータベースに送信しました。どんな助けでも大歓迎です。ありがとうございました

4

1 に答える 1

0

さて、GA はファースト パーティの Cookie を使用するため、サーバー側のコードを使用して Cookie を解析できることを簡単に説明します。私はそのコードを提供するのに十分なほど Java を知りませんが、情報は__utmzCookie に保存され、値は次のようになります。

21733335.1344455611.17.2.utmcsr=camp_source|utmccn=camp_name|utmcmd=camp_medium|utmctr=camp_term|utmcct=camp_content

先頭の数字とドットは、ハッシュと訪問者 ID など、特に気にする必要のないものなので、削除するだけでかまいません。次に、パイプで爆発するだけname=valueで、等号でさらに分割できるペアの配列が得られます。

サーバー側で行う方が効率的で改ざん防止になるため、これについて言及します。フォームで渡すことさえ心配する必要はありません。最初のページ ビュー リクエストで実行できます。

ただし、本当にクライアント側のコードでこれを行いたい場合、または Cookie の解析に関するガイダンスが必要な場合は、JavaScript の例を次に示します。

<script type='text/javascript'>
// function to retrieve the GA campaign values
function getGACampaignCodes() {
  var cv = {};
  var utmz=document.cookie.match(/ __utmz=([^;]*)/);
  if (utmz!=null&&typeof(utmz[1])!='undefined') {
    utmz = utmz[1];
    utmz = utmz.replace(/^[0-9.]+/,'').split('|');
    for (var c=0,l=utmz.length;c<l;c++) {
      var cn = utmz[c].split('=');
      switch (cn[0]) {
        case 'utmcsr' : cv.source=cn[1];
        case 'utmccn' : cv.name=cn[1];
        case 'utmcmd' : cv.medium=cn[1];
        case 'utmctr' : cv.term=cn[1];
        case 'utmcct' : cv.content=cn[1];
      }
    }
  }
  return cv;
}

// function to populate the hidden fields
function addGAToFormFields() {
  var cv = getGACampaignCodes();
  var f = document.forms['someForm'];
  for (c in cv)
    if (cv.hasOwnProperty(c))
      f['ga['+c+']'].value = cv[c];
}

// call this when document is ready
addGAToFormFields();
</script>

</body>
</html>

Java バージョンがどのように見えるかはわかりませんが、これは php に投稿された変数の例です。

Array
(
    [ga] => Array
        (
            [source] => camp_source
            [name] => camp_name
            [medium] => camp_medium
            [term] => camp_term
            [content] => camp_content
        )

)
于 2013-11-02T02:06:59.433 に答える