- Katılım
- 2 Mar 2015
- Konular
- 59,185
- Mesajlar
- 88,376
- Online süresi
- 4ay 14g
- Reaksiyon Skoru
- 14,227
- Altın Konu
- 2,398
- Başarım Puanı
- 1,051
- TM Yaşı
- 11 Yıl 1 Ay 21 Gün
- MmoLira
- 694,336
- DevLira
- 234
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
"Form Doğrulama" terimi, kullanıcı tarafından çeşitli form öğelerine girilen verilerin daha fazla işleme için kabul edilebilir olup olmadığını belirleme sürecini ifade eder. Verilerin daha sonraki işlenmesinden önce doğrulanması olası istisnaları ve çalışma zamanı hatalarını önler.
Doğrulama hem istemci tarafında hem de sunucu tarafında yapılabilir. İstemci formu gönderdiğinde, form verileri sunucuda çalışan PHP betiği tarafından yakalanır. PHP'de bulunan çeşitli işlevler kullanılarak, sunucu tarafı form doğrulaması yapılabilir.
Doğrulama, veriler sunucuya gönderilmeden önce gerçekleşir. Aynı şey URL, sayı vb. gibi diğer girdi türleri için de geçerlidir.
Sayı türü metin alanı sağda yukarı/aşağı sayaç oklarını gösterir. Yalnızca sayı kabul edilir ve artırılabilir veya azaltılabilir.
E-posta alanındaki veriler geçersiz ise aşağıdaki gibi hata mesajı alırsınız.
Benzer şekilde, URL için herhangi bir yanlış format da aşağıdaki şekilde gösterildiği gibi hatayı gösterir:
Yukarıdaki örnekte kullanılan HTML formunda, tüm özel girdi türlerini kaldıralım ve tüm metin alanlarını metin türünde kullanalım. Form, sunucudaki hello.php'ye POST yöntemiyle gönderilir.
PHP'de ayrıca bir alanın bir dize içerip içermediğini kontrol etmek için is_string() fonksiyonu vardır. Diğer iki fonksiyon, trim() ve htmlspecialchars() da form doğrulaması için yararlıdır.
Doğrulama hem istemci tarafında hem de sunucu tarafında yapılabilir. İstemci formu gönderdiğinde, form verileri sunucuda çalışan PHP betiği tarafından yakalanır. PHP'de bulunan çeşitli işlevler kullanılarak, sunucu tarafı form doğrulaması yapılabilir.
İstemci Tarafında Doğrulama
HTML5 özelliklerine göre yeni giriş kontrolleri yerleşik doğrulamaya sahiptir. Örneğin, 'email' türündeki bir giriş öğesi, bir metin alanı olmasına rağmen, e-posta adresi protokolüne göre bir dizeyi kabul edecek şekilde özelleştirilir.Doğrulama, veriler sunucuya gönderilmeden önce gerçekleşir. Aynı şey URL, sayı vb. gibi diğer girdi türleri için de geçerlidir.
Örnek
Aşağıda sayı türü, e-posta türü ve URL türünde girdi öğelerine sahip bir HTML formu verilmiştir. Gerekli formata uygun olmayan veriler girerseniz, formu göndermeye çalıştığınızda uygun bir hata mesajı görüntülenir.<h1>Input Validation</h1>
<form>
<p><Label for "name">Enter your name</label>
<input type = "text" id="name" name="name"></p>
<p><label for="age">Enter age</label>
<input type = "text" id = "age" name="age"></p>
<p><label for="email">Enter your email:</label>
<input type="text" id="email" name="email"></p>
<p><label for="URL">Enter your website<label>
<input type = "text" id="URL" name="url"></p>
<input type="submit">
</form>
Sayı türü metin alanı sağda yukarı/aşağı sayaç oklarını gösterir. Yalnızca sayı kabul edilir ve artırılabilir veya azaltılabilir.
E-posta alanındaki veriler geçersiz ise aşağıdaki gibi hata mesajı alırsınız.
Benzer şekilde, URL için herhangi bir yanlış format da aşağıdaki şekilde gösterildiği gibi hatayı gösterir:
Doğrulama Fonksiyonları
Sunucu tarafında PHP ile doğrulama, ya form verileri istemci tarafındaki doğrulamayı geçtiğinde ya da istemci tarafında hiç doğrulama olmadığında devreye girer.Yukarıdaki örnekte kullanılan HTML formunda, tüm özel girdi türlerini kaldıralım ve tüm metin alanlarını metin türünde kullanalım. Form, sunucudaki hello.php'ye POST yöntemiyle gönderilir.
<form action="hello.php" method="POST">
<p><Label for "name">Enter your name</label>
<input type = "text" id="name" name="name"></p>
<p><label for="age">Enter age</label>
<input type = "text" id = "age" name="age"></p>
<p><label for="email">Enter your email:</label>
<input type="text" id="email" name="email"></p>
<p><label for="URL">Enter your website<label>
<input type = "text" id="URL" name="url"></p>
<input type="submit">
</form>
Boş Form
Kullanıcı (istemeden de olsa) submit butonuna tıklarsa, PHP'den formu tekrar görüntülemesini isteyebilirsiniz. $_POST dizisinin isset() fonksiyonu ile başlatılıp başlatılmadığını kontrol etmeniz gerekir. Başlatılmamışsa, header() fonksiyonu kontrolü tekrar forma yönlendirir.
PHP:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST)) {
header("Location: hello.html", true, 301);
exit();
}
// form processing if the form is not empty
}
?>
Örnek
Ayrıca formu gönderirken herhangi bir alanın boş olup olmadığını da kontrol edebilirsiniz.
PHP:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
foreach($_POST as $k=>$v) {
if (empty($v)==true) {
echo "One or more fields are empty \n";
echo "<a href = 'hello.html'>Click here to go back </a>";
exit;
}
else
echo "$k => $v \n";
}
}
?>
Yaş alanı sayısal değil
HTML formunda name için giriş alanı metin türündedir, dolayısıyla herhangi bir karakteri kabul edebilir. Ancak, bunun sayısal olmasını istiyoruz. Bu, is_numeric() fonksiyonu ile sağlanabilir.
PHP:
<?php
if (is_numeric($_POST["age"])==false) {
echo "Age cannot be non-numeric \n";
echo "<a href = 'hello.html'>Click here to go back</a>";
}
?>
PHP'de ayrıca bir alanın bir dize içerip içermediğini kontrol etmek için is_string() fonksiyonu vardır. Diğer iki fonksiyon, trim() ve htmlspecialchars() da form doğrulaması için yararlıdır.
- trim() − Bir dizenin başından ve sonundan boşlukları kaldırır.
- htmlspecialchars() − Siteler arası betik çalıştırma (XSS) saldırılarını önlemek için özel karakterleri HTML varlıklarına dönüştürür.

