All Is Ready | Teknoloji, Yazılım ve Daha Fazlası

PHP Formları ile Veri Toplama ve İşleme – Örnekler ve Açıklamalar

İçindekiler

Web uygulamalarının birçok farklı özelliği var, ancak formlar belki de en önemli olanlardan biridir. Bir form, kullanıcılardan bilgi toplamanıza ve bu bilgileri işlemenize olanak tanır. PHP’de, formlar işleme işlevlerine sahip güçlü bir dil aracıdır. Bu makalede, PHP formları hakkında detaylı bir açıklama ve örnekler sunacağız.

HTML Formları

Bir HTML formu, kullanıcılardan bilgi toplamanıza olanak tanır. Kullanıcılar formu doldurur ve ardından form verileri sunucuya gönderilir. Bu veriler, PHP kodu tarafından işlenebilir ve veritabanına kaydedilebilir veya başka bir işlem için kullanılabilir.

HTML formu, <form> etiketi ile başlar ve </form> etiketi ile sona erer. Form, genellikle kullanıcıların veri girişlerini tanımlayan bir dizi <input> etiketi içerir.

HTML formları, web sayfalarında kullanıcı verilerini toplamak için kullanılan araçlardan biridir. Bir form, kullanıcının girdiği verileri sunucuya göndermek için kullanılır. HTML formu oluşturmak için, form etiketi kullanılır ve aşağıdaki gibi özelliklere sahip olabilir:

  • action: Form verilerinin gönderileceği URL’yi belirtir.
  • method: Verilerin nasıl gönderileceğini belirtir. Varsayılan olarak, GET yöntemi kullanılır. Ancak, güvenlik nedenleriyle, kullanıcı tarafından gönderilen verilerin gönderilmesi için POST yöntemi kullanılması önerilir.
  • name: Forma bir ad verir.
  • enctype: Form verilerinin gönderilme şeklini belirtir. Örneğin, dosya yükleme gibi işlemler için multipart/form-data kullanılır.

Form elemanları, kullanıcının veri girdiği alanları veya düğmeleri içerir. Örneğin, bir metin kutusu, bir seçenek kutusu, bir onay kutusu veya bir düğme.

Örneğin, bir formda kullanıcılardan ad ve soyadlarını girmelerini istiyorsak, HTML kodu şu şekilde olabilir:

<form action="process_form.php" method="post">
  <label for="name">Adınız:</label>
  <input type="text" id="name" name="name">

  <label for="surname">Soyadınız:</label>
  <input type="text" id="surname" name="surname">

  <button type="submit">Gönder</button>
</form>


Bu form, kullanıcılardan adlarını ve soyadlarını girmelerini ister ve “Gönder” düğmesine basıldığında process_form.php dosyasına gönderilir. name özelliği, sunucudaki PHP kodu tarafından kullanılan verilerin ismini belirler.

 

PHP Form İşleme

PHP, web formu verilerini işlemek için kullanışlı bir dizi yöntem sunar. Form verileri, $_GET veya $_POST gibi önceden tanımlanmış PHP değişkenlerinde saklanır. Bu değişkenler, HTML formunun gönderildiği URL’ye göre veri gönderme yöntemine göre değişir.

GET Yöntemi

Form verileri GET yöntemi kullanılarak gönderildiğinde, formdaki alanlar URL’ye eklenir. Bu nedenle, URL, form verilerini içerir ve açık bir şekilde görülebilir.

<form action="example.php" method="get">
    <label for="name">Adınız:</label>
    <input type="text" id="name" name="name">
    <input type="submit" value="Gönder">
</form>


Yukarıdaki örnekte, kullanıcının girdiği veriler GET yöntemi kullanılarak gönderilir ve example.php sayfasına gönderilir. Veriler, $_GET değişkeni aracılığıyla alınır ve ekrana yazdırılır.

 

POST Metodu

POST yöntemi, verileri formun “action” özelliğinde belirtilen URL’ye gönderir ve $_POST değişkeni aracılığıyla alınır. Bu yöntem, daha güvenli ve gizli verilerin gönderilmesine izin verir.

Aşağıda, bir formun POST yöntemiyle gönderilmesiyle ilgili basit bir örnek bulunmaktadır:

<form method="post" action="example.php">
  Adınız: <input type="text" name="ad">
  Soyadınız: <input type="text" name="soyad">
  <input type="submit" value="Gönder">
</form>


Form Doğrulama

Formların doğrulanması, kullanıcıların yanlış veri girmelerini önleyerek uygulamanın güvenliğini artırır. Bu, özellikle kullanıcıların girdiği verilerin veritabanına kaydedileceği durumlarda önemlidir.

Aşağıda, bir formun JavaScript kullanarak doğrulanması için basit bir örnek verilmiştir:

<form method="post" action="example.php" onsubmit="return validateForm()">
  Adınız: <input type="text" name="ad">
  Soyadınız: <input type="text" name="soyad">
  <input type="submit" value="Gönder">
</form>

<script>
function validateForm() {
  var ad = document.forms["myForm"]["ad"].value;
  var soyad = document.forms["myForm"]["soyad"].value;
  if (ad == "" || soyad == "") {
    alert("Lütfen tüm alanları doldurun");
    return false;
  }
}
</script>

 

Yukarıdaki örnek, kullanıcının “Adınız” ve “Soyadınız” alanlarını doldurduğundan emin olur. Eğer herhangi bir alan boş bırakılırsa, form gönderilmeden önce kullanıcıya bir uyarı mesajı gösterilir.

 

Form Güvenliği

Formların güvenliği, özellikle kullanıcıların girdiği verilerin veritabanına kaydedileceği durumlarda önemlidir. Aşağıdaki yöntemler, form güvenliğini artırmaya yardımcı olabilir:

  • SQL Enjeksiyonu: Kullanıcıların girdiği veriler, veritabanına kaydedilmeden önce doğrulanmalıdır. SQL enjeksiyonu, kötü amaçlı girilen verilerin, SQL sorgularını manipüle etmek ve istenmeyen işlemler yapmak için kullanılmasına neden olabilir. Bu, güvenli olmayan web uygulamaları için ciddi bir güvenlik riski oluşturur.
  • Parametrelerin kullanımı: SQL sorguları parametreler aracılığıyla oluşturulmalıdır. Kullanıcıların girdiği veriler doğrudan sorgulara eklenmemelidir. Bunun yerine, veritabanı işlevleri veya ORM gibi araçlar kullanılmalıdır.
  • Veri doğrulama: Kullanıcının girdiği veriler, doğru formatta olduğundan emin olmak için doğrulanmalıdır. Bu, sayısal değerlerin sayısal olduğunu, metin girdilerinin doğru uzunlukta olduğunu ve özel karakterlerin doğru şekilde işlendiğini doğrulamayı içerir.
  • Sorguların doğrulanması: Sorguların doğru şekilde oluşturulduğundan emin olmak için verilerin kullanımı öncesinde sorguların doğrulanması gereklidir. Bu, doğru SQL sözdizimi ve doğru parametre kullanımını içerir.

 

Örneğin, aşağıdaki PHP kodu, SQL enjeksiyonuna karşı güvence sağlamak için kullanıcı girdilerinin doğrulanması ve parametre kullanımını göstermektedir:

// Kullanıcıdan gelen girdiler
$username = $_POST['username'];
$password = $_POST['password'];

// Veritabanına bağlanma işlemi
$pdo = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');

// SQL sorgusunun hazırlanması
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password');

// Parametrelerin bağlanması
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);

// Sorgunun çalıştırılması
$stmt->execute();

// Sonuçların alınması
$results = $stmt->fetchAll();


Bu kod örneği, kullanıcı girdilerini doğrulama ve parametre kullanımı yoluyla SQL enjeksiyonundan korumak için birkaç önlem alır.