PHP Request Lifecycle Superglobals Routing Dasar
Definisi
Halaman ini menjelaskan alur request HTTP di PHP: dari request masuk ke server, diproses oleh script, sampai response keluar ke browser. Di level paling dasar, PHP bekerja dengan request yang sudah diterima web server lalu membaca data dari superglobals, menjalankan routing sederhana, dan mengirim output kembali.
Kenapa penting
Sebelum memakai framework, kamu perlu paham urutan kerja ini supaya tahu:
- data request datang dari mana
- kapan input form tersedia
- bagaimana file upload dibaca
- kenapa routing manual sering memakai
index.php - bagaimana response terbentuk sebelum dikirim ke client
Kalau dasar ini jelas, framework seperti Laravel atau Slim terasa jauh lebih masuk akal karena kamu bisa melihat lapisan abstraksinya.
Alur request ke response
Secara umum urutannya begini:
- Browser mengirim HTTP request ke server.
- Web server menerima request dan meneruskannya ke PHP.
- PHP mengisi superglobal yang relevan.
- Script membaca data request dan menentukan route.
- Handler memproses logic aplikasi.
- PHP membentuk response.
- Response dikirim kembali ke browser.
Superglobals yang paling sering dipakai
$_GET
$_GET berisi data dari query string di URL.
Contoh URL:
/search?q=php&page=2Isi data yang tersedia:
<?php
$q = $_GET['q'] ?? null;
$page = $_GET['page'] ?? 1;Gunakan $_GET untuk:
- filter data
- pagination
- pencarian
- parameter yang memang aman tampil di URL
Catatan penting:
- nilai
$_GETselalu string kecuali kamu ubah sendiri - jangan langsung percaya isinya; validasi tetap wajib
- data di URL bisa dilihat dan diubah user
$_POST
$_POST berisi data dari body request, biasanya dari form dengan method POST.
Contoh:
<?php
$email = $_POST['email'] ?? null;
$password = $_POST['password'] ?? null;Gunakan $_POST untuk:
- submit form
- data yang tidak ingin muncul di URL
- input yang lebih besar dari query string
Catatan penting:
$_POSTbukan otomatis aman- validasi, sanitasi, dan escaping tetap dibutuhkan
- method request harus sesuai dengan form atau client yang mengirim data
$_SERVER
$_SERVER berisi informasi tentang request dan lingkungan server.
Contoh elemen yang sering dipakai:
<?php
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
$uri = $_SERVER['REQUEST_URI'] ?? '/';
$host = $_SERVER['HTTP_HOST'] ?? '';$_SERVER berguna untuk:
- membaca method request (
GET,POST,PUT,DELETE) - membaca path URL
- membaca host
- membaca informasi request lain seperti user agent atau content type
Yang sering dipakai untuk routing manual adalah:
REQUEST_METHODREQUEST_URISCRIPT_NAMEQUERY_STRING
$_FILES
$_FILES berisi metadata dan lokasi sementara file yang di-upload melalui form multipart.
Contoh:
<?php
$name = $_FILES['avatar']['name'] ?? null;
$tmp = $_FILES['avatar']['tmp_name'] ?? null;
$error = $_FILES['avatar']['error'] ?? UPLOAD_ERR_NO_FILE;Struktur umum $_FILES mencakup:
name: nama file aslitype: tipe MIME dari clienttmp_name: file sementara di servererror: status uploadsize: ukuran file
Catatan penting:
- file tidak langsung tersimpan permanen
- kamu perlu memindahkan file dari
tmp_nameke lokasi final - validasi ukuran, ekstensi, dan MIME tetap harus dilakukan
$_FILEShanya tersedia jika form memakaienctype="multipart/form-data"
Routing dasar sebelum framework
Routing sederhana biasanya dilakukan di satu entry point, misalnya index.php. Semua request diarahkan ke file itu, lalu path URL dibaca dari $_SERVER['REQUEST_URI'].
Pola sederhananya:
<?php
$path = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH);
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
if ($method === 'GET' && $path === '/') {
echo 'Home';
} elseif ($method === 'GET' && $path === '/about') {
echo 'About';
} elseif ($method === 'POST' && $path === '/contact') {
echo 'Form submitted';
} else {
http_response_code(404);
echo 'Not Found';
}Cara kerja routing manual
- Ambil path dari URL.
- Baca method request.
- Cocokkan kombinasi method + path.
- Jalankan handler yang sesuai.
- Jika tidak ada kecocokan, kirim 404.
Ini adalah versi paling sederhana dari router.
Kenapa sering ada rewrite ke index.php
Di banyak setup PHP lama, server dikonfigurasi agar semua request yang bukan file statis diarahkan ke index.php. Tujuannya:
- satu pintu masuk request
- routing lebih mudah dikontrol
- struktur aplikasi lebih rapi
- URL tetap bersih tanpa file PHP di setiap route
Contoh alur lengkap
Misalnya user membuka:
/products?page=2Alurnya:
- Browser mengirim request
GET /products?page=2. - Web server meneruskan request ke PHP.
$_SERVER['REQUEST_METHOD']bernilaiGET.$_SERVER['REQUEST_URI']berisi/products?page=2.$_GET['page']bernilai2.- Router manual mencocokkan path
/products. - Handler membaca data halaman dan menyiapkan output.
- PHP mengirim HTML response ke browser.
Penjelasan praktis
Di level dasar, superglobals adalah jembatan antara request HTTP dan logic PHP:
$_GETuntuk parameter URL$_POSTuntuk form body$_SERVERuntuk metadata request dan server$_FILESuntuk upload file
Routing manual lalu memakai data dari $_SERVER untuk menentukan handler yang harus dieksekusi. Karena itu, sebelum framework mengambil alih, pola kerjanya tetap sama: baca request, pilih jalur eksekusi, lalu kirim response.
Catatan implementasi
- Selalu validasi input sebelum dipakai.
- Jangan anggap data dari superglobal sudah aman.
- Gunakan
$_GETuntuk data yang memang cocok di URL. - Gunakan
$_POSTuntuk submit data form. - Periksa
$_FILES['...']['error']sebelum memproses upload. - Ambil path route dari
REQUEST_URI, bukan dari string URL mentah tanpa parsing. - Untuk routing manual, siapkan fallback
404agar perilaku aplikasi jelas. - Pisahkan handler per route kalau file mulai membesar.
Istilah
- Request lifecycle: urutan proses sejak request diterima sampai response dikirim.
- Superglobal: variabel global bawaan PHP yang tersedia di banyak scope.
- Query string: bagian URL setelah
?. - Router: komponen yang memilih handler berdasarkan path dan method.
- Handler: fungsi atau blok kode yang menangani satu route.
- Multipart form data: format request untuk upload file.
- Rewrite: aturan server untuk mengarahkan URL ke file entry point tertentu.