我目前有这个代码和两个问题:
我使用 Javascript 获取用户时区并通过 ajax 将其发布到 timezone.php,该 ajax 使用用户时间设置 cookie。如果未设置 cookie,例如在第一次访问时,则必须刷新页面才能显示 cookie 值。我目前正在使用 javascript 执行此操作,但必须有另一种方式。此外,由于如果没有 cookie,页面会刷新,禁用 cookie 的用户将获得刷新循环。
关于如何解决这些问题的任何建议?
谢谢你,马库斯
索引.php:
<!DOCTYPE html>
<html>
<head>
<style>
.night {
background: #000;
color: #fff;
}
</style>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<?php
if(isset($_COOKIE["time"])) {
$time = $_COOKIE["time"];
if($time < 5.5 || $time > 19) {
$night = true;
}
} else {
echo("
<script>
var timezone = new Date().getTimezoneOffset()/60;
$(document).ready(function() {
$.post('timezone.php',{timezone: timezone}, function(data){location.reload(true)});
});
</script>
");
}
?>
</head>
<body class="<?php echo $night ? "night" : "day"; ?>">
<?php if($night) {
echo "It's nighttime! ($time)";
} else {
echo "It's daytime! ($time)";
} ?>
</body>
</html>
时区.php:
<?php
$timezone = $_POST["timezone"];
if(isset($timezone)) {
date_default_timezone_set('Etc/GMT'.($timezone <= 0 ? '' : '+').$timezone);
$time = date("G") + (date("i")/60);
setcookie("time", $time);
}
?>