PHP
Form ile post ekleme
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
-
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.
-
$_POST'tan title alanını al
$title = htmlspecialchars(____['title'] ?? '');
Cevabı göster
$title = htmlspecialchars($_POST['title'] ?? '');
-
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
Sıradaki ders: Post listesi gösterme