Kalau kita perhatikan, pada saat proses instalasi beberapa CMS open source (misalnya Joomla), dengan alasan keamanan disarankan untuk menonaktifkan fungsi register_global. Konfigurasi fungsi ini terletak pada file php.ini.
Pada PHP versi 4.2 default setting untuk register_global ini adalah OFF. Dengan demikian apabila program yang Anda bangun masih memakai fungsi register global setting tersebut Anda ubah secara manual. Namun demikian di PHP versi 6, kalau nggak salah fungsi register global ini sudah dihilangkan.
Mungkin banyak yang penasaran, apa sih bahayanya memakai register global tersebut? Untuk lebih jelasnya akan saya jelaskan dulu apa itu register global.
PHP mempunyai beberapa variabel built-in yang disebut dengan EGPCS (Environment, GET, POST, Cookie, dan Server). Nilai variabel EGPCS tersebut (jika ada) tersimpan dalam array khusus yaitu:
- $_ENV — berisi variabel sistem environment
- $_GET — berisi variabel dalam query string (termasuk form dengan method GET)
- $_POST — berisi variabel yang dikirim dari form dengan method POST
- $_COOKIE — berisi semua variabel COOKIE
- $_SERVER — berisi semua variabel server, misalnya HTTP_USER_AGENT
- $_REQUEST — berisi semua variabel yang mencakup $_GET, $_POST dan $_COOKIE
- $_SESSION — berisi semua variabel session
Cara melihat isi variabel EGPCS tersebut cukup mudah, yaitu dengan memberikan parameter indeks array yang berupa nama variabel yang dikirim. Misalnya saja kita mengirim variabel userlogin melalui form login, maka untuk melihat isinya dengan mengakses array $_REQUEST['userlogin'].
Untuk lebih jelasnya berikut ini saya berikan contoh skrip yang menggunakan variabel EGPCS.
<?php $userlogin = $_REQUEST['userlogin']; $password = $_REQUEST['password']; if ($userlogin == 'admin' and $password == '123456') $is_login = true; ?> <?php if (!$is_login) : ?> <h1>Silakan Anda login dulu</h1> <form action="<?=$_SERVER['PHP_SELF'] ?>" method="POST"> <p>User Login: <input type="text" name="userlogin" /></p> <p>Password: <input type="password" name="password" /></p> <p><input type="submit" /></p> </form> <?php else : ?> <?php // isi halaman yang bisa diakses setelah login ?> <p>Ini data rahasia</p> <?php endif; ?>
Pada skrip di atas, saya memakai array $_REQUEST untuk mengambil isi variabel yang dikirim melalui form login. Anda bisa saja menggunakan array $_POST (jika method-nya adalah POST) atau $_GET (jika method-nya adalah GET).
Apa beda method POST dan GET?
Hampir sama. Bedanya jika kita memakai method GET pada form, maka nama variabel yang dikirim akan terlihat pada kotak URL Address pada browser setelah kita mengklik tombol Submit.
Misalnya saja kita mengisikan admin untuk userlogin dan 123456 untuk password, maka setelah tombol Submit diklik, di bagian URL Address akan terlihat alamat URL seperti contoh berikut ini:
http://localhost/index.php?userlogin=admin&password=123456
Anda tahu perbedaan lainnya? Silakan Anda tuliskan di form komentar.
Nah, seandainya setting register_global diset ON, maka variabel yang dikirim dari form login tersebut akan menjadi variabel global. Itu artinya kita bisa mengambil isinya dengan mengacu pada nama variabel yang dikirim secara langsung.
Dengan demikian variabel $userlogin secara otomatis akan bernilai “admin” dan variabel $password akan bernilai “123456″. Dan jika kita menghapus dua baris teratas dari skrip di atas, program pun tetap bisa jalan dengan sempurna.
Sekarang coba Anda perhatikan skrip di atas. Dengan asumsi bahwa register_global diset ON adakah yang salah dengan skrip tersebut?





taufik | November 24th, 2008 jam 12:11 pm
Salam,
mas mau tanya nih, bagaimana membuat login secara personal.contohnya apabila saya masuk login ke site , maka yang akan muncul identitas saya sendiri seperti nama, alamat, email, no telp dll. begitu jg bila temen saya ingin login, maka yang muncul hanya identitas dia saja.
terimakasih
taufik
se_tiansyah | March 7th, 2009 jam 7:18 am
Mas,gmn yah caranya loginnya tuh gak bisa multi user
jadi misalkan si user_1 login maka si user yg lain tdk bisa login dengan user & pass yg di gunakan si user_1 tadi?
mohon bntuannya mas….
Penerjemah | July 29th, 2010 jam 7:54 am
Makasih banyak om, infonya bermanfaat sekali.
Penerjemah Jepang