26 December 2016

Bagaimana Caranya Mengatasi "session_start() : Cannot send session cache limiter - headers already sent" PHP

Asslamualaikum 
Pesan Error tentang session pada pemrograman PHP seringkali dijumpai para pengguna CMS berbasis PHP ataupun para developer WEB PHP. Pada umumnya pesan error tersebut lengkapnya adalah berbunyi seperti ini "Warning. session_start : Cannot send session cache limiter - headers already sent (Output started at C:\XAMPP\htdocs\testing\index.php) in C:\XAMPP\htdocs\testing\index.php on line 1" Contohnya seperti pada gambar dibawah ini
Bagaimana Caranya Mengatasi "session_start() : Cannot send session cache limiter - headers already sent" PHP
Gambar Hanya Contoh
Saya sendiri sudah sering kali menemui pesan error session pada pemrograman PHP ini semenjak pertama kali belajar pemrograman PHP di tahun 2012. Pesan error seringkali saya dapati ketika saya sedang membuat sebuah sistem informasi yang menggunakan Login Page. Contoh sederhananya , saya membuat 2 buah file yaitu file login.php dan index.php. Dimana File index.php adalah file yang berisikan halaman utama dari sistem yang saya buat, Jika saat file index.php di akses melalui browser dan terdeteksi adanya session atau ada session namun session yang cocok yang cocok sesuai yang ditentukan tidak ditemukan maka pengguna akan diarahkan ke halaman login.php

Pada halaman login.php pengguna diminta untuk memasukan username dan password, selanjutnya sistem akan mengecek kevalidan data tersebut dengan mencocokan data yang ada didalam database, jika ternyata username dan password yang diinput tadi cocok maka selanjutnya sistem akan menjalankan session dan menyimpan beberapa data menjadi session seperti username,id dan level dan secara otomatis sistem akan mengarahkan pengguna ke halaman index,php dan kembali mencocokan apakah sudah ada session username,id dan level atau belum.

Untuk Tutorial sederhana membuat form login seperti penjelasan diatas bisa langsung mengunjungi artikel saya "Membuat Form Login Dengan PHP". Berdasarkan pengalaman, ada 3 cara yang pernah saya lakukan untuk mengatasi Error "Warning. session_start : Cannot send session cache limiter - headers already sent (Output started at C:\XAMPP\htdocs\testing\index.php) in C:\XAMPP\htdocs\testing\index.php on line 1" Ini yaitu :

  1. Penempatan Session
  2. ob_start
  3. Encoding

Penempatan Session

Solusi pertama yang pernah saya gunakan adalah dengan menempatkan baris perintah session_start(); pada awal dokumen sebelum ada kode HTML lain contohnya seperti ini
Dengan seperti itu, maka permasalahan tentang session pun teratasi

ob_start

Dilain hari dengan sistem informasi yang lain lagi, saya mendapati pesan error yang sama, padahal saya sudah menempatkan baris session pada baris awal seperti kejadian yang pernah saya alami dulu, namun hal itu tidak menyelesaikan masalah ini, namun dengan tambahan baris ob_start akhirnya pesan error warning session bisa terselesaikan

Encode

Nah, pesan Error "Warning. session_start : Cannot send session cache limiter - headers already sent (Output started at C:\XAMPP\htdocs\testing\index.php) in C:\XAMPP\htdocs\testing\index.php on line 1" ini, saya dapati kembali di penghujung akhir tahun 2016 ini, dimana saya sedang mengerjakan sebuah sistem informasi untuk kantor tempat saya bekerja. Saya sudah mencoba menerapkan kedua cara yang saya tulis sebelumnya, namun tetap saja belum memecahkan masalah session ini.

Sampai saya harus beberapa kali memperhatikan dengan baik setiap detail code yang saya ketik, siapa tahu ada kesalahan yang mungkin luput dari perhatian saya, ternyata tidak, code yang saya tulis sudah benar hanya saja pesan error ini masih tetap muncul. Ternyata Penyebab masalahnya hanyalah pada Encoding.

Cara yang saya lakukan untuk mengatasi hal ini adalah membuat sebuah file baru pada editor yang biasa saya gunakan, yaitu Notepad++ lalu Mencopy seluruh isi file index.php yang muncul error tadi lalu mempastekan di halaman yang baru dibuat tadi.

Selanjutnya file Index.php tadi saya hapus, Lalu pada halaman baru yang sudah berisikan code dari index.php itu, saya save dengan nama index.php lagi namun sebelum Save saya mengganti Encode menjadi Encode in UTF-8 without BOM dan hasilnya Pesan Error "Warning. session_start : Cannot send session cache limiter - headers already sent (Output started at C:\XAMPP\htdocs\testing\index.php) in C:\XAMPP\htdocs\testing\index.php on line 1" bisa teratasi
Bagaimana Caranya Mengatasi "session_start() : Cannot send session cache limiter - headers already sent" PHP
Encode in UTF-8 without BOM
Sekian dan terima kasih. Semoga bermanfaat untuk para pembaca sekalian
Wassalam



1 komentar so far

kalo session_start di awal, nah kalo memang diharuskan session_start di tengah gmnaana carnya gan???


EmoticonEmoticon