Cara memperbaiki Undefined Variable dan Undefined Index PHP Error

Sabtu, 30 Jul 2016

Membuat website ataupun aplikasi berbasis web menggunakan php pasti tidak akan melewatkan yang namanya variable. Variable seringkali dimanfaatkan untuk menampung nilai sehingga bisa dimanfaatkan lagi pada bagian program yang lain. Variable atau di terjemahkan menjadi variabel menggunakan ruang dan alamat di memori sementara sehingga pada saat komputer dimatikan ataupun program ditutup maka memori kembali dibebaskan  dengan menghapus variabel dari memori secara otomatis.

Penggunaan variabel pada bahasa pemrograman apapun sudah semestinya dipahami oleh setiap programmer. Pada pemrograman PHP pembuatan variabel baru sangatlah sederhana, tidak perlu mendefinisikan dalam tipe data tertentu dan tidak harus diposisikan dibagian atas program seperti pada pemrograman pascal atau delphi. Anda bebas membuat variabel di bagian atas program, ditengah atau bahkan dibagian paling bawah script. Tetapi meskipun bebas penempatannya, penggunaanya tidak boleh sembarangan. Sebab setelah program dicoba dirunning di browser bisa menjadi 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 2
atau
Notice: Undefined index: nama_index c:\xampp\htdocs\contoh\index.php on line 3

Pada contoh Eror Notice diatas, ada dua jenis eror yakni eror undefined variabel dan satu lagi undefined index. Undefined variabel merujuk pada variabel sedangkan undefined index merujuk pada array. Agar lebih jelas maka mari kita simak bagaimana masing-masing skrip kode yang menyebabkan eror tersebut muncul. Pemberitahuan eror tersebut menunjuk baris skrip di program seperti berikut:
<?php
echo "variabel saya adalah: ". $nama_variable;
echo "index value adalah: ". $array_contoh["nama_index"];
?>

Undefined Variable

Apa eror undefined variabel itu dan mengapa eror tersebut muncul?

Pada umumnya error tersebut baru muncul pada php versi baru ( versi 5.3 keatas), padahal pada saat ditulis dan dijalankan dengan php dan xampp versi sebelumnya tidak masalah. Lalu bagaimana cara memperbaiki eror tersebut?

a PHP error was encountered 

handling undefined index error

Apa itu Undefined Variable

Undefined Variable merupakan variable yang  belum di definisikan. Artinya variabel tersebut belum diberikan nilai awal tetapi sudah langsung digunakan untuk proses perhitungan atau yang lain dan ditampilkan pada output. Pada server-server versi lawas biasanya pada setting php.ini sudah diset bahwa nilai default suatu variabel baru adalah null. Sehingga server versi lama mengindahkan adanya varibel yang belum didefinisikan. Dengan begitu error tidak akan muncul karena server menganggap variabel baru tersebut sudah ada isinya.

Penggunaan nilai default secara langsung pada setting server pada versi-versi lawas sebelumnya bisa 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.

Informasi Eror atau 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  

Ada beberapa cara antara lain sebagai berikut: (silahkan pilih sesuai kebutuhan)

1. Mendeklarasikan variabel.
Ketika anda ingin mengirim string dari sebuah form maka bila isian masih kosong anda dapat dengan mudah melakukan pengecekan. Cara ini lebih disarankan, 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:
Setting di php.ini dengan mengubah bagian display_error : off
bisa juga menggunakan function error_reporting(error_reporting() & ~E_NOTICE)

4. Melewatkan error dengan @operator
Contoh:
echo "variabel saya adalah: ". @$nama_variable;
echo "index value adalah: ". @$array_contoh["nama_index"];

5. Pada CodeIgniter setting environment = "PRODUCTION"

**Catatan: sangat disarankan untuk memilih opsi nomor satu


Undefined Index

Apa itu Undefined Index

Pesan ini akan muncul apabila anda mencoba untuk mengakses variabel berbentuk array yang belum diberikan index, atau dengan kata lain index pada array belum dibuat atau belum ada isinya.

Cara Penanganan Masalah Undefined 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. Anda dapat melakukannya dengan dua cara silahkan menggunakan salah satu 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 variabel kiriman dengan methode $_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.

Bagaimana masih  bermasalah dengan Undefined Variable dan Undefined Index? Semoga tidak ya.
Demikian tulisan kali ini, semoga bermanfaat.
logoblog

2 komentar:

  1. kalo make codeigniter itu diletak di manaya? controller?

    BalasHapus
    Balasan
    1. Bila di Codeigniter silahkan buka file index yang terletak paling awal kode dijalankan, yaitu di luar folder yang lain. Silahkan cari baris setting environtment umumnya defaultnya "development" silahkan diubah menjadi "production".

      Hapus