Langsung ke konten utama

register_globals Agar Parameter Menjadi Variabel Secara Otomatis di PHP

Menyalakan register_globals:


Langkah menyalakan register_globals:
  1. Ubah php.ini:
    • On-kan register_globals
      register_globals = On
    • Tambahkan  & ~E_WARNING atau  ~E_WARNING pada baris error_reporting
      misal:
      error_reporting = E_ALL & ~E_WARNING
  2. Restart apache

 Pembahasan:


Dengan fitur ini, kode PHP dapat menggunakan parameter dari request yang diberikan secara langsung sebagai variabel  tanpa perlu mengambilnya secara manual dengan $_GET, $_POST atau yang lainnya.

Jadi bila biasanya kita menggunakan:
<?php
$nama = $_GET['nama'];
echo $nama;
?>

Maka bila fitur register_globals dinyalakan, yang perlu dilakukan hanyalah:
<?php
echo $nama;
?>
karena, proses inisialisasi variabel $nama telah dilakukan secara otomatis oleh interpreter PHP.

Fitur ini sebenarnya membuka celah keamanan dari server, sehingga sebaiknya tidak dinyalakan.

Fakta:
  • Mulai dari PHP 4.2.0 register_globals bernilai default OFF.
  • Mulai dari PHP 5.3.0 fitur ini dinyatakan DEPRECATED (tidak didukung lagi dan akan dihilangkan pada versi mendatang), jadi sangat disarankan untuk tidak digunakan.
  • Pada php.ini terdapat kalimat peringatan:
    "You should do your best to write your scripts so that they do not require register_globals to be on;  Using form variables as globals can easily lead; to possible security problems, if the code is not very well thought of."
    yang bila diterjemahkan kira-kira artinya,
    "Anda harus mengusahakan sebisa mungkin agar skrip anda tidak membutuhkan register_globals untuk dinyalakan. Menggunakan variabel form sebagai variabel global mungkin akan dapat dengan mudah menjadi masalah keamanan, jika kodenya tidak persiapkan dengan matang."
Akan tetapi, atas nama kepraktisan masih banyak orang yang menulis kode
PHP yang bergantung pada fitur ini.
Beberapa tutorial PHP yang ada di internet tampak membutuhkan fitur ini.
Pada perkuliahan beberapa dosen dalam memberi contoh kode juga menggunakan kode PHP yang bergantung pada register_globals, mungkin untuk memudahkan mahasiswanya berfokus pada permasalahan yang sedang dibahas :)


Langkah menyalakan register_globals


Pengaturan fitur ini terletak pada file php.ini
Ingat! Setiap pengubahan yang dilakukan terhadap php.ini, apache server perlu di-restart sesudahnya agar pengubahan tersebut menampakkan hasilnya.

Jika menggunakan linux (saya menggunakan ubuntu 11.10) file php.ini dapat ditemui di:

/etc/php5/apache2filter/php.ini

Sedangkan jika menggunakan Windows dengan WAMP5 (ya saya tau... WAMP yang ini memang versi jadul banget :p ):


Icon WAMP5 di system tray ► Config files ► php.ini

atau bisa juga langsung diedit di lokasi file-nya:

C:\wamp\Apache2\bin\php.ini


Setelah hasil pengubahan php.ini-nya disimpan, restart-lah apache
server-nya.

Di linux,

sudo /etc/init.d/apache2 restart


Sedangkan di Windows dengan WAMP5:

Icon WAMP5 di system tray ► Apache ► Restart Service

Oke itu petunjuk umumnya, mari mengedit file php.ini.

Cari baris register_globals, lalu beri nilai On

register_globals = On


Simpan, dan restart apache.

Mari kita uji dengan kode berikut ini:
<html>
<body>
<form action="">
  Nama Siswa : <input name="nama" type="text" />
  <input type="submit" value="Kirimkan" />
<form>
echo "Nama Siswa: $nama";
<body>
<html>

Yang saya harapkan akan muncul seperti ini:

Nama Siswa :

Nama Siswa:


Akan tetapi malah muncul pesan:
Notice: Undefined variable

Dikomputer saya, saat dijalankan di server (localhost) inilah yang muncul:

Nama Siswa :

Notice: Undefined variable: nama in /media/data/ig/stmiki/pemproweb2/global_register_note/singleform.php on line 7 Call Stack: 0.0008 332120 1. {main}() /media/data/ig/stmiki/pemproweb2/global_register_note/singleform.php:0 Nama Siswa:


Akan tetapi jika nama-nya saya sudah dimasukkan "Samiun" dan di submit, pesan tersebut hilang.

Nama Siswa :

Nama Siswa: Samiun


Penyebabnya adalah, register_globals bekerja dengan mengubah parameter
request yang diberikan menjadi variabel. Pada saat dijalankan pertama
kali, belum ada parameter yang dikirimkan sehingga tidak ada variable
yang diciptakan.

Pesan yang muncul tersebut hanyalah pemberitahuan saja, bukan menunjukan
error (kesalahan yang menyebabkan terhentinya program), karena di PHP
tidak masalah jika variable digunakan sebelum di-inisialisasi.

Meskipun pemberitahuan itu sebenarnya bisa sangat bermanfaat dalam
mencari kesalahan pemprograman :), jika dirasa mengganggu, sesuai penjelasan sebelumnya cukup aman rasanya jika pemberitahuan semacam tersebut dimatikan.

Buka kembali php.ini

tambahkan & ~E_WARNING dibagian belakang baris error_reporting

contoh:
error_reporting = E_ALL &; E_STRICT & ~E_WARNING


Jika ternyata error_reporting-nya masih kosong (error_reporting = NONE atau error_reporting = )
Tuliskan seperti ini:
error_reporting = E_ALL &; E_STRICT & ~E_WARNING


restart kembali apache server.


Setelah itu pasti deh notice-nya ga akan muncul lagi pada saat pertama di-load \(^ ^)/

Komentar

Postingan populer dari blog ini

Contoh Pemprograman List, Animasi, dan Suara dengan Visual Basic - VB6

Sebenarnya saya agak malu nge- posting ini, karena low quality (✗_✗) banget. Tapi karena saya melihat ada beberapa teman yang kesulitan dalam mengerjakan tugas pemprograman Visual Basic (VB6) yang seperti ini, maka saya tebel-tebelin muka untuk posting disini sebagai contoh, siapa tahu bisa berguna. Tampilan Program Pemilihan objek dengan menggunakan list Pemilihan objek dengan meng-klik gambar binatang Latar Belakang Pembuatan Aplikasi ini dibuat sebagai pelaksaan dari tugas yang diberikan pada matakuliah Bahasa Pemprograman Visual 1 (Visual Basic 6) yang diajar oleh Bapak H. M. Amrin Lubis, Ir, M.Sc untuk mendemonstrasikan penggunaan List , Animasi dan Suara . Untuk lebih jelasnya, berikut ini adalah pernyataan tugas tersebut: Wajib: Buat sebuah daftar nama-nama hewan dalam list atau combo minimal 10 nama hewan. Ketik di- click salah satu nama hewan tersebut maka tampil gambarnya. Misal: di-klik kelinci tampil nama kelinci dan bahasa inggrisnya. Anjuran...

Memasang Android 4.4 KitKat di Samsung Galaxy W (Wonder) GT-I8150

Membuat backup Singkronisasikan handphone (contact, dll) Saya membuat backup SMS dengan SMS To Text, dan riwayat panggilan dengan Call Logs Backup and Restore Download Download Android SDK Tools Windows: http://dl.google.com/android/installer_r22.3-windows.exe Linux: http://dl.google.com/android/android-sdk_r22.3-linux.tgz Android SDK Tools juga terdapat dalam pake Android SDK Windows 32 bit: http://dl.google.com/android/adt/adt-bundle-windows-x86-20131030.zip Linux 32 bit: http://dl.google.com/android/adt/adt-bundle-linux-x86-20131030.zip Download ClockworkMod (CWM) Recovery Versi minimal untuk memasang CM 11 adalah versi 6.0.4.4. Jika menggunakan versi yang dibawah/sebelum itu, akan muncul pesan kesalahan "set_metadata_recursive: some changes failed" pada saat memasang CM nantinya. Download versi versi 6.0.4.5 di http://goo.im/devs/arco/ancora/cwm/recovery-clockwork-6.0.4.5-ancora.zip Download CyanogenMod (CM) 11 http://goo.im/devs/arco/ancor...

Promo Konsultasi Tugas Kewirausahaan

Konsultasi/ Mentoring Penyelesaian Tugas Kewirausahaan (Hanya menyediakan jasa konsultasi/ mentoring BUKAN jasa untuk membuatkan) Murah Biaya: Rp 1.000 / orang + snack / pertemuan Persyaratan: Masing-masing peserta menggunakan komputer/ laptop yang terhubung dengan internet Tempat bebas, waktu fleksibel Telpon : Tri 08984209407 , Simpati 081268432208 E-mail : indraginanjar@gmail.com indraginanjar.fb@facebook.com Facebook : http://www.facebook.com/indraginanjar.fb Google+ : https://plus.google.com/113794966594253699817 Atau... kasih komentar di bawah ini. Penawaran terbatas, hanya sampai Sabtu, 24 Februari 2013 Buruaaan! . . . terlambat = Gejala tugas ga selesai