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

Lirik lagu Keong Racun beserta terjemahannya inggris-nya (english translation)

Baca-baca komentar orang-orang bule tentang video Keong Racun-nya Sinta dan Jojo yang sempat jadi TT (Trending Topic) di Twitter selama beberapa hari kemarin, jadi pengen ketawa-ketawa sendiri (tapi ga jadi takut disangka gila). Ternyata rata-rata mereka ga ngerti apa istimewanya tu video. Menurut saya salah satu yang membuat video-nya menarik ya lagunya (disamping lipsinger-nya tentunya, terutama "Sinta", chow cwiiiit). Supaya lagunya lebih mudah dimengerti dan karena lagi kurang kerjaan ya saya buatlah terjemahan lagunya ke bahasa inggris dengan bahasa inggris versi saya (maksudnya versi pas-pasan cenderung kurang). Meskipun belom bener 100%, tapi yah lumayanlah dari pada ga ada. Keong Racun Penyanyi asli: Lissa Pencipta lagu: Abuy (Buy Akur) :Reff: Dasar kau keong racun Baru kenal eh ngajak tidur Ngomong nggak sopan santun Kau anggap aku ayam kampung Kau rayu diriku Kau goda diriku Kau colek diriku Hei ku takut sekali tanpa basa basi kamu ngajak happy

implode ala PHP di C, Java, dan Visual Basic (VB6)

implode adalah salah satu fungsi bawaan PHP untuk mengubah/ menyatukan elemen-elemen array $pieces menjadi sebuah string . Dengan menggunakan fungsi implode ini kita juga bisa menentukan string penghubung atau $glue antar element-elemen array tersebut. /** * @param string $glue - String yang menjadi penghubung antar element * @param string $pieces - array yang elemen-elemennya akan disatukan kedalam string * return string - Hasil penggabungan elemen-elemen pada $pieces */ implode($glue, array $pieces) Fungsi ini sangat mudah digunakan dan berguna, misal: kita memiliki array $ternak <?php $ternak = array('sapi', 'ayam', 'kambing', 'kelinci'); $stringHasil = implode(', ', $ternak); echo $stringHasil; ?> akan menghasilkan tampilan seperti ini: sapi, ayam, kambing, kelinci Sayangnya di beberapa bahasa lain fungsi ini tidak tersedia, atau memiliki nama/ syntax yang berbeda, sehingga