February 28th, 2005
Ada pertanyaan menarik dari milis PHP yang sering saya ikuti. Hal ini sering sekali ditanyakan, dan banyak juga yang malas menjawab, karena terlalu seringnya masalah ini dibahas dan ditanyakan.
Fren, saya org yg sedang belajar utk menjadi programmer PHP, tapi script login.php saya tidak pernah mau konek ke database saat saya masukkan username dan password. Saya menggunakan PHP versi 4.3.6, Apache versi 2.0.49, phpmyadmin versi 2.6.0, MySQL.
Kebetulan, hari Minggu kemarin jalan-jalan sebentar ke Gramedia. Sambil melihat-lihat perkembangan buku-buku lokal. Saat awal-awal dibangku kuliah dulu, minimal selama dua bulan saya membeli satu buku komputer. Uangnya dari honor sebagai Asisten Lab, dan terkadang meminta tambahan dari orang tua :D. Sejak saya lebih dalam mengenal internet, mencari tutorial, pembahasan, dan contoh-contoh aplikasi, minat beli terhadap buku komputer menurun drastis. Ditambah lagi, buku-buku yang ada hanya menyajikan hal yang melulu. Tak ada pembahasan yang lebih menarik, dan lebih mendalam.
Kembali kepada pertanyaan diatas, masalah yang ada hanya berkutat pada Register Global. Rata-rata buku PHP yang beredar ditanah air, menerapkan Register Global yang bernilai On. Padahal hal ini sudah dianjurkan dan secara default dimatikan sejak PHP versi 4.2.0. Sebenarnya, apa perbedaan dari nilai On dan Off? Akan saya bahas disini.
Register global diset lewat file php.ini. Untuk pemakai Windows, file tersebut berada pada direktori Windows anda. Pemakai linux, biasanya pada direktori /usr/lib/php. Apa yang terjadi jika register global bernilai On? bahaya. Karena pada setting ini, semua variabel yang dikirim melalu metode post, get, juga variabel session dan cookie dianggap sama. Sebagai contoh:
<?
if(isset($submit)) {
echo $tes;
}
?>
<html>
<head>
<title>Register Global</title>
</head>
<body><form name="frm1" method="post">
<input type="text" name="tes" />
<input type="submit" name="submit" value="Kirim"
/>
</form></body>
</html>
Jika file tersebut kita simpan dengan nama tes.php, pada register global yang bernilai On, bisa dijalankan dengan cara seperti ini: http://localhost/tes.php.
Seolah, tak ada yang aneh dengan program diatas. Tapi tunggu dulu, bagaimana kalau kita menjalankan program diatas dengan URL berikut: http://localhost/tes.php?submit=1&tes=nahlho. Seolah, form yang kita buat tak berarti sama sekali. Ingat, ini baru sebuah file test, bagaimana jika hal ini terjadi pada sebuah aplikasi web yang sangat peka terhadap keamanan? oh, tak tahulah saya.
Sekarang, bagaimana merubah skrip diatas, agar bisa dijalankan dengan register global yang bernilai off? simpel saja. Lihat skrip dibawah ini:
<?
if(isset($_POST['submit'])) {
echo $_POST['tes'];
}
?>
<html>
<head>
<title>Register Global</title>
</head>
<body><form name="frm1" method="post">
<input type="text" name="tes" />
<input type="submit" name="submit" value="Kirim"
/>
</form></body>
</html>
Sekilas, jadi terlihat sulit, karena harus menambahkan “sesuatu” lagi. Tapi tak apa, inilah awal belajar PHP, memperhatikan keamanan skrip yang kita buat. Jika register global bernilai Off, maka, semua variabel yang datang, disikapi dari mana ia datang. Kebetulan, dalam skrip diatas, kita menggunakan form yang metodenya post, maka variabel yang diterima haruslah $_POST['nama_variabel']. Jika variabel itu berasal dari alamat URL, maka variabel itu haruslah seperti $_GET['nama_variabel'].
Jangan menganjurkan saya untuk membuat buku PHP, karena sudah terlalu banyak buku PHP di tanah air. Inginnya sih membuat buku tentang XHTML dan CSS, karena sampai saat ini belum ada di tanah air, dan barangkali saja bisa meningkatkan jumlah pemakai blog di Indonesia. Tapi, lagi-lagi, hal ini terbentur dengan keadaan monitor, hardisk, dan CDRom dirumah yang sudah minta diganti.
26 Responses
brrrrrrrrrrrrrr ga paham :( bukan bidangnya :( heheheh ajarin dung :p
Apakah itu aja efek dari register Global di ON khan? adakah yang lain? efek yang lain? Suwun Kang.
:) contoh pertanyaan diatas dari saya yah, makasih atas penjelasannya
saya masih blm ngerti tentang pengunaan variabel yang tepat, bisa kasih referensi buku yang bagus ga? :)
Ah… ternyata tulisan situ lebih bagus dari yang saya tulis.
tanya mas didat, seandainya sudah terlanjur gak pake $_GET/POST['nama_variabel'] apa musti saya ganti satu satu ato mesti gimana? saya denger di mambo ada suatu skrip tambahan untuk ngatasin ini. CMIIW
saya menemui masalah, Mis Ada program A dan B. form action ada prog A adalah prog B, form action pada prog B ada lah $PHP_SELF. Ketika submit pada program B, nilai2 variabel dari program A hilang semua. Kenapa iya?
banyak applikasi php yang ngak jalan kalau register_global itu off.. (postnuke, phpnuke, mambo, geeklog, dll)..
apa mesti modif semua tuh…
Tapi bagai mana jika berhadapan dengan server yang awalnya setingan globalnya on menjadi off dan semua coding kita telah selesai kita buat?(“pengalaman pribadi saya”) …apakah kita harus mengeditnya semua? “pasti melelahkan”, mungkin ini satu cara yang bisa kita lakukan dengan menambahkan atau mengedit file “.httaccess” yang ada di server kita dan menambahkan baris “php_flag register_globals on” cara ini cukup menghemat waktu :-)
Article-nya simple juga and mudah banget di pelajari, dari pada gw beli buku di gramedia ;))
contoh scriptnya koko sedikit oy
buku tentang css udah ada lho mas.
kemarin dapat nemu 1 di gramed.
kayaknya sih emang baru satu itu aja…
gimana kalo udah bikin aplikasi web untuk global on tapi tiba2 harus di-set bekerja pada global off semua?
Hallloooo boss, gw br liat weblog ini..dr dulu gw mau bikin web sll ga berhasil2..pusing nich..klo blh nih, gw minta script yang sederhana aja tp yang ada databasenya..thx b4
bang ikut milis apa saja
thanks
wah tp kalo register globalnya OFF, saya jadi ga bisa login ke halaman adminnya.. gimana duongs?? >__<
Pas bgt…
tugas ttg reg glob on/off besok dikumpulin…
suwun y mZ didatz..
tutor yg baus mas, kalo ada yang lain yang menyakkut var global off dimana lagi yah.. soalnya saya butuh bgt buat referansi kul.. buka php.net malah bingung heuheuheue :)
untuk jaman sekarang ini, buku2 di indonesia kebanyakan menggunakan var global ON semua, padahal kenyataannya PHP dari versi 4,xx sudah mendefauktkan php global Off ,, hehhe piye ??
zip….
salam kenal mas didats, saya baru awal dan mulai belajar web program. klo tidak keberatan ada yang ingin saya tanyakan?
bagaimna cara membuat scrip html untuk form registration/reservation yang nantinya akan terkirim ke email yang bersangkutan. thanks, dan buat temen-temen bloger yang mau berkenan bantu saya ucapakan banyak terima kasih.
alvian
arrua_work@yahoo.com
Apa Gak Ada Cara Yang Lebih Mudah
salam,
wah makasih sekali bos artikelnya. di gogel #2 lho. kata kunci register global. oke deh wassalam…
hilman.web.id
Halo bos, mau numpang nanya nih.. saya lg ada problem dgn register global. di browser saya muncul:
“Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.”
gimana ya cara benerin nya? untuk info tambahan saya pakai windows dgn install wampserver. tolong dibantu ya bos. thanx ya
thanks…:)