Şimdi yükleniyor

PHP ile Form Verilerini Alma ve İşleme Rehberi: Temel Bilgiler ve İleri Düzey Teknikler

PHP nedir

PHP ile form işleme, web geliştirmede en temel işlevlerden biridir. Kullanıcıların doldurduğu form verilerini güvenli bir şekilde işleyerek kaydedebilir, saklayabilir veya çeşitli işlemler yapabilirsiniz. PHP, kullanıcı girdilerini almak ve işlemek için güçlü işlevler sunar. Bu yazıda, form verilerinin nasıl alındığı, doğrulandığı ve güvenli bir şekilde işlendiğini detaylıca inceleyeceğiz.

PHP ile Form İşleme İçin Gerekli Hazırlıklar

Form işleme, genellikle iki sayfa ile gerçekleştirilir:

  1. HTML Form Sayfası: Kullanıcıdan veri almak için form oluşturulan HTML sayfasıdır.
  2. Form İşleme Sayfası: Formdan gelen verileri PHP ile işleyen sunucu tarafındaki dosyadır.

HTML Formu Oluşturma

Bir formu HTML’de oluşturmak için <form> etiketi kullanılır. Örneğin, kullanıcı adını ve e-posta adresini almak için bir form şöyle oluşturulabilir:

<!DOCTYPE html>
<html>
<head>
<title>Form İşleme</title>
</head>
<body>
<form action="form_isleme.php" method="POST">
<label for="isim">İsim:</label>
<input type="text" id="isim" name="isim"><br><br>

<label for="email">E-posta:</label>
<input type="email" id="email" name="email"><br><br>

<input type="submit" value="Gönder">
</form>
</body>
</html>

Burada action özelliği form verilerinin gönderileceği PHP dosyasını belirtir ve method="POST" ise verilerin POST yöntemiyle gönderileceğini ifade eder.

PHP ile Form Verilerini Almak

PHP’de formdan gelen verileri $_POST veya $_GET süper global dizileri ile alabilirsiniz.

  • $_POST: Form POST yöntemiyle gönderildiğinde kullanılır. Bu yöntem, verilerin daha güvenli bir şekilde aktarılmasını sağlar.
  • $_GET: Form GET yöntemiyle gönderildiğinde kullanılır. Veriler URL üzerinde taşındığı için hassas verilerde kullanılmamalıdır.

Örnek olarak, kullanıcıdan gelen “isim” ve “email” verilerini almak için form_isleme.php dosyasını oluşturabiliriz:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$isim = $_POST['isim'];
$email = $_POST['email'];

echo "İsim: " . $isim . "<br>";
echo "E-posta: " . $email;
}
?>

Bu kod, form verilerini alır ve ekrana yazdırır. $_SERVER["REQUEST_METHOD"] ile formun POST yöntemiyle gönderildiğini doğrulayarak işlemi güvenli hale getirebiliriz.

PHP ile Form Verilerini Doğrulama ve Güvenlik Kontrolleri

PHP ile form işleme sırasında verilerin doğruluğunu kontrol etmek çok önemlidir. Kullanıcı girdilerini güvenli bir şekilde işlemek için çeşitli doğrulama ve filtreleme yöntemleri kullanılabilir.

1. empty() ile Boş Alan Kontrolü

Gelen verilerin boş olup olmadığını kontrol etmek için empty() fonksiyonu kullanılabilir.

if (empty($isim) || empty($email)) {
echo "İsim ve e-posta alanları zorunludur.";
} else {
echo "Form başarıyla gönderildi.";
}

2. filter_var() ile E-posta Doğrulama

E-posta adresini kontrol etmek için filter_var() fonksiyonu kullanılabilir.

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Geçerli bir e-posta adresi girin.";
} else {
echo "E-posta doğrulandı.";
}

3. htmlspecialchars() ile XSS Saldırılarına Karşı Koruma

Kullanıcıdan gelen verileri doğrudan kullanmadan önce htmlspecialchars() ile işlemden geçirerek XSS (Cross-Site Scripting) saldırılarına karşı koruma sağlayabilirsiniz.

$isim = htmlspecialchars($isim);
$email = htmlspecialchars($email);

Bu yöntem, HTML etiketlerini etkisiz hale getirir, böylece kullanıcı zararlı kodları çalıştıramaz.

PHP ile Form Verilerini Kaydetme

Form verilerini veritabanına veya dosyaya kaydederek kullanıcının bilgilerini saklayabilirsiniz. Veritabanına veri eklemek için genellikle MySQL veya diğer SQL veritabanları kullanılır. Veritabanı bağlantısı ve veri ekleme işlemi şöyle yapılabilir:

<?php
$servername = "localhost";
$username = "kullanici";
$password = "sifre";
$dbname = "veritabani_adi";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$isim = $conn->real_escape_string($_POST['isim']);
$email = $conn->real_escape_string($_POST['email']);

$sql = "INSERT INTO kullanicilar (isim, email) VALUES ('$isim', '$email')";

if ($conn->query($sql) === TRUE) {
echo "Veri başarıyla eklendi.";
} else {
echo "Hata: " . $sql . "<br>" . $conn->error;
}
}

$conn->close();
?>

Bu kod, formdan gelen verileri alır, SQL enjeksiyon saldırılarına karşı korunmak için real_escape_string kullanarak veritabanına kaydeder.

PHP Form İşlemede Yapılan Sık Hatalar ve Çözümler

Form işlemlerinde yaygın olarak yapılan bazı hatalar:

  • Güvenlik Önlemlerinin Eksikliği: Kullanıcıdan gelen verilerin doğrulanması ve filtrelenmesi yapılmadan işlenmesi.
  • Veri Boşluk Kontrolü: Boş verilerin işleme alınması, form doğrulamalarını etkileyebilir.
  • SQL Enjeksiyonlarına Karşı Korunma: Veritabanına eklenen verilerde real_escape_string() veya prepare ve bind_param gibi PDO ve MySQLi yöntemlerinin kullanılmaması.

PHP ile form işlemlerini etkili ve güvenli bir şekilde yöneterek kullanıcı verilerini doğru şekilde işleyebilir, kayıt yapabilir ve çeşitli işlemler gerçekleştirebilirsiniz. Bu rehberdeki adımları takip ederek form işleme konusunda PHP’de uzmanlaşabilirsiniz.

Share this content:

Yorum gönder