분할 테스트 앱을 디버깅하고 있습니다. 방문수, 순 방문자 수를 추적하고 변수를 표시하며 전환을 추적합니다. 테스트중인 페이지에 JavaScript 파일을로드하여 구현합니다.쿠키가있는 순 방문자를 추적 할 수 없습니다.
자바 스크립트 (및 지원 파일)가 테스트중인 페이지와 동일한 도메인에 있으면 완벽하게 작동하지만 다른 도메인에있을 때 한 가지 기능이 실패합니다. 방문자를 추적하고 변수를 표시하며 전환 수는 이지만 더 이상 번으로는 명의 방문자를 추적하지 않습니다.
추적은 쿠키를 통해 수행됩니다.
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);
?>
참고 : 쿠키가 고집스럽게 보이는 이유는 쿠키가 사람에게 가격이 표시되면 새로운 pageload가있을 때마다 동일한 가격으로만 볼 수 있기 때문입니다. 그러나 어떤 이유로 든 재 방문자로 기록되지 않고 각 페이지로드마다 새로운 것으로 계산됩니다.
header("Access-Control-Allow-Origin: http://client-site.com");
을 추가하여 일부 오류를 줄이려고했지만 문제를 해결하지 못했습니다. 또한 행운없이 track.php
에 unset
대신 session_unset
을 시도했습니다. 많은 시행 착오가 있었지만 효과가 없었습니다. 누군가 도울 수 있습니까?
참고 : 내 평판에 속지 마세요. 저는 총 해킹입니다. 부트 스트랩에 대한 몇 가지 좋은 답변을 모두 얻었습니다.
는'액세스 제어 - 허용 - 자격 증명을 추가해야 할 수도 있습니다 : 사실 '당신의 헤더에도 마찬가지로 – xkcd149
은 슬프게도 아무런 차이가없는 것 같습니다. –
이것은 쿠키 문제 일 가능성이 큽니다. 당신은 페이지에 쿠키 의존적 인 출력을 볼 수 있기 때문에 "sticking"이라고 말하지만 브라우저 설정으로 인해 브라우징 세션 후에 쿠키가 _kept_되지 않는다고 추측 할 수 있습니다. 귀하의 스크립트는 다른 도메인에 있으므로 쿠키는 "제 3 자"쿠키가되며 일반적으로 다르게 취급됩니다. (P3P 정책은 그러한 제 3 자 쿠키를 허용하는 클라이언트의 양을 늘릴 수 있습니다.) – CBroe