Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

PHP Dasar

Pelajaran 12 dari 15

PHP di web: formulir, basis data, dan galat

Formulir: $_GET, $_POST, dan htmlspecialchars

Setelah pelajaran ini kamu bisa membaca nilai formulir dengan ?? dan menunjuk baris yang mencetak masukan pengguna tanpa htmlspecialchars.

±13 menitDiperiksa 5 Okt 2026

Materi

Formulir HTML dengan `method="get"` mengirim isiannya di alamat halaman, misalnya `cari.php?kota=Medan&hal=2`; PHP menyediakannya di array `$_GET`. Formulir dengan `method="post"` mengirim isian di badan permintaan, dan PHP menyediakannya di `$_POST`. Bedanya metode GET dan POST dibahas di kelas HTTP dan API. Semua nilai yang datang dari formulir bertipe string, termasuk angka.

Kunci yang tidak dikirim tidak ada di array, dan membacanya langsung memicu peringatan. Operator `??` mengambil nilai di kirinya bila ada dan tidak null, atau nilai di kanannya bila tidak: `$_GET["hal"] ?? 1`.

Masukan pengguna tidak boleh dicetak apa adanya ke HTML. Bila seseorang mengirim `<script>` sebagai namanya, peramban pengunjung lain menjalankan skrip itu: serangan cross-site scripting (XSS), yang di OWASP Top 10 termasuk kategori Injection dan dibahas di kelas Keamanan Siber untuk Organisasi. Pertahanannya di PHP adalah `htmlspecialchars()` tepat saat mencetak. Fungsi ini mengubah `&`, `<`, `>`, kutip ganda, dan kutip tunggal menjadi entitas seperti `&lt;`, sehingga peramban menampilkannya sebagai teks.

<?php
$nama = $_GET["nama"] ?? "Tamu";
echo "<p>Halo, " . htmlspecialchars($nama) . "</p>";

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 1 dari 3

Pengunjung membuka `cari.php?kota=Medan&hal=2`. Apa keluaran program ini?

<?php
$kota = $_GET["kota"] ?? "Jakarta";
$hal = $_GET["hal"] ?? 1;
$urut = $_GET["urut"] ?? "harga";
var_dump($hal);
echo "$kota $urut";
Pilih satu jawaban

Latihan 2 dari 3

Pengunjung mengirim komentar `<b>Mantap</b>`. Apa yang dikirim program ke peramban (kode sumber halamannya)?

<?php
$komentar = $_GET["komentar"] ?? "";
echo "<p>" . htmlspecialchars($komentar) . "</p>";
Pilih satu jawaban

Latihan 3 dari 3

Formulir pendaftaran mengirim nama dan kota dengan POST. Baris mana yang membuat halaman ini rentan XSS?

<?php
$nama = $_POST["nama"] ?? "";
$kota = $_POST["kota"] ?? "";
$aman = htmlspecialchars($nama);
echo "<h2>Terima kasih, $aman</h2>";
echo "<p>Pengiriman ke: $kota</p>";
echo "<p>Panjang nama: " . strlen($nama) . " huruf</p>";
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke