Ücretsiz Teklif Oluşturalım!
Hemen cevaplamaya hazırız! Ücretsiz teklif için formu doldurun.
Kişisel verilerimin işlenmesine izin veriyorum ve kullanıcı sözleşmesi ile gizlilik politikasını kabul ediyorum.
Web uygulamalarında kullanıcıdan veri toplamak ve bu verileri işlemek için formlar kullanılır. Formlar, kullanıcı etkileşimini sağlar ancak doğru bir şekilde işlenmeleri ve güvenli bir şekilde saklanmaları gerekir. Bu makalede, PHP kullanarak form işlemenin temel adımlarını, form verilerini nasıl alacağınızı ve güvenlik önlemlerini detaylı bir şekilde öğreneceksiniz.
HTML formları, kullanıcıdan bilgi toplamak için kullanılır. Formlar genellikle POST
veya GET
yöntemleri kullanılarak sunucuya gönderilir.
HTML:
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Form Örneği</title>
</head>
<body>
<form action="islem.php" method="post">
<label for="isim">İsim:</label>
<input type="text" id="isim" name="isim" required>
<br>
<label for="email">E-posta:</label>
<input type="email" id="email" name="email" required>
<br>
<input type="submit" value="Gönder">
</form>
</body>
</html>
Bu örnekte, kullanıcıdan isim ve e-posta bilgilerini toplamak için basit bir form oluşturulmuştur. Form verileri POST
yöntemi ile islem.php
dosyasına gönderilecektir.
Form verilerini almak için PHP’nin süper global değişkenlerini kullanabilirsiniz. $_POST
ve $_GET
süper global değişkenleri, POST
ve GET
yöntemleri ile gönderilen form verilerini içerir.
islem.php:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$isim = htmlspecialchars($_POST['isim']);
$email = htmlspecialchars($_POST['email']);
echo "İsim: " . $isim . "<br>";
echo "E-posta: " . $email;
}
?>
Bu örnekte, $_POST
süper globali kullanılarak form verileri alınır ve htmlspecialchars()
fonksiyonu kullanılarak XSS (Cross-Site Scripting) saldırılarına karşı güvenlik sağlanır.
Form verilerini işlemek, çeşitli güvenlik önlemleri gerektirir. Aşağıdaki adımlar, form verilerini güvenli bir şekilde işlemek için kullanılır:
Kullanıcının girdiği verileri temizlemek ve doğrulamak, uygulamanızın güvenliğini artırır. filter_var()
ve htmlspecialchars()
gibi fonksiyonlar bu amaçla kullanılır.
Örnek:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$isim = filter_var(trim($_POST['isim']), FILTER_SANITIZE_STRING);
$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo "Geçersiz e-posta adresi.";
} else {
echo "İsim: " . htmlspecialchars($isim) . "<br>";
echo "E-posta: " . htmlspecialchars($email);
}
}
?>
SQL Injection saldırılarına karşı korunmak için, form verilerini veritabanına eklerken hazırlıklı ifadeler (prepared statements) kullanmalısınız.
Örnek:
<?php
$servername = "localhost";
$username = "kullanici_adiniz";
$password = "sifreniz";
$dbname = "veritabani_adiniz";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$isim = filter_var(trim($_POST['isim']), FILTER_SANITIZE_STRING);
$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$stmt = $conn->prepare("INSERT INTO kullanicilar (isim, email) VALUES (?, ?)");
$stmt->bind_param("ss", $isim, $email);
if ($stmt->execute()) {
echo "Veri başarıyla eklendi.";
} else {
echo "Hata: " . $stmt->error;
}
$stmt->close();
} else {
echo "Geçersiz e-posta adresi.";
}
}
$conn->close();
?>
CSRF saldırılarına karşı korunmak için formunuza bir token ekleyin. Bu token, her form gönderiminde kontrol edilmelidir.
Örnek:
Form Sayfası (HTML):
<form action="islem.php" method="post">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
<label for="isim">İsim:</label>
<input type="text" id="isim" name="isim" required>
<br>
<label for="email">E-posta:</label>
<input type="email" id="email" name="email" required>
<br>
<input type="submit" value="Gönder">
</form>
PHP (Token Oluşturma ve Doğrulama):
<?php
session_start();
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die("CSRF token hatalı.");
}
$isim = htmlspecialchars($_POST['isim']);
$email = htmlspecialchars($_POST['email']);
echo "İsim: " . $isim . "<br>";
echo "E-posta: " . $email;
}
?>
Bu derste öğrendiklerinizi pekiştirmek için aşağıdaki ödevleri yapmanız gerekmektedir:
Bu ödevler, form işlemenin yanı sıra form güvenliğini sağlamanın önemini anlamanıza yardımcı olacaktır.