PHP ile Form Verilerini Alma ve İşleme Rehberi: Temel Bilgiler ve İleri Düzey Teknikler
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:
- HTML Form Sayfası: Kullanıcıdan veri almak için form oluşturulan HTML sayfasıdır.
- 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
: FormPOST
yöntemiyle gönderildiğinde kullanılır. Bu yöntem, verilerin daha güvenli bir şekilde aktarılmasını sağlar.$_GET
: FormGET
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()
veyaprepare
vebind_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