[PHP] Mengatasi Masalah Redirect Error

Setelah posting mengenai artikel Redirect Halaman Menggunakan file .htaccess dan Macam-Macam Redirect Situs Menggunakan File .HTACCESS yang secara total membahas tentang fungsi file .htaccess. Dalam kesempatan ini saya mencoba membuat artikel yang sama tentang redirect halaman menggunakan PHP.

PHP atau singkatan dari Hypertext Pre Processor adalah sebuah bahasa pemrograman web berbasis server side. Artinya, semua eksekusi perintah yang di request oleh user (POST atau GET) sepenuhnya dilakukan di server yang bersangkutan. Begitu juga dengan perintah redirect, ketika halaman yang ingin dicari tidak ditemukan maka server akan mengeksekusi perintah lain. Dalam hal ini yang anda lakukan adalah mengarahkan ke halaman lain yang anda kehendaki.

PHP secara simpel memberikan cara redirect halaman dengan menggunakan perintah header() :
<?php
/* redirect halaman menggunakan PHP */
	header("Location: URL");
?>

Jika hanya terdiri dari satu baris perintah seperti contoh diatas, kemungkinan besar cara diatas akan berhasil. Tetapi pada banyak kasus cara redirect dengan menggunakan header() seperti diatas akan mengalami beberapa masalah error seperti error : Headers already sent yang mengakibatkan halaman yang anda kehendaki gagal terarahkan dengan baik.

Masalah error Headers already sent banyak terjadi ketika digabung dengan session atau perintah session_start() atau perintah lainnya yang mengakibatkan server kebingungan. Akibatnya, browser tidak akan melakukan redirect dan server akan mengeluarkan report error Headers already sent.

Untuk masalah diatas dapat diatasi dengan menggunakan perintah exit() yang digabungkan dengan perintah header() didalamnya.
<?php
	session_start();
	if ($_SESSION['LoggedIn'] == true){
		exit(header("Location: http://www.alfabet.web.id/login"));
	}else{
		exit(header("Location: http://www.alfabet.web.id"));
	}
?>

Masalah header() Tidak Bekerja


Perintah header() digunakan untuk mengirimkan raw HTTP/1.1 atau perintah untuk melanjutkan (Continue) pada header. Jadi, header() harus dipanggil terlebih dahulu sebelum server mengeluarkan output lain. Kode dibawah ini tidak akan berhasil dijalankan, karena server mengeluarkan output terlebih dahulu sebelum perintah header() dijalankan.
<?php
/*  Kode dibawah ini tidak akan berhasil dijalankan, karena server mengeluarkan output "Haloooo" 
    terlebih dahulu sebelum perintah header(); dijalankan. */
	echo "Haloooo";
	header("Location: http://www.alfabet.web.id");
?>

Semoga membantu

Baca juga:


Baca Juga :