CodeBlanks Logo Icon CodeBlanks

Form ile post ekleme

PHP kursu · Orta seviye · Ders 67/115

HTML form ve $_POST ile yeni post oluşturmayı öğrenirsin.

HTML form ile veri almak

Bir bloga yazı eklerken kullanıcı bir HTML formu doldurur. Form method="post" ile gönderildiğinde PHP alanları $_POST süper globalinde toplar. name="title" alanı PHP tarafında $_POST['title'] olarak görünür.

Form alanı eksikse hata almamak için ?? '' ile boş dize varsayılanı verirsin: $title = $_POST['title'] ?? '';. Bu null birleştirme (null coalescing) operatörü, anahtar yoksa sağdaki değeri kullanır.

$_POST ile Post örneği oluşturma

Formdan gelen başlık, içerik ve yazar verilerini alıp new Post($title, $content, $author) ile yeni bir Post örneği oluşturursun. Ancak kullanıcının girdiği metni doğrudan ekrana yazdırmak güvenli değildir; <script> etiketleri ile XSS saldırısı yapılabilir.

Bunu önlemek için htmlspecialchars() kullanırsın: $title = htmlspecialchars($_POST['title'] ?? '');. Bu işlev <, >, & gibi karakterleri HTML varlık adlarına çevirir; böylece metin güvenle yazdırılır.

Uygulama $_POST'tan Post örneği oluştur

Post sınıfı hazır. Şimdi form verisinden yeni bir Post oluştur. $_POST = ['title' => 'Yeni yazı', 'content' => 'İçerik burada', 'author' => 'Ayşe']; ile test verisini elle ver (CLI). Sonra $title = htmlspecialchars($_POST['title'] ?? '');, $content ve $author için aynı deseni yaz. $p = new Post($title, $content, $author); ile örneği oluştur ve echo $p->title . " - " . $p->author; ile yazdır.

Örnek çözümü göster
$_POST = ['title' => 'Yeni yazı', 'content' => 'İçerik burada', 'author' => 'Ayşe']; ile test verisini ver. $title = htmlspecialchars($_POST['title'] ?? '');, $content = htmlspecialchars($_POST['content'] ?? ''); ve $author = htmlspecialchars($_POST['author'] ?? ''); yaz. $p = new Post($title, $content, $author); ile örneği oluştur, echo $p->title . " - " . $p->author; ile yazdır.
Örnek çözüm:
<?php
// Formdan gelen veriyle yeni Post örneği oluştur
class Post {
    public string $title = "";
    public string $content = "";
    public string $author = "";

    public function __construct(string $title, string $content, string $author) {
        $this->title = $title;
        $this->content = $content;
        $this->author = $author;
    }
}

$_POST = ['title' => 'Yeni yazı', 'content' => 'İçerik burada', 'author' => 'Ayşe'];
$title = htmlspecialchars($_POST['title'] ?? '');
$content = htmlspecialchars($_POST['content'] ?? '');
$author = htmlspecialchars($_POST['author'] ?? '');
$p = new Post($title, $content, $author);
echo $p->title . " - " . $p->author;

Kendini test et

  1. htmlspecialchars neden kullanılır?

    • Metni daha kısa yazmak için
    • Veritabanına bağlanmak için
    • Kullanıcı girdisindeki özel karakterleri güvenli hale getirmek için
    • Formun method özniteliğini değiştirmek için
    Cevabı göster

    Kullanıcı girdisindeki özel karakterleri güvenli hale getirmek için — Doğru. htmlspecialchars, < > ve & gibi karakterleri HTML varlık adlarına çevirir; böylece XSS saldırıları önlenir.

  2. $_POST'tan title alanını al

    $title = htmlspecialchars(____['title'] ?? '');
    Cevabı göster
    $title = htmlspecialchars($_POST['title'] ?? '');
  3. Form işleme kavramlarını eşleştir

    method="post"
    Form gönderim yöntemi
    $_POST['title']
    Başlık alanı
    htmlspecialchars
    Kaçış işlevi
    new Post(...)
    Yazı örneği

Orta seviye bölümündeki tüm dersler