Cara Mengatasi session_start(): Cannot send session cache limiter - headers already sent


Cara Mengatasi session_start(): Cannot send session cache limiter - headers already sent


Masalah session_start(): Cannot send session cache limiter - headers already sent umumya banyak terjadi pada halaman web atau aplikasi berbasis web yang menerapkan teknik load banyak halaman namun dimuat dalam satu halaman yang sama seperti halaman index.php. Masalah ini pasti akan sering ditemukan pada halaman login yang mengeset sebuah nilai session atau session_start(); yang memang dibutuhkan untuk menghasilkan variabel atau menyimpan variabel session yang nantinya digunakan untuk validasi pada halaman selanjutnya.

Saat kita akan mencoba mengset sebuah login proses, umumnya kita akan mengeset sebuah nilai session. Nilai session tersebut akan dibandingkan pada halaman lain yang menambahkan session, jika sessionnya cocok user boleh melanjutkan jika tidak user akan dikembalikan ke halaman login
menghasilkan session ketika login benar


Berdasarkan pengalaman, khususnya ketika kita menggunakan teknik memisah – misah halaman namun di load di file index, biasanya masalah ini akan terjadi karena kesalahan kita dalam menggunakan session itu sendiri.

Misalnya pada gambar diatas, merupakan nilai login proses, ketika berhasil login, nilainya akan diarahkan ke file pada gambar seperti berikut :
menambahkan session start di halaman berikutnya

Pada gambar diatas, jika kita load session_start(); maka otomatis akan memunculkan pesan error : session_start(): Cannot send session cache limiter - headers already sent. Tapi seandainya jika tidak di set session_start(); maka kita tidak akan bisa login, meskipun username dan password yang digunakan benar. Kalau tidak percaya, silahkan coba sendiri.

File diatas diload pada satu halaman index (meload file secara terpisah). Tujuan penambahan session pada file tersebut adalah untuk mencegah akses bypass atau akses ke file secara langsung. Jadi solusinya session_start(); tidak perlu ditambahkan pada setiap file, jadi kita hanya cukup melakukan pengecekan saja yaitu dengan if(!isset($ SESSION[‘admin’])){ tapi yang jadi masalah, kalau di set seperti itu maka yang terjadi adalah kita tidak akan bisa login.

Solusinya adalah file session ditaruh di load file index utama. Contohnya seperti berikut
meload session di file index

Jadi pada file sesion utama, kita set session_start(). Selanjutnya jika kita tidak menginginkan bypass atau akses halaman secara langsung pada setiap file, maka nanti kita cukup mengeceknya saja dengan if(!isset($ SESSION[‘admin’])){ tanpa ada session_start(); sebelumnya

*Catatan Penting
 Masalah ini umumnya terjadi ketika kita menggunakan fungsi session start(); yang ditaruh setelah elemen html header, seharusnya file session di set sebelum terjadi pemanggil file header, misalnya dipanggil sebelum tag html

0 Response to "Cara Mengatasi session_start(): Cannot send session cache limiter - headers already sent"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin