私は分割テストアプリをデバッグしています。訪問、ユニークビジター、変数の提示、コンバージョンのトラッキングを行います。これは、テスト対象のページにJavaScriptファイルを読み込むことで実装されます。クッキーでユニークビジターを追跡できません
JavaScript(およびサポートファイル)がテスト対象のページと同じドメインにある場合は、完全に動作しますが、異なるドメインにある場合、1つのアスペクトが失敗します。訪問者を追跡し、変数を表示し、トラックはですが、トラックはなくなりましたユニークの訪問者。
追跡はクッキーによって行われます。
tracker.js.phpこれはのsettings.phpは(価格)
<?php
extract($_POST);
$disabled_text = 'disabled';
$settings_file = 'settings.json';
$visitor_log_file = 'visitor_log.json';
$settings = json_decode(file_get_contents($settings_file), true);
if(isset($edit)){
$disabled_text = '';
} else if(isset($submit)){
$settings['variable_id'] = $variable_id;
$settings['target_id'] = $target_id;
$settings['price'] = $price;
$settings['cookie_id'] = rand();
$settings_json = json_encode($settings);
file_put_contents($settings_file, $settings_json);
$visitor_log = array();
$x = 0;
foreach($price as $each){
$visitor_log[$x]["price"] = $each;
$visitor_log[$x]["visitors"] = '0';
$visitor_log[$x]["unique_visitors"] = '0';
$visitor_log[$x]["conversions"] = '0';
$x++;
}
$visitor_log_json = json_encode($visitor_log);
file_put_contents($visitor_log_file, $visitor_log_json);
}
extract($settings);
?>
変数を編集するために使用される
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
function log(log){
console.log(log);
}
<?php
// SETTINGS
include_once 'settings.php';
header('Content-type:text/javascript');
?>
// VISITOR COOKIE
var cookie_match_id = '<?php echo $settings['cookie_id']; ?>',
cookie_id = String(getCookie('id')),
price_index = getCookie('index'),
prices = [<?php echo implode(',', $settings['price']); ?>],
prices_amount = prices.length;
// IF PRICE IS EMPTY, OR COOKIE DOESN'T MATCH, SET IT
if(!price_index.length || cookie_id!=cookie_match_id){
price_index = ~~(Math.random() * prices_amount);
setCookie('index', price_index, 365);
setCookie('id', cookie_match_id, 365);
}
// STORE
var price = prices[price_index];
$('#random1').html('$'+price);
// TRACK
$.get('http://mywebsite.com/track.php', {track:true, variation:price_index}); // track visit
$('#target1').click(function(e){
e.preventDefault();
$.get('http://mywebsite.com/track.php', {track:true, conversion:true, variation:price_index}); // track conversion
return false;
});
追跡されているページにリンクされたファイルですtrack.php実際に追跡するファイル
<?php
header("Access-Control-Allow-Origin: http://client-site.com");
header("Access-Control-Allow-Credentials: true");
//CONFIG
include_once 'settings.php';
$prices = $settings['price'];
session_start();
//VARIABLES
extract($_REQUEST);
$visitor_log = 'visitor_log.json';
$visitor_log_contents = file_get_contents($visitor_log);
$visitor_log_contents = json_decode($visitor_log_contents, false);
//SAVE SERVER COOKIE
if(!isset($_SESSION['cookie_id']) || $_SESSION['cookie_id']!=$settings['cookie_id']){
$_SESSION['cookie_id'] = $settings['cookie_id'];
unset($_SESSION['visited']);
unset($_SESSION['converted']);
}
if(!isset($_SESSION['visited'])){
$_SESSION['visited'] = true;
$log_visitor = true;
}
if(!isset($_SESSION['converted']) && isset($conversion)){
$_SESSION['converted'] = true;
$log_conversion = true;
}
//LOG
$price_index = $variation;
$price = $prices[$price_index];
$l = $visitor_log_contents[$price_index];
if(!isset($l->visitors))$l->visitors = 0;
$l->visitors++; //total visits
if(isset($log_visitor))$l->unique_visitors++;
if(isset($log_conversion))$l->conversions++;
$visitor_log_contents[$price_index] = $l;
// STORE
$visitor_log_contents = json_encode($visitor_log_contents);
file_put_contents($visitor_log, $visitor_log_contents);
?>
注記:クッキーが固執しているように見えるのは、クッキーが固執しているように見えるのは、一旦価格が人に表示されたら、新しいページロードごとに同じ価格が表示されることを保証することです。しかし何らかの理由で、再訪した訪問者として記録されず、各ページの読み込みごとに新しいものとしてカウントされます。
header("Access-Control-Allow-Origin: http://client-site.com");
を追加していくつかのエラーを減らしましたが、問題を修正しませんでした。 track.php
にunset
の代わりにsession_unset
を試してみました。多くの他の試行錯誤はうまくいきませんでした。助けてもらえますか?
注:私の評判にだまされてはいけません - 私は完全にハックです - 私はブートストラップについていくつかの良い答えからすべてを得ました。
は 'とAccess-Control-Allow-Credentialsを追加する必要があるかもしれません:真'あなたのヘッダーにも同様に – xkcd149
は悲しいことに違いがないようです。 –
これはおそらくクッキーの問題です。ページ上でCookie依存の出力を見ることができるので「固執する」と言いますが、ブラウザー設定のためブラウズセッション後にCookieが_kept_ではないと思われます。スクリプトは別のドメインにあるため、そのCookieは「第三者」のCookieになり、通常は別の方法で処理されます。 (P3Pポリシーは、そのようなサードパーティのクッキーを受け入れるクライアントの量を増やす可能性があります) – CBroe