2012-04-27 3 views
0

Я работаю над приложением php/mysql, которое сильно полагается на правильную дату. Чтобы гарантировать, что дата, вставленная в базу данных, всегда правильная, и поскольку функции даты php/mysql зависят от системных часов, я решаю попросить пользователей ввести текущую дату в поле формы даты, а затем сравнить ее с текущей датой в используя CURDATE(), прежде чем вставлять какие-либо данные в базу данных.Сравнение введенной пользователем строки с curdate в mysql

Я не знаю, правильно ли это сделать или это лучшее решение для обеспечения целостности даты?

+0

Почему вы подозреваете, что системные часы могут быть неправильными? Возможно, вы хотите изучить [ntp] (http://en.wikipedia.org/wiki/Network_Time_Protocol). – eggyal

+0

Аккумулятор CMOS может не работать, и пользователь может не заметить – sality

+0

CMOS-аккумулятор полезен только для поддержания системных часов при выключенном компьютере; как только он активирует резервные копии, такие инструменты, как ntp (см. мою ссылку выше), могут помочь восстановить часы в правильное время. – eggyal

ответ

0

(Обновление до ответа)

Один обычно будет полагаться на системных часов, чтобы быть правильным; это то, что намного больше под своим контролем, чем пользовательский ввод, который может быть преднамеренно или случайно неверным.

Я бы рекомендовал использовать CURDATE() в качестве значения в вашем заявлении INSERT и предпринять такие меры, как запуск клиента Network Time Protocol для правильной работы системных часов. Большинство современных операционных систем не только включают в себя такое ПО по умолчанию, но они, как правило, настраиваются и работают из готового продукта.

Если ваша система является автономной и не может обновить свое время из сети, вы можете рассмотреть любую комбинацию: получение сигнала времени от другого источника (например, по радио, например, NPL signal); периодическая проверка системных часов (особенно при загрузке); мониторинг батареи CMOS и обеспечение своевременного ее замены; или использования перезаряжаемых батарей.

+0

Каков недостаток моего метода? – sality

+0

Я считаю, что это ответ в моем первом абзаце - пользовательский ввод «может быть преднамеренно или случайно неверным»; также у вас должно быть некоторое чувство, что это плохой опыт работы с пользователями и/или ненадежный метод, чтобы задать вопрос в первую очередь? – eggyal

+0

Да. Но я не понимаю, как использовать NTP в моем приложении, даже после проверки предоставленной ссылки. Я думал, что это более удобный способ программирования. – sality

Смежные вопросы