javascript函数将当前时间(从历元)四舍五入到最接近的分钟
我一直在拼命想得到一个与这个php代码片段相当的JavaScript:javascript函数将当前时间(从历元)四舍五入到最接近的分钟,javascript,php,datetime,Javascript,Php,Datetime,我一直在拼命想得到一个与这个php代码片段相当的JavaScript: <?php $id = 'uniqueID' $now = round(time()/60); $lock = md5($now . $id); ?> 使用来自的md5脚本 我只需要锁和钥匙来匹配。对我来说似乎很简单。我做错了什么?具体来说(我的评论有点滑稽): PHP是一种服务器端语言。当您的浏览器通过internet(甚至是本地计算机上的侦听端口)发出页面请求时,服务器(或本地计算机)上运行的apache
<?php
$id = 'uniqueID'
$now = round(time()/60);
$lock = md5($now . $id);
?>
使用来自的md5脚本
我只需要锁和钥匙来匹配。对我来说似乎很简单。我做错了什么?具体来说(我的评论有点滑稽): PHP是一种服务器端语言。当您的浏览器通过internet(甚至是本地计算机上的侦听端口)发出页面请求时,服务器(或本地计算机)上运行的apache实例在页面上执行PHP,然后将其吐回浏览器 然后浏览器执行页面上的任何JavaScript,我们称之为客户端 因为您使用的是
Math.round
,如果从服务器执行PHP(服务器端)到浏览器开始执行相关Javascript(客户端)之间的时间间隔超过30秒,则以分钟为单位的时间将有所不同。使用Math.floor
会给你59秒的回旋空间,但这仍然很危险,尤其是在手机上
即使假设页面在加载后立即执行JavaScript并快速加载,30秒的延迟也不是完全不可能的,在移动设备上也不是59秒。如我前面所说,如果时间不匹配,它将不会创建相同的散列。在这种情况下,我要做的是找到一种方法,将时间从php传递到客户端,以便它们可以使用相同的精确时间 PHP方面:
<?php
$id = 'uniqueID';
$now = round(time()/60);
$lock = md5($now . $id);
print $lock;
setcookie("time",$now);
?>
客户端:
<script type="text/javascript">
var timestamp = getCookie("time");
var key = md5(timestamp + 'uniqueID');
console.log(key);
</script>
var timestamp=getCookie(“时间”);
var key=md5(时间戳+uniqueID);
控制台日志(键);
- 请注意,getCookie是一个快捷方式函数
- 下面的示例以简单的形式展示了这个想法。我不会使用时间作为cookie的名称,也不会授予对vars(wrap-in函数)的访问权。丑陋的脚本在这样的情况下有很大的作用
<script type="text/javascript">
var timestamp = getCookie("time");
var key = md5(timestamp + 'uniqueID');
console.log(key);
</script>