2012-04-27 26 views
0

我正在研究强烈依赖正确日期的php/mysql应用程序。为了确保插入到数据库中的日期总是正确的,并且由于php/mysql的日期函数依赖于系统时钟,我决定让用户在日期格式字段中输入当前日期,然后将它与当前日期数据库在将任何数据插入数据库之前使用CURDATE()。比较用户inputed字符串和mysql中的curdate

我不知道这是正确的方式去解决它还是他们更好的解决方案,以确保日期完整性?

+0

为什么你怀疑你的系统时钟可能是错的?也许你想看看使用[ntp](http://en.wikipedia.org/wiki/Network_Time_Protocol)。 – eggyal 2012-04-27 09:09:07

+0

cmos电池可能容易失效并且用户可能不会注意 – sality 2012-04-27 09:12:08

+0

CMOS电池仅用于在计算机断电时维护系统时钟;一旦它恢复供电,像ntp这样的工具(参见上面的链接)可以帮助将时钟恢复到正确的时间。 – eggyal 2012-04-27 09:14:51

回答

0

升级到一个答案)通常

一会依靠系统时钟是正确的;它比用户输入更受用户自己控制,这可能是故意的或意外的错误。

我会建议使用CURDATE()在你INSERT声明采取措施,比如运行Network Time Protocol客户,让您的系统时钟正确的值,和。大多数现代操作系统不仅在默认情况下包含这样的软件,而且它们通常被配置并且开箱即用。

如果您的系统是独立的,无法从网络更新它的时间,您可能会考虑以下任何组合:从其他来源接收时间信号(例如通过无线电,如NPL signal);定期验证系统时钟(特别是在启动时);监控CMOS电池并确保及时更换;或使用可充电电池。

+0

我的方法有什么缺点? – sality 2012-04-27 09:29:48

+0

我相信这是在我的第一段中回答的 - 用户输入“可能是故意或意外不正确”;你也必须已经有一些感觉,因为它是一个糟糕的用户体验和/或不可靠的方法,以便首先提出这个问题? – eggyal 2012-04-27 09:31:05

+0

是的。但我不明白如何在我的应用程序中使用NTP,即使在检查提供的链接之后。我认为他们是一个更好的可编程方式。 – sality 2012-04-27 09:38:27