サイトでの滞在時間を追跡するための 3 つの変数があります
$_SESSION['checkin']; //logged when user first enters the site
$_SESSION['loggedAt']; //logged when the user leaves the site
$_SESSION['timespent']; //time spent in minutes
私がやろうとしているのは、ユーザーがページを離れるたびに、これらの値がデータベースにプッシュされることです。私が行ったことは、onbeforeunload を使用することです。
以下は私がそれを使用している方法です:
すべてのページで:
<script type="text/javascript" src="js/storeSession.js"></script>
storeSession.js:
window.onbeforeunload = confirmExit();
function confirmExit()
{
var xhr = new XMLHttpRequest();
xhr.open('post','../php/storeSession.php',true);
xhr.send();
return "Are you sure you want to leave?";
}
そして storeSession.php:
$_SESSION['loggedAt'] = time();
$temptime = (double)$_SESSION['timespent']/60;
$_SESSION['timespent'] = $_SESSION['loggedAt'] - $_SESSION['checkin'];
mysql_select_db($db, $conn) or die(mysql_error());
$data = mysql_query("INSERT INTO user (user_id, timespent) VALUES ($tempuser, $temptime) ON DUPLICATE KEY UPDATE timespent = timespent + $temptime")
or die(mysql_error());
$_SESSION['timespent'] = null;
$_SESSION['loggedAt'] = null;
$_SESSION['checkin'] = null;
mysql_close($con);
問題を見つけることができず、すべてが正常に機能しているようです (エラーなどはありません)。誰にもアイデアはありますか?