Query string adalah bagian dari URL yang digunakan untuk mengirimkan data dari browser ke server melalui metode HTTP GET. Dalam pemrograman PHP, data dari query string dapat diakses secara langsung menggunakan variabel superglobal $_GET. Pemahaman mengenai query string sangat penting dalam membangun navigasi halaman, filter pencarian, dan pengelolaan parameter URL.
Penanganan request berbasis query string juga banyak diterapkan dalam sistem manajemen konten seperti Drupal. Jika fitur Clean URL pada Drupal tidak diaktifkan, setiap query string yang berbentuk parameter ?q= akan ditangani langsung oleh sistem menu dan modul yang aktif di dalam website.
Cara Membuat dan Mengirim Query String di PHP
Pembuatan query string dilakukan dengan menambahkan tanda tanya (?) di akhir URL, diikuti dengan pasangan nama dan nilai (key-value pair) yang dihubungkan dengan tanda sama dengan (=). Jika terdapat lebih dari satu parameter, setiap pasangan dipisahkan oleh tanda ampersand (&).
<!-- Contoh tautan dengan query string -->
<a href="halaman.php?kategori=teknologi&id=45">Lihat Detail Artikel</a>
Untuk menangkap data yang dikirimkan tersebut di dalam file halaman.php, Anda dapat menggunakan kode PHP berikut:
<?php
// Mengambil nilai dari query string
$kategori = isset($_GET['kategori']) ? $_GET['kategori'] : '';
$id = isset($_GET['id']) ? $_GET['id'] : '';
echo "Kategori: " . htmlspecialchars($kategori);
echo "<br>";
echo "ID: " . htmlspecialchars($id);
?>
Tabel Komparasi Metode Pengiriman Data HTTP
| Parameter | Metode GET (Query String) | Metode POST |
|---|---|---|
| Lokasi Data | Terlihat di dalam URL | Tersembunyi di dalam HTTP Body |
| Kapasitas | Terbatas (panjang URL browser) | Besar (tidak terbatas pada URL) |
| Keamanan | Rendah (mudah dilihat dan diubah) | Lebih aman untuk data sensitif |
| Bookmarks | Dapat disimpan (bookmarkable) | Tidak dapat disimpan langsung |
Keamanan dan Validasi Query String
Karena nilai query string dapat dimodifikasi secara bebas oleh pengguna melalui bilah alamat browser, data ini tidak boleh langsung dipercaya mentah-mentah. Penggunaan data dari query string secara langsung pada perintah database dapat memicu celah keamanan serius seperti Injeksi SQL.
Sebagai contoh pencegahan pada sistem lama, fungsi seperti mysql_real_escape_string digunakan untuk membersihkan input sebelum dimasukkan ke dalam kueri database:
<?php
// Contoh pengamanan input query string pada fungsi database lama
$nama_pengguna = $_GET['nama'] ?? '';
$hasil_kueri = mysql_query ( "select * from pengguna where nama = '" . mysql_real_escape_string($nama_pengguna) . "'" );
?>
Selain itu, perlu diperhatikan pula aturan penulisan sintaks SQL terkait tanda baca. Pada sistem basis data seperti MySQL, tanda kutip ganda secara default berfungsi sebagai pembatas literal string. Mengaktifkan mode SQL ansi_quotes akan mengubah perilaku tersebut agar sesuai dengan standar SQL internasional.
Tips Praktis Pengelolaan Query String
- Selalu lakukan sanitasi dan validasi tipe data (misalnya memastikan ID berupa angka dengan
intval()). - Gunakan fungsi
htmlspecialchars()saat mencetak ulang nilai query string ke dalam dokumen HTML guna mencegah serangan Cross-Site Scripting (XSS). - Manfaatkan fungsi bawaan PHP seperti
http_build_query()jika Anda perlu menghasilkan query string secara dinamis dari sebuah array asosiatif.