On occasion it's necessary to include a JavaScript tickler on a page that triggers some other operation. Many Analytics engines work that way, Advertising engines, our GeoVisitors tool.
Activate Tickler on each page using something like
<script type="text/javascript">
var jst = {
site:'edoceo.com',
hook:document.location.protocol + '//other-site.dom/hit'
};
document.write(unescape("%3Cscript src='" + jst.hook + "' type='text/javascript'%3E%3C/script%3E"));
</script>
Now when the hit page is called that JavaScript will have available to it all the information/Objets from this page. Maybe it looks like this, and loads another page via AJAX even.
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN'],true);
header('Access-Control-Allow-Methods: POST, GET, OPTIONS',true);
header('Access-Control-Max-Age: 1728000',true);
header('Vary: Accept-Encoding',true);
header('Content-Length: 0',true);
header('Content-Type: text/plain',true);
}
if (empty($_SERVER['HTTP_REFERER'])) {
die('// tickler');
}
$page = $_SERVER['HTTP_REFERER'];
$host = parse_url($page,PHP_URL_HOST);
// Do some SQL or something
die("//hit");
If you wanted /hit to then load another page, say /hit-data then use this little ditty.
var xhr;
if (window.XMLHttpRequest &&& (window.location.protocol !== "file:" || !window.ActiveXObject)) {
xhr = new window.XMLHttpRequest();
} else {
try {
xhr = new window.ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {}
}
if (xhr) {
// Collect Data into Object
var o = {
c:document.cookie,
l:document.location,
r:document.referrer
};
// Convert to Array of Strings
var p = new Array();
for (var k in o) {
p.push( k + '=' + o[k] );
}
xhr.open('POST','http://hit.example.com/ping.js',true);
xhr.send(p.join('&'));
}
Which gets a POST that looks like
$_POST = array(
'c' => '1235',
'l' => 'http://www.foo.com/page?out=gz',
'r' => 'http://www.google.com/search?....',
);