PHP 8'de formlar, kullanıcıdan veri alıp bu veriyi sunucuya göndermeyi sağlayan bir HTML yapısıdır. PHP ile birlikte kullanıldığında, bu veriler işlenip çeşitli işlemler yapılabilir, örneğin veritabanına kaydedilebilir ya da ekrana geri döndürülebilir. PHP, form verilerini almak ve işlemek için güçlü fonksiyonlar sunar.
1. HTML Form Yapısı
Formlar genellikle bir HTML sayfasında tanımlanır ve kullanıcının giriş yapabileceği çeşitli bileşenleri (input, select, radio button vb.) içerir. Formlar iki temel yöntemle veri gönderebilir:
- GET: URL üzerinden veri gönderir.
- POST: Verileri gizli bir şekilde (URL'de görünmeden) gönderir.
Örnek HTML Formu:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Basit Form</title>
</head>
<body>
<form action="process.php" method="post">
<label for="name">İsim:</label>
<input type="text" id="name" name="name" required>
<br>
<br>
<label for="email">E-posta:</label>
<input type="email" id="email" name="email" required>
<br>
<br>
<input type="submit" value="Gönder">
</form>
</body>
</html>
2. Form Verilerini PHP ile İşlemek
PHP'de form verilerini işlemek için genellikle $_GET
ya da $_POST
süper global dizileri kullanılır. Bu diziler, form aracılığıyla gönderilen verileri tutar.
POST Yöntemi ile Form Verisini Alma:
Form verilerinin POST
yöntemiyle gönderildiği örnek üzerinden devam edelim. Formda kullanıcıdan aldığı veriyi process.php
dosyasında şu şekilde işleyebilirsiniz:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Form verilerini almak
$name = $_POST['name'];
$email = $_POST['email'];
// Verileri işleme (örneğin, ekrana yazdırma)
echo "İsim: " . htmlspecialchars($name) . "<br>";
echo "E-posta: " . htmlspecialchars($email);
}
?>
-
$_POST
: Form verilerini alırken kullanılır ve POST yöntemiyle gönderilen tüm verileri içerir. -
htmlspecialchars()
: Kullanıcı tarafından girilen verileri güvenli hale getirmek için kullanılır. Bu, XSS (Cross Site Scripting) saldırılarına karşı bir önlemdir.
3. Form Doğrulama (Validation)
Formlar aracılığıyla alınan verilerin doğru ve güvenli olduğundan emin olmak önemlidir. Form doğrulaması genellikle hem istemci (JavaScript) hem de sunucu (PHP) tarafında yapılır.
PHP ile Temel Doğrulama:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = trim($_POST['name']);
$email = trim($_POST['email']);
// Basit doğrulamalar
if (empty($name)) {
echo "İsim boş bırakılamaz.<br>";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Geçersiz e-posta adresi.<br>";
}
// Doğruysa işlemi gerçekleştirin
if (!empty($name) && filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "İsim: " . htmlspecialchars($name) . "<br>";
echo "E-posta: " . htmlspecialchars($email);
}
}
?>
-
empty()
: Verinin boş olup olmadığını kontrol eder. -
filter_var()
: E-posta gibi verilerin belirli bir formata uygun olup olmadığını doğrulamak için kullanılır.
4. GET ve POST Arasındaki Fark
-
GET Yöntemi: Verileri URL üzerinden gönderir ve bu veriler URL’de görünür. Genellikle daha basit sorgular ve linkle paylaşılabilir veriler için kullanılır.
<form action="process.php" method="get"> <input type="text" name="name"> <input type="submit" value="Gönder"> </form>
Veriler URL’de şu şekilde görünür:
http://example.com/process.php?name=John
-
POST Yöntemi: Verileri daha güvenli bir şekilde, URL’de görünmeden sunucuya gönderir. Özellikle şifreler veya hassas bilgiler için önerilir.
5. Form ile Dosya Yükleme
PHP ile form aracılığıyla dosya yüklemek de mümkündür. Bunun için enctype="multipart/form-data"
özelliği kullanılır.
HTML Dosya Yükleme Formu:
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">Dosya Seç:</label>
<input type="file" name="file" id="file">
<br>
<br>
<input type="submit" value="Yükle">
</form>
PHP ile Dosya Yükleme İşlemi:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES['file'])) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
echo "Dosya başarıyla yüklendi: " . htmlspecialchars(basename($_FILES["file"]["name"]));
} else {
echo "Dosya yüklenirken bir hata oluştu.";
}
}
?>
6. Güvenlik İpuçları
Form işlemlerinde güvenliğe dikkat etmek çok önemlidir:
-
XSS (Cross-Site Scripting) Koruması: Kullanıcılardan gelen veri HTML’ye doğrudan yazılmamalı. Bunun yerine
htmlspecialchars()
gibi fonksiyonlarla veriler temizlenmelidir. -
CSRF (Cross-Site Request Forgery) Koruması: Formlarda CSRF tokenları kullanarak yetkisiz işlemleri önleyebilirsiniz.
-
SQL Injection'dan Korunma: Veritabanı işlemlerinde kullanıcılardan gelen veriler direkt olarak sorgulara eklenmemeli, bunun yerine prepared statements kullanılmalıdır.
7. Sonuç
PHP 8'de formlar, kullanıcı verisini alıp işlemek için kullanılan güçlü araçlardır. Form doğrulama, güvenlik önlemleri ve farklı veri gönderme yöntemleri ile birleştiğinde dinamik ve güvenli web uygulamaları geliştirmek mümkündür. Formlar, PHP'nin temel yapı taşlarından biri olup, web geliştiricileri için önemli bir konudur.