私は今日、次のコードに取り組んでおり、ローカル マシンで非常にうまく動作します。しかし、iPhone/iPad でテストすると、まったく機能しません。
このコードは、ユーザーが Web サイトを離れたときに、ページの訪問時間をテキスト ファイルに保存することになっています。インターネットでダウンロードできる代替スクリプトがたくさんあることは知っていますが、これを自分で書きたいと思っています。どんな提案でも大歓迎です。
index.php:
<!DOCTYPE html>
<html>
<HEAD>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
function unloadPage(){
var dd = new Date();
var hh = (dd.getHours()<10?'0':'') + dd.getHours();
var mm = (dd.getMinutes()<10?'0':'') + dd.getMinutes();
var ss = (dd.getSeconds()<10?'0':'') + dd.getSeconds();
var htmlString="<?php echo date('Gis') ?>";
var timed = (hh + "" + mm + "" + ss) - htmlString;
jQuery.ajax({
url: 'time2.php?t=' + timed,
success: function(result) {
if(result.isOk == false)
alert(result.message);
},
async: false
});
}
window.onbeforeunload = unloadPage;
</script>
<meta charset="utf-8">
<title>thepaintjob.nl</title>
</head>
<BODY>
<?
$myFile = "temp.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, 5);
fclose($fh);
echo duration($theData);
?>
</body>
</html>
<?php
function duration($secs)
{
$vals = array('w' => (int) ($secs / 86400 / 7),
'd' => $secs / 86400 % 7,
'h' => $secs / 3600 % 24,
'm' => $secs / 60 % 60,
's' => $secs % 60);
$ret = array();
$added = false;
foreach ($vals as $k => $v) {
if ($v > 0 || $added) {
$added = true;
$ret[] = $v . $k;
}
}
return join(' ', $ret);
}
?>
time2.php:
<?php
$myFile = "temp.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, 5);
fclose($fh);
echo $total = $theData+$_GET['t'];
$File = "temp.txt";
$Handle = fopen($File, 'w');
$Data = $total;
fwrite($Handle, $Data);
fclose($Handle);
?>