PHP
Meydan okuma - Güvenli geri bildirim formu
HTML form, $_POST ve htmlspecialchars'la güvenli bir geri bildirim formu yazarsın.
Meydan okuma - Güvenli geri bildirim formu
Bu meydan okumada bir geri bildirim formu işleyen fonksiyon yazacaksın. processFeedback(array $data): string fonksiyonu, formdan gelen ad ve mesajı doğrulayıp güvenli biçimde ekrana basmaya hazır hale getirecek.
Boş alan varsa hata mesajı döndürmelisin. Dolu alanları ise htmlspecialchars ile escape ederek XSS riskini önlersin. Bu, form doğrulama ve çıktı güvenliği bilgini birleştirir.
$_POST ve htmlspecialchars hatırlatma
Formdan gelen veriyi $_POST süper globali ile alırsın; her alan bir anahtardır. Kullanıcı <script> gibi tehlikeli metin girebilir; bunu ekrana basmadan önce htmlspecialchars ile escape edersin.
Boş alanları denetlemek için === "" ile karşılaştırırsın; ?? ile eksik anahtara varsayılan değer verirsin. Bu meydan okumada processFeedback fonksiyonu hem doğrulama hem escape işini yapacak.
Uygulama Güvenli geri bildirim işleyiciyi yaz
processFeedback(array $data): string fonksiyonunu tanımla. $name = $data["name"] ?? "" ve $message = $data["message"] ?? "" ile değerleri al. İkisinden biri === "" ise "Hata: ad ve mesaj gerekli" döndür. Doluysa htmlspecialchars($name, ENT_QUOTES, "UTF-8") ile iki değeri de escape edip $safeName . ": " . $safeMessage döndür. Sonra üç echo çağrısı ekle: ["name" => "Ayşe", "message" => "Harika"], ["name" => "<b>", "message" => "selam"] ve ["name" => "", "message" => ""]; her satırın sonuna "\n" ekle.
Örnek çözümü göster
$data["name"] ?? "" ile eksik anahtara varsayılan ver; === "" ile boşluğu denetle; htmlspecialchars($name, ENT_QUOTES, "UTF-8") ile escape et.
Örnek çözüm:
<?php
// processFeedback fonksiyonunu yaz
function processFeedback(array $data): string {
$name = $data["name"] ?? "";
$message = $data["message"] ?? "";
if ($name === "" || $message === "") {
return "Hata: ad ve mesaj gerekli";
}
$safeName = htmlspecialchars($name, ENT_QUOTES, "UTF-8");
$safeMessage = htmlspecialchars($message, ENT_QUOTES, "UTF-8");
return $safeName . ": " . $safeMessage;
}
echo processFeedback(["name" => "Ayşe", "message" => "Harika"]) . "\n";
echo processFeedback(["name" => "<b>", "message" => "selam"]) . "\n";
echo processFeedback(["name" => "", "message" => ""]) . "\n";
Kendini test et
-
htmlspecialchars ne işe yarar?
- HTML özel karakterlerini escape eder, XSS engeller
- Form verisini veritabanına kaydeder
- Form alanlarını otomatik doldurur
- Boş alanları siler
Cevabı göster
HTML özel karakterlerini escape eder, XSS engeller — Doğru. htmlspecialchars, <, > ve tırnak gibi karakterleri HTML varlıklarına çevirerek XSS saldırılarını engeller.
-
htmlspecialchars çağrısını tamamla
$safe = htmlspecialchars($name, ____, "UTF-8");
Cevabı göster
$safe = htmlspecialchars($name, ENT_QUOTES, "UTF-8");
-
Form kavramlarını eşle
- $_POST
- form verisi
- htmlspecialchars
- XSS koruması
- null coalesce
- varsayılan değer
- doğrulama
- boş alan kontrolü
Sıradaki ders: Meydan okuma - Dizi işlemleri