2012-04-27 23 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