在实际应用中,使用数字证书如果电脑时间出错不在有效期,将不能够进行登录。为解决这个问题,需要在网站上设置本地时间和服务器时间比较检测,用于提醒,避免无法登录又察觉不了原因的情况。
以PHP代码获取服务器时间,JS代码获取本地电脑时间,开始将JS的时间取到PHP里进行比较,参数传递问题在网上搜索耗费了差不多一天。使用form需要触发,不能刷新即用;使用ajax获取总是空白,调试控制台即能显示数据;使用<script>document.write()<script>能显示数据,但传递给PHP中的变量不能用于比较;日期获取使用页面链接url加?value=1类似传递又不现实;使用setCookie进行传递,日期修正后刷新迟迟得不到更正,调整有效期效果也不好。这5种方法全部试了一遍,始终达不到效果。
还是逆向思维又帮了一次,既然JS传递到PHP麻烦,何不用PHP传递到JS内进行处理。所有判断、页面提醒、链接跳转等全部使用JS代码实现。后端依然用PHP,不影响网站解析服务。
完整代码如下:
<!DOCTYPE html>
<body>
<?php
date_default_timezone_set('PRC');
$fwqtime=date("Y-m-d H:i");
?>
<script>
var now = new Date();
var year = now.getFullYear(); //年
var month = now.getMonth() + 1; //月
var day = now.getDate(); //日
var hh = now.getHours(); //时
var mm = now.getMinutes(); //分
var clock = year + "-";
if (month < 10)
clock += '0';
clock += month + '-';
if (day < 10)
clock += '0';
clock += day + ' ';
if (hh < 10)
clock += '0';
clock += hh + ':';
if (mm < 10)
clock += '0';
clock += mm;
//document.write(clock);
if (clock=="<?php echo $fwqtime ?>") {
document.write('本地时间与服务器时间相同!');
}
else
{
document.write('本地时间与服务器时间不相同,请更新!');
}
</script>
</body>
</html>
正文完