Menyalakan register_globals:
Langkah menyalakan register_globals:
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:
Maka bila fitur register_globals dinyalakan, yang perlu dilakukan hanyalah:
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:
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 ):
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,
Sedangkan di Windows dengan WAMP5:
Oke itu petunjuk umumnya, mari mengedit file php.ini.
Cari baris register_globals, lalu beri nilai On
Simpan, dan restart apache.
Mari kita uji dengan kode berikut ini:
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:
Jika ternyata error_reporting-nya masih kosong (error_reporting = NONE atau error_reporting = )
Tuliskan seperti ini:
restart kembali apache server.
Setelah itu pasti deh notice-nya ga akan muncul lagi pada saat pertama di-load \(^ ^)/
Langkah menyalakan register_globals:
- 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
- On-kan register_globals
- 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; ?>
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."
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
Posting Komentar