CodeBlanks Logo Icon CodeBlanks

Meydan okuma - Güvenli geri bildirim formu

PHP kursu · Başlangıç · Ders 113/116

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

  1. 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.

  2. htmlspecialchars çağrısını tamamla

    $safe = htmlspecialchars($name, ____, "UTF-8");
    Cevabı göster
    $safe = htmlspecialchars($name, ENT_QUOTES, "UTF-8");
  3. Form kavramlarını eşle

    $_POST
    form verisi
    htmlspecialchars
    XSS koruması
    null coalesce
    varsayılan değer
    doğrulama
    boş alan kontrolü

Başlangıç bölümündeki tüm dersler