2017-01-13 33 views
0

客户端浏览器中有一个HTML表单。用户点击提交按钮。然后,JavaScript将XHR发送到服务器。 PHP知道时间of the arrival$_SERVER['REQUEST_TIME']),但对提交时间一无所知。它如何精确计算?如何准确确定XHR离开客户的时间?

+3

在XHR请求中包含时间戳吗? – Pete

+0

好主意,谢谢。我正在寻找一种更精确的方法,即处理错误设置的客户端时钟。有没有办法在XHR中包含一个正确的时间戳,与客户端的时钟无关? –

+0

不,因为您不能相信客户提供准确的时间戳。 – Pete

回答

1

这样的建议,你会想时间戳添加到您的XHR请求作为一个额外的URL参数:

"?sent_at=" + (new Date()).getTime() 

要记住的一点是,JavaScript的日期是在毫秒,而在日期PHP在衡量 - 所以你可能需要的时间戳从浏览器转换,当你在PHP中使用它,像:

$date = intVal($_REQUEST['sent_at'])/1000; 

如果你真如果您希望获得毫秒精度,那么您可以按原样使用提交的值 - 取决于您想要使用的值。

希望这会有所帮助!

+0

谢谢,它非常接近我正在寻找的内容,但我更喜欢即使客户端的时钟设置不正确也能正常工作的解决方案。那可能吗? –

+0

不,这是不可能的:你将依赖于他们的电脑时钟。我不知道任何服务端变量会保存从浏览器发送请求的时间... – MacPrawn

+0

如果时间戳由服务器在初始页面加载时提供,然后存储在客户端上并发回到服务器终于?我只需要处理转移时间,不是吗? –