Request, Register Global [PHP]
2 January 2008
Pernah waktu kuliah sempat terpikir kenapa sih setiap program yang kubuat dengan PHP fungsi register global-nya mesti di On kan, sedangkan beberapa CMS pada proses installasi menyarankan untuk menonaktifkan fungsi ini (Off) dengan alasan faktor keamanan. Dan setelah beberapa kali bertemu dengan kasus yang sama, saya mulai mempelajari (mencoba) apa pengaruhnya pada program yang kubuat dan bagaimana mengubah kebiasaanku untuk menonaktifkan fungsi itu.
Dalam pemrograman web ada istilah Request yang terdiri dari Post, Get, Session, Cookies, Server. Fungsinya juga beragam, seperti post dan get yang sekali pakai (kecuali get, yang bisa diambil lagi lewat URL) , session dan cookies yang bisa berulang-ulang dipakai selama isinya belum diubah atau dihapus, dan server yang berisi variabel statis environment. Saya mungkin tidak terlalu menjelaskan secara detail (karena gak tau juga) tetapi hanya menjelaskan secara prakteknya saja.
POST
Biasanya dipakai untuk pengisian form (input atau tombol) dimana pada saat data dikirimkan ke server, user tidak dapat melihat langsung value yang dikirimkan pada URL dan hanya sekali pakai. Form Login ke suatu aplikasi web biasanya memakai tipe request ini. Untuk yang mengerti tentang HTML, biasanya tahu perbedaan pada tag <form> dimana settingan method-nya bisa menggunakan Post atau Get (bisa dilihat pada source kode HTML halaman web). Di PHP cara mengambil nilai request tipe ini bisa dengan:
$_POST['nama_data'] atau yang long array => $HTTP_POST_VARS['nama_data']
GET
Request ini mungkin yang paling familiar atau paling gampang diketahui karena bisa langsung diketahui pada address bar (URL) web site yang dikunjungi, Contohnya:
http://www.apalah.com/user.php?id=1234567
Maksud dari link URL di atas kira² seperti ini: pada halaman user.php membutuhkan suatu id untuk mengarah pada user tertentu, dimana id tersebut bersifat unique (tidak sama) untuk setiap user. Kadang juga ada link yang cukup panjang misalnya:
http://www.apalah.com/messages.php?uid=1234567&mid=3
Maksudnya: melihat pesan dari user dengan id=1234567 dengan id pesan (unique juga) = 3. Cara mengambil nilai dari request ini dengan PHP yaitu:
$_GET['uid'] atau yang long array nya => $HTTP_GET_VARS['uid']
Jadi intinya untuk GET, nilai yang diambil bisa terlihat langsung di URL walaupun pada beberapa kasus, nilai ini bisa juga disamarkan dengan menggunakan hashing (enkripsi). Bisa dengan md5, sha1, base64 dan lain sebagainya (banyak tipe enkripsi yang dipakai dengan tingkat kerumitan yang berbeda).
SESSION
Session dapat saya anggap sebagai tempat penyimpanan sementara (media pengingat), dan bisa dipakai berulang kali selama session tidak mati dan nilai session belum diubah atau dihapus. Biasanya session ataupun cookies dipakai pada aplikasi web yang membutuhkan privasi dengan membatasi hak user yang mengunjungi web dengan cara memberikan userid dan password untuk setiap user, walaupun fungsi session sendiri tidak hanya sebatas itu. Nilai dari session yang sudah didaftarkan akan disimpan pada server pada masa tertentu (bisa diatur). Cara menggunakan session yaitu:
session_start(); << fungsi untuk menjalankan fungsi session (wajib)
session_register($data); << untuk menyimpan data atau bisa juga dengan $_SESSION['index_data'] = $data;
$_SESSION['index_data']; << untuk mengambil nilai data
session_destroy(); << untuk menghapus semua nilai session, atau bisa juga dengan: unset($_SESSION);
COOKIES
Namanya juga kue, pasti enak..
, ini nggak ada hubungannya ama kue.. hihi.. cookies ini mirip dengan session bedanya kalau cookies data dipercayakan ke user dan disimpan pada komputer user. Gunanya untuk mempermudah agar user tidak perlu login berkali-kali untuk mengakses suatu web selama file cookies masih ada dan masih valid (not expired). Contohnya pada friendster, jika anda tidak mengklik link logout, maka cookies akan tersimpan terus di komputer anda dan ketika ada orang lain yang membuka friendster lagi maka yang tampil adalah halaman friendster milik anda yang belum dilogout (ini sebenarnya mempermudah atau malah membahayakan sih? .. mbuh lah.. ). Karena saya udah illfeel duluan sama cookies maka saya tidak pernah belajar menggunakan cookies.. hihi.. alesan tok ini mah.. cuma karena udah terbiasa pakai session, maybe next time.. ![]()
SERVER
Fungsi untuk mengambil variabel statis yang ada pada server.. just that. Cara mengambilnya yaitu:
$_SERVER['indec_data'] atau yang long array => $HTTP_SERVER_VARS['index_data']
Yup, yang terakhir yaitu spesial trik dari saya..
,yaitu gimana biar register global kita tidak perlu diaktifkan dan semua request dapat ditambahkan filter untuk membatasi inputan dari mallicious code (ribet ngomongnya) atau script injection. Spesial karena pakai OOP (gaya thok..
) , jadi yang masih pakai PHP 4 ke bawah, ke laut aje..
(padahal tempat hostingku masih pakai PHP 4
).
class.request.php
#******************************************** #filename: class.request.php #desc: untuk menangani metode request get dan post #******************************************** //begin class darkRequest{ public function getRedirect($location){ return header("Location: ".$location); } public function getSelf(){ return $_SERVER["REQUEST_URI"]; } public function getValue($var){ global $_POST,$_GET; if(isset($_POST[$var])){ return $_POST[$var]; }elseif(isset($_GET[$var])){ return $_GET[$var]; } } public function getRequest($method="all"){ global $_REQUEST,$_POST,$_GET; switch($method){ case "post": return array_keys($_POST); break; case "get": return array_keys($_GET); break; default: return array_keys($_REQUEST); break; } } public function getIP(){ global $_SERVER; $ip = $_SERVER['REMOTE_ADDR']; return $ip; } public function getHost(){ global $_SERVER; $ip = gethostbyaddr($_SERVER['REMOTE_ADDR']); return $ip; } } //end ?>
Ada beberapa fungsi yang tidak saya jelaskan diatas tapi biasanya sering dipakai juga. Seperti getRedirect, getSelf, getHost, getIP tapi rasanya gampang dimengerti maksudnya. Kalo ada yang mau nanya, silahkan aja ya.. ![]()
Detail:
belajar |
