google analyticsをつくろう

まず、tableをつくります。

create table cookie.analytics(
	host varchar(255),
	host_name varchar(255),
	port varchar(255),
	request varchar(255),
	code varchar(255),
	browser varchar(255),
	version varchar(255),
	platform varchar(255),
	useragent varchar(255),
	referer varchar(255),
	domain varchar(255),
	screen_w varchar(255),
	screen_h varchar(255),
	ip varchar(255),
	access datetime
);

次に、ajaxで、アクセスがあったらデータをpostします。

<style>
.box{
    width:200px;
    height: 200px;
    background-color:#ddd;
}
</style>
<body>
    <div class="box"></div>
    <button id="ajax-button">送信</button>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
</body>
<script>
$(function(){
    $(document).ready(function(){
            var postData = {"HOST": location.host,
                "HOST_NAME":location.hostname,
                "PORT": location.port,
                "REQUEST":location.pathname,
                "CODE": navigator.appCodeName,
                "BROWSER":navigator.appName,
                "VERSION": navigator.appVersion,
                "PLATFORM":navigator.platform,
                "USERAGENT": navigator.userAgent,
                "REFERER": document.referrer,
                "DOMAIN": document.domain,
                "SCREENW":screen.width,
                "SCREENH": screen.height,
                "IP":"<?php echo $_SERVER&#91;'REMOTE_ADDR'&#93;; ?>"};
            $.post(
                "test1.php",
                 postData,
            );
        });
});
</script>

ajaxで送られてきたデータをdbに格納します。

$date = date("Y-m-d H:i:s");
$host = $_POST['HOST'];
$host_name = $_POST['HOST_NAME']; 
$port = $_POST['PORT']; 
$request = $_POST['REQUEST']; 
$code = $_POST['CODE']; 
$browser = $_POST['BROWSER']; 
$version = $_POST['VERSION']; 
$platform = $_POST['PLATFORM']; 
$useragent = $_POST['USERAGENT']; 
$referer = $_POST['REFERER']; 
$domain = $_POST['DOMAIN']; 
$screen_w = $_POST['SCREENW']; 
$screen_h = $_POST['SCREENH']; 
$ip = $_POST['IP']; 


$dsn = "mysql:dbname=cookie;host=localhost";
$user = "hoge";
$password = "hogehoge";	 
try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e){
    print('connection failed:'.$e->getMessage());
} 

$stmt = $dbh -> prepare("INSERT INTO analytics (host, host_name, port, request, code, browser, version, platform, useragent, referer, domain, screen_w, screen_h, ip, access) VALUES(:host, :host_name, :port, :request, :code, :browser, :version, :platform, :useragent, :referer, :domain, :screen_w, :screen_h, :ip, :access)");
$stmt->bindParam(':host', $host, PDO::PARAM_STR);
$stmt->bindParam(':host_name', $host_name, PDO::PARAM_STR);
$stmt->bindParam(':port', $port, PDO::PARAM_STR);
$stmt->bindParam(':request', $request, PDO::PARAM_STR);
$stmt->bindParam(':code', $code, PDO::PARAM_STR);
$stmt->bindParam(':browser', $browser, PDO::PARAM_STR);
$stmt->bindParam(':version', $version, PDO::PARAM_STR);
$stmt->bindParam(':platform', $platform, PDO::PARAM_STR);
$stmt->bindParam(':useragent', $useragent, PDO::PARAM_STR);
$stmt->bindParam(':referer', $referer, PDO::PARAM_STR);
$stmt->bindParam(':domain', $domain, PDO::PARAM_STR);
$stmt->bindParam(':screen_w', $screen_w, PDO::PARAM_STR);
$stmt->bindParam(':screen_h', $screen_h, PDO::PARAM_STR);
$stmt->bindParam(':ip', $ip, PDO::PARAM_STR);
$stmt->bindParam(':access', $date, PDO::PARAM_STR);
$stmt->execute();

ユーザーのアクセス開始のデータがdbに格納されました。

1.cookieの使い方が良くわからない。
2.サイトにscriptタグを埋め込んで、jsにidの配列を送るとした場合、js側はajaxの処理ができるのか?
3.ユーザーが訪問ページを離れた時に、ajax・jsでは、どのように書いたらいいのか?

なんだかんだ難しいな。。