Cara memperbaiki Undefined Variable dan Undefined Index PHP Error

30 Juli 2016

Membuat website ataupun aplikasi berbasis web menggunakan php pasti tidak akan melewatkan yang namanya variable. Namun setelah program dicoba dirunning di browser terkadang menampilkan error. Ketika menjalankan kode php terkadang ada tampilan pemberitahuan error seperti dibawah ini:

Notice: Undefined variable: nama_variable in c:\xampp\htdocs\contoh\index.php on line 10
atau
Notice: Undefined index: nama_index c:\xampp\htdocs\contoh\index.php on line 11
pada baris tersebut dituliskan skrip seperti berikut:
echo "variabel saya adalah: ". $nama_variable;
echo "index value adalah: ". $array_contoh["nama_index"];

Apa eror tersebut dan mengapa ditampilkan eror tersebut padahal dijalankan dengan versi php sebelumnya dan xampp versi sebelumnya tidak masalah? dan bagaimana cara memperbaiki eror tersebut?

a PHP error was encountered 

handling undefined index error

Undefined Variable

Pada server-server versi lawas biasanya setting php.ini mengindahkan adanya varibel yang belum didefinisikan. Dengan begitu error tidak akan muncul. Penggunaan nilai default secara langsung pada setting server pada versi-versi sebelumnya menjadi suatu masalah ketika diakses pada file-file yang lain dengan nama variabel sama. Selain itu penggunaan nilai default menjadi masalah yang serius pada keamanan dengan setting php.ini register_globals on. Eror notice akan bekerja memberikan sebuah peringatan apabila ada varibel yang belum didefinisikan nilainya. Untuk melakukan pemeriksaan apakah sebuah variable ataupun array sudah didefiniskan atau belum dapat menggunakan fungsi isset().

Walaupun sejatinya PHP tidak mengharuskan deklarasi variabel, namun disarankan untuk melakukan pengisian variabel awal walaupun hanya berupa nilai nol (0) ataupun string kosong (""). Hal ini perlu dilakukan untuk menghindari resiko celah keamanan atau bug pada program yang disusun dari banyaknya logika pada file saling berhubungan. 

Cara untuk menangani masalah undefined variable ini antara lain:
Disarankan:
1.Mendeklarasikan variabel. contohnya ketika anda ingin mengirim string dari sebuah form maka bila isian masih kosong anda dapat dengan mudah melakukan pengecekan.
Contoh:
$value = "";
// pemeriksaan menggunakan fungsi isset()
$value = isset($_POST['value']) ? $_POST['value'] : '';
// pemeriksaan menggunakan fungsi empty()
$value = !empty($_POST['value']) ? $_POST['value'] : '';
2. Melakukan setting custom error handler pada E_NOTICE dan meredirect pesan dari pesan default
set_error_handler('myHandlerForMinorErrors',E_NOTICE | E_STRICT)
3. Menonaktifkan E_NOTICE dengan cara berikut:
error_reporting(error_reporting() & ~E_NOTICE)
4. Melewatkan error dengan @operator
5. Pada codeIgniter setting environment = "PRODUCTION"

Catatan: sangat disarankan untuk memilih opsi nomor satu

Undefined Index

Pesan ini akan muncul apabila anda mencoba untuk mengakses variabel array yang belum diberikan index. Agar anda dapat melakukan pemeriksaan pada array dapat dilakukan dengan pemeriksaan sebelum array digunakan. Contohnya sebagai berikut:
Cek index sudah ada sebelum anda menggunakan. Silahkan menggunakan fungsi isset() atau array_key_exists();
$nilai = isset ($array['index_array']) ? $array['index_array']:'';
$nilai = array_key_exists ($array['index_array']) ? $array['index_array']:'';

Sebagaimana kita ketahui bahwa $_POST / $_GET / $_SESSION akan dikenal sebagai array.  Untuk $_POST dan $_GET anda harus memeriksa apakah index sudah ada atau belum sebelum anda menggunakannya. Untuk $_SESSION anda harus yakin bahwa session sudah didahului dengan skrip session_start() dan index sudah didefinisikan.

Tidak ada komentar: