Minggu, 19 Januari 2014

Simple! Menyembunyikan / Menampilkan Error pada CodeIgniter


Di CodeIgniter, untuk menyembunyikan php error adalah dengan men-set Environment pada file index dari 'development' menjadi 'production'.
Tetapi itu saja tidaklah cukup. Pesan-pesan error berikut masih tetap muncul :
CI General Error


CI Database Error


BAGAIMANA CARA MENYEMBUNYIKANNYA ??
Jadi bagaimana cara untuk menyembunyikannya ??
CARA #1
1. Buka editor Anda (Saya menggunakan Sublime Text 2)
2. Di dalam folder application/errors/ pada direktori Instalasi Codeigniter Anda, edit 3 file berikut :
  • error_db.php
  • error_general.php
  • error_php.php
dengan menambahkan code berikut ini baris pertama :


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 
$CI =& get_instance();
$_is_okey = $CI->input->get('show_error');
if ($_is_okey !== 'TRUE') return show_404();
?>
3. Simpan editan Anda.
Silakan lihat gambar berikut :
Edit File Default Error CI

Hasilnya adalah Anda tidak akan melihat repot error seperti tadi  :
yang muncul sekarang adalah halaman error 404, bukan error database ataupun karena kesalahan umum di CI.
Halaman 404 Standar CI
CARA #2
Berdasarkan pengalaman dari sahabat saya Fery di facebook : https://www.facebook.com/mokhamad.rofiudin/posts/10201347575953504?comment_id=39494584&offset=0&total_comments=1


Membuat file MY_Exceptions.php pada folder : application/core/
Prefix MY_ adalah default. Silakan disesuaikan dengan config application Anda.
Isinya :

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Exceptions extends CI_Exceptions
{
  protected $ci;
public function __construct()
{
        parent::__construct();
        $this->ci =& get_instance();
$_is_okey = $this->ci->input->get('showme');
if ($_is_okey !== 'TRUE') $this->show_404();
}
}





KESIMPULAN
Apa yang kita lakukan di atas adalah memberikan kondisi dimana kita harus memasukkan HTTP GET Parameter agar bisa melihat pesan error yang sebenarnya. Tentu saja parameter yang sesuai dengan apa yang kita tuliskan di file-file tersebut. Lihat kembali kode berikut :
$_is_okey = $CI->input->get('show_error');
if ($_is_okey !== 'TRUE') return show_404();
Intinya adalah pada kata  show_error dan TRUE (Anda bisa edit dan ganti sesuka Anda).
Untuk memunculkan pesan error sebenarnya tambahkan "?show_error=TRUE" pada URL halaman yang ingin Anda akses.
Misal : http://mysite.com/halaman/yg_ada_errornya/?show_error=TRUE

Cukup simple bukan, silakan jika ada pertanyaan bisa ditulis di komentar.
Happy Coding. ^_^

1 komentar: