Mengganti Path model GET dengan PATH_INFO

Seringkali dalam sebuah proses koding, seorang programmer merancang path seperti contoh berikut ini :

http://namaserver.com/index.php?module=satu&submodule=dua&aksi=baca&id=23

Sedang di kode PHP, akan ditangkap dengan kira-kira adalah seperti demikian:

$module = cleanstring( $_GET[module] );

$submodule = cleanstring( $_GET[submodule] );

$aksi = cleanstring( $_GET[aksi] )

$id = cleanstring( $_GET[id] );

Namun ternyata, path model demikian sebenarnya sangat tidak direkomendasikan di kalangan developer. Alasannya antara lain sebagai berikut:

  1. Tidak Search Engine Friendly. Search Engine lebih mudah melihat path seperti demikian : http://namaserver.com/kategori/subkategori/id/judul. Meski demikian sebenarnya masih bisa juga model GET tersebut disetting dengan menggunakan fasilitas mod_rewrite dari bawaan web server
  2. Alasan keamanan. Biasanya, sebuah mesin pencari bug SQL Injection, Remote File Inclusion, Local File Inclusion, Local File Executable akan lebih mudah menangkap bug dari model path dengan GET. Seperti misalnya adalah :
  3. Lebih mudah untuk dikatakan jika seseorang memberitahu rekannya tidak dengan posisi offline. Tentu akan lebih mudah mengatakan : “ada di halaman http://ini.com/artikel/baca/nomer” daripada “ada di halaman http://ini.com/?mod=artikel&aksi=baca&id=nomer”

PHP sebenarnya telah menyediakan sebuah model method untuk request halaman, salah satunya adalah

$_SERVER['PATH_INFO']

. Jika kita ketikkan di halaman PHP sebagai berikut:

$pathurl = $_SERVER['PATH_INFO'];

echo $pathurl;

Maka ketika halaman tersebut dibuka pada web server dengan url seperti ini : http://namaserver/artikel/baca/11 maka $pathurl nya adalah : /artikel/baca/11

 

Dengan demikian jika akan diuraikan pathurl tersebut maka bisa dilakukan dengan melakukan penambahan function explode, yang mengurai sesuatu string berdasar karakter tertentu menjadi array. Misal sebagai berikut:

 
$r_pathurl = explode("/",$pathurl);

print_r( $r_pathurl );

Maka pada web browser akan muncul sebagai berikut:

Array
(
    [0] =>
    [1] => artikel
    [2] => baca
    [3] => 11
)

Dengan memanfaatkan array tersebut, bagi yang terbiasa dengan GET method, akan dapat mengurai menjadi seperti demikian:

 

$module = cleanstring( $r_pathurl[1] );

$aksi = cleanstring( $r_pathurl[2] );

$id = cleanstring( $r_pathurl[3] );

 

Nah selanjutnya, kita bisa koding lagi seperti biasa. Perubahan hanya terjadi dengan mengganti GET method dari url, menjadi item array. Pada mod rewrite di htaccess, kita tinggal melakukan pembuangan kata index.php saja. Metode seperti inilah yang diterapkan oleh framework-framework PHP seperti CI, CakePHP, Yii dan lain sebagainya.