PHP Formu Doğrulama - Zorunlu Alanlar

Bu bölümde, zorunlu giriş alanlarını nasıl oluşturacağınızı ve gerektiğinde kullanacağınız hata mesajlarını nasıl oluşturacağınızı gösteriyoruz.

PHP - Giriş Alanları

Önceki doğrulama kurallarından, "İsim", "E-posta" ve "Cinsiyet" alanlarının gerekli olduğunu görebiliriz. Bu alanlar boş olamaz ve HTML formunda doldurulmalıdır.

Alan Doğrulama Kuralları
İsim Gerekli. Harfler ve boşluk içermelidir.
E-posta Gerekli. Geçerli bir e-posta adresi içermelidir (işaret ve nokta içermelidir).
Web Sitesi Seçmeli. Doldurulursa, geçerli bir URL içermelidir.
Yorum Seçmeli. Çok satırlı giriş alanı (metin kutusu).
Cinsiyet Gerekli. Bir seçim yapmalısınız.

Önceki bölümden, tüm giriş alanlarının seçmeli olduğunu belirtelim.

Aşağıdaki kodda bazı yeni değişkenler ekledik: $nameErr, $emailErr, $genderErr ve $websiteErr. Bu hata değişkenleri, istenen alanların hata mesajlarını saklar. Ayrıca, her $_POST değişkenine bir if else ifadesi ekledik. Bu ifadesi, $_POST değişkeninin PHP empty() fonksiyonu ile boş olup olmadığını kontrol eder. Boşsa, hata mesajları farklı hata değişkenlerine saklanır. Boş değilse, kullanıcı girişlerini test_input() fonksiyonu ile gönderir:

<?php}}
// Değişkenleri tanımla ve boş değer olarak ayarla
$adHata = $epostaHata = $cinsiyetHata = $webSiteHata = "";
$ad = $eposta = $cinsiyet = $yorum = $webSite = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["ad"])) {
    $adHata = "Ad gereklidir";
  } else {
    $ad = test_input($_POST["ad"]);
  }
  if (empty($_POST["eposta"])) {
    $epostaHata = "E-posta gereklidir";
  } else {
    $eposta = test_input($_POST["eposta"]);
  }
  if (empty($_POST["webSite"])) {
    $webSite = "";
  } else {
    $webSite = test_input($_POST["webSite"]);
  }
  if (empty($_POST["yorum"])) {
    $yorum = "";
  } else {
    $yorum = test_input($_POST["yorum"]);
  }
  if (empty($_POST["cinsiyet"])) {
    $cinsiyetHata = "Cinsiyet gereklidir";
  } else {
    $cinsiyet = test_input($_POST["cinsiyet"]);
  }
}
?>

PHP - Hata mesajlarını göster

HTML formunda, her istenen alanın ardından biraz script ekleriz. Gerekirse, doğru hata mesajlarını oluşturabiliriz (eğer kullanıcı zorunlu alanı doldurmadan formu göndermeye çalışırsa):

Örnek

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Ad: <input type="text" name="ad">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-posta:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>Yorum: <textarea name="comment" rows="5" cols="40"></textarea></label>
<br><br>
Cinsiyet:
<input type="radio" name="gender" value="female">Kadın
<input type="radio" name="gender" value="male">Erkek
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Gönder"> 
</form>

Uygulama Örneği

Önümüzdeki adım, girdi verilerinin doğrulanmasıdır, yani 'Name alanı sadece harfler ve boşluklar içermeli mi?' ve 'E-posta alanı geçerli bir e-posta adresi dilbilgisi içermeli mi?' ve Website alanı doldurulursa 'Bu alan geçerli bir URL içeriyor mu?'