Yıl PHP form doğrulama

5 Cevap php

Ben bir MySQL veritabanı gönderilen form veri yıllardan önce form girişi doğrulamak için PHP kullanıyorum.

Ne sadece bir yıl için bir form girişi doğrulamak için en iyi yolu olurdu? Ben sadece bir yıl şeklinde, kullanıcılar giriş tarih gereken bir form girişi var. Açıkçası ben girişin sayısal vardır ve sadece 4 karakter, ama ne girilen sayı bir tarih için mantıklı bir numara olduğundan emin olmak için en iyi yol olacağını kontrol edebilirsiniz?

5 Cevap

Bu basit bir kontrol için yeterli olacağını;

    $input = (int)$input;
    if($input>1000 && $input<2100)
    {
      //valid
    }

"Duyarlı" uygulamanın iş kuralları ve / veya depolama ortamı ile tanımlanmalıdır şeydir.

TIMESTAMP geçerli bir menzile sahip olurken MySQL, DATETIME sütun türü ''9999-12-31 23:59:59' '1000-01-01 00:00:00 geçerli bir yelpazesine sahiptir '1970-01- UTC 01 00:00:01 ''2038-01-19 03:14:07 UTC'.

Onların doğum yıl boyunca kullanıcıyı soruyorsun, o zaman 1900 çevresindeki tüm yolu geri dönmek gerekiyor. Ancak, bunları sadece 2009 + geçerlidir sonra, gelecekteki bir randevu ayarlamak yaşıyorsanız.

kullanmak strtotime.

Aksi takdirde YANLIŞ başarı bir zaman damgası döndürür. PHP 5.1.0 Önceki, bu fonksiyon dönecekti -1 başarısızlık üzerinde.

bunu yapabilirsiniz

<?php
$year = '-1222';

$valid = true;

if (strtotime($year) === false) {
  $valid = false;
}
// more of your code
?>

Ben tarih uygulamanızda anlamda olup olmadığını kontrol ederim. Örneğin, kullanıcıların doğum yıl, muhtemelen 1900'den önce herhangi bir tarih imkansız olurdu ve cari yıla göre herhangi bir büyük bu bağlamda saçmalık var

Sadece bir doğrulama kütüphanesi kullanabilirsiniz:

http://validatious.org/learn/examples

Ve min-val kullanın ve max-val seçeneklerini sınırlamak için. Ya da, daha kolay, sadece onlara geçerli yıl ile açılan kutu verin (html <select> tag)

Sadece geçerli yıl geçerli sizin kavramına bağlı olduğunu unutmayın. Biz (date(Y) - 110), kullanıcıların yaş bahsediyoruz eğer bu yıl geçerli olabilir ama diğer bazı şeyler için geçerli olmayabilir belki 110 yıl önce.