Mengatasi Cannot modify header information di PHP

Mengatasi Cannot modify header information di php

Mengatasi Cannot modify header information di php - Yosh yosh sobs-sobs berjumpa lagi dengan gua abang abangan yang sok asik, pada kesempatan kali ini gua akan share ya pengalaman gua sobs-sobs tentang abang-abangan kita yang satu ini yaitu PHP.

Adapun pengalaman gua yaitu pernah suatu ketika dimana gua ingin memodifikasi header tetapi terdapat keterangan Cannot modify header information - headers already sent by bla bla bla... dimana operasi perubahan header tidak bisa dilakukan sobs-sobs sekalian.

Setelah menyelam kesana kemari akhirnya gua tau sobs-sobs alasan permasalahan itu muncul dan ini juga merupakan suatu pembelajaran yang penting sih sobs-sobs bagi kita semua termasuk gua ya. adapaun permasalahannya yaitu pada output buffer ???

apaan bang tuh ouput buffer ?

ini menurut pemahan gua ya sobs, output buffer seperti wadah untuk kita bisa melakukan operasi sebelum header response dari web server dikirimkan ke client. jadi jika output buffer didalam webserver kita tidak aktif maka kita tidak bisa melakukan modifikasi header jika sebelum modifikasi header kita terdapat suatu operasi dari kita, tapi jika modifikasi header kita urutkan paling atas maka modifikasi header kita akan bisa.

Lalu gimana bang solusinya?

Oke tenang sobs, berikut ini ada beberapa solusinya.

1. Aktifkan Output Buffer

Oke sobs skema disini gua menggunakan XAMPP. jika sobs-sobs menggunakan XAMPP silahkan dilihat apakah output buffer sudah aktif atau tidak, cara silahkan cek di phpinfo. silahkan cari output_buffering.



Jika terdapat keterangan no value artinya output buffering kita tidak aktif. lalu bagaimana cara aktifinnya bang ?
Silahkan buka xampp dan klik config lalu pilih php.ini


Kemudian cari output_buffering. jika value off silahkan ganti sobs dengan value yang sobs-sobs inginkan




diatas gua ganti value menjadi 1024 dalam satuan kilobyte atau 1mb, artinya output buffer bisa menampung sebesar 1mb. silahkan sobs-sobs sesuaikan besaran valuenya dengan kebutuhan sobs-sobs sekalian. saran ya sobs untuk output buffer diset jangan terlalu besar.


2. Gunakan fungsi bawaan php

Cara ini digunakan jika kita tidak mau mengaktifkan ouput buffering di webserver kita, atau kita tidak mempunyai akses terhadap config di webserver.

berikut ini sobs-sobs simulasinya:

- Sebelum menggunakan fungsi bawaan php ob_start()

Silahkan sobs-sobs buat sebuah file php, lalu sesuaikan dengan kode dibawah ini : 


<?php
$username = "jono";
$password = "jono12";

if ($username === "jono" && $password === "jono123") {
	echo "Selamat datang jono";
} else {
	echo "Maaf anda bukan jono";
	header("HTTP/1.1 404 Not Found");
}


silahkan buka dibrowser, dan jangan lupa untuk inspect dan arahkan ke tab network. jika tab network tidak ada keterangan silahkan reload kembali halamannya,
hasilnya akan seperti dibawah ini


dimana hasil diatas adalah blok false yang akan dieksekusi, dan seharusnya HTTP Responsenya adalah 404 bukan 200. dilihat bahwa diatas juga terdapat warning yang artinya kita tidak bisa memodifikasi HTTP Header.

- Sesudah menggunakan fungsi bawaan php ob_start()

Sekarang silahkan ubah kode diatas dengan menambahkan fungsi ob_start() diposisi paling atas ya sobs

<?php
ob_start();
$username = "jono";
$password = "jono12";

if ($username === "jono" && $password === "jono123") {
	echo "Selamat datang jono";
} else {
	echo "Maaf anda bukan jono";
	header("HTTP/1.1 404 Not Found");
}


Silahkan reload kemabli halamannya sobs-sobs dan lihat kembali status di tab network



Yosh ternyata statusnya sudah berubah menjadi 404 dan warning sudah hilang.
Ingat ya sobs untuk penempatan fungsi ob_start() harus diposisi paling atas.

Oke mungkin sekian terlebih dahulu sobs-sobs, untuk jika mungkin sobs-sobs kurang puas silahkan meninggal jejak dikolom komentar atau mencari refrensi di lain tempat.


See you next time.

Posting Komentar untuk "Mengatasi Cannot modify header information di PHP"

www.domainesia.com
Web Hosting
www.domainesia.com