Mekanisme Dasar HTTP dalam PHP
PHP bekerja sebagai bahasa pemrograman sisi server (server-side) yang berinteraksi dengan protokol HTTP melalui siklus request-response. Ketika pengguna mengakses URL melalui browser, browser mengirimkan pesan HTTP Request ke server web (seperti Apache atau Nginx). Server kemudian meneruskan permintaan tersebut ke PHP melalui antarmuka seperti PHP-FPM atau modul mod_php. PHP memproses skrip, berinteraksi dengan database jika diperlukan, dan menghasilkan output (biasanya HTML) yang dikirim kembali ke browser sebagai HTTP Response.
Siklus Hidup Request-Response
Proses ini terjadi dalam hitungan milidetik. Berikut adalah tahapan teknis yang terjadi di balik layar:
| Tahap | Aktor | Tindakan |
|---|---|---|
| 1. Request | Browser | Mengirim HTTP Request (GET/POST) ke server. |
| 2. Routing | Web Server | Menerima request dan meneruskannya ke interpreter PHP. |
| 3. Eksekusi | PHP Engine | Menjalankan skrip, memproses logika, dan query database. |
| 4. Output | PHP Engine | Menghasilkan data (HTML/JSON) dan header HTTP. |
| 5. Response | Web Server | Mengirimkan data kembali ke browser klien. |
Implementasi Header HTTP di PHP
PHP memungkinkan pengembang untuk memanipulasi header HTTP secara langsung menggunakan fungsi header(). Hal ini krusial untuk menentukan tipe konten, status kode, atau manajemen sesi (cookies).
<?php
// Mengatur status kode 404
header("HTTP/1.1 404 Not Found");
// Mengatur tipe konten menjadi JSON
header("Content-Type: application/json");
// Mengirim data response
echo json_encode(["status" => "error", "message" => "Data tidak ditemukan"]);
exit();
?>Variabel Superglobal dalam HTTP
PHP menyediakan variabel superglobal untuk menangkap data dari HTTP Request secara otomatis:
$_GET: Menangkap data dari query string URL.$_POST: Menangkap data dari body request (biasanya form).$_SERVER: Berisi informasi server, header request, dan path skrip.$_COOKIE: Mengakses data cookie yang dikirim klien.
Troubleshooting Umum
Masalah paling sering terjadi adalah pengiriman output sebelum header. Ingatlah bahwa fungsi header() harus dipanggil sebelum ada output (seperti echo atau spasi di luar tag PHP) dikirim ke browser. Jika terjadi error "Headers already sent", periksa apakah ada spasi atau karakter tersembunyi sebelum tag pembuka <?php.