v2.5.2
Giriş yap

PHP Header Fonksiyonu Çalışmıyor

spleidanger
395 defa görüntülendi

Herkese merhaba xampp üzerinden çalışıyorum normalde yazılımı bitirdim cpanel kullandığım sunucuma yükledim fakat header("location:index.php");

header fonksiyonum çalışmıyor xampp üzerinde hiç bir sorun yok ama bazı serverlarda böyle yapıyor ob_start ve session_start mevcut çünkü üyelik sistemli

Cevap yaz
Cevaplar (9)
h4ckdr0
488 gün önce

Selamlar,

Header fonksiyonu genellikle çalışır, ancak bazı durumlarda çalışmamasına neden olabilecek bazı sebepler olabilir. İlk olarak, eğer header fonksiyonu çağrıldıktan sonra sayfanın HTML çıktısı oluşturulmuşsa (örneğin, ekrana çıktı göndermeyi içeren bir echo veya print ifadesi kullanılmışsa), header fonksiyonu çalışmayacaktır. Bu nedenle, header fonksiyonu çağrıldıktan hemen önce ob_start fonksiyonunu çağırmayı deneyin.

header() fonksiyonunun çalışmamasının nedeni, önceden yazdığınız bir yazı çıktısı olabilir. Örneğin, ekrana bir hata mesajı yazdıysanız veya bir form doldurarak sayfaya bir veri göndermişseniz, header() fonksiyonunun çalışmamasına neden olabilir. Bu durumda, header() fonksiyonunu ob_start() ve session_start() fonksiyonlarını çalıştırdıktan sonra çağırmanız gerekir.

Bu fonksiyonunun çalışmamasının nedeni, genellikle ob_start() ve session_start() fonksiyonlarının çalıştırılmamasıdır. Bu fonksiyonlar, HTTP yanıtının üst kısmını (header) değiştirebilmek için kullanılır. Özellikle ob_start() fonksiyonu, yanıtın üst kısmını değiştirilebilir hale getirir ve bu nedenle header() fonksiyonunun çalışmasını sağlar.

Bunun yanı sıra, fonksiyonunun çalışmamasının nedeni, PHP ayarlarının yanlış yapılandırılmış olması da olabilir. Bu durumda, PHP yapılandırma dosyası olan "php.ini" dosyasını düzenleyerek problemi çözebilirsiniz.

Ayrıca, bazı sunucular header fonksiyonunu çalıştırmak için session_start fonksiyonunu çağırmak zorunda olabilir. Bu nedenle, header fonksiyonunu çalıştırmadan önce session_start fonksiyonunu da çağırmayı deneyin.

Son olarak, fonksiyonunun çalışmamasına neden olabilecek bir diğer sebep de .htaccess dosyasında yapılan bir yönlendirme olabilir. Eğer bu dosyada bir yönlendirme yapılmışsa, header fonksiyonu çalışmayabilir. Bu nedenle .htaccess dosyasını kontrol edin ve gerekli değişiklikleri yapın.

Umarım bu bilgiler yardımcı olmuştur. Eğer sorununuz hala çözülmemişse, lütfen sorununuzla ilgili daha fazla bilgi verin, size daha fazla yardımcı olabilmem için daha fazla detaya ihtiyacım var!

kartal
488 gün önce

Eğer yönlendirme işlemini ajax işlemlerinin olduğu sayfada yaparsan header çalışmayacaktır.
Eğer öyleyse :
Ajax sayfanda $yonlendirme = false; adında bir değişken oluştur sayfanın başında olsun.
Yönlendirme geren bir durumda da $yonlendirme = true; olarak değiştir.

js tarafında response ettiğin veride
if(obj.yonlendirme){

//yönlendirme linkini burada belirleyip yönlendirebilirsin
//yada ajax sayfanda yonlendirme değişkenine atayıp burada kullanabilirsin.

}

dernier
489 gün önce

session_start(); // sayfa başında
ob_start();// sayfa sonunda
alacak çekilde kullan

abdullahx
490 gün önce

Bunun sebebi muhtemelen 'header already sent by output' tarzı bir hata alıyor olman. Sunucuda error_log dosyası oluşturmayı aktif edip kontrol edebilirsiniz.

spleidanger
490 gün önce

Kodu ben buradan manuel yazdım orjinal kodda yazım yanlışı yok ve maalesef Location'u büyük yazmama rağmen çalışmadı

aykhan
491 gün önce

error_reporting(0); bu kodu localda kullanmanızı önermiyorum, ciddi hatalar ola bilir ve siz bunu göremeye bilirsiniz, global sunucuya aktardığınızda yeniden yazarsınız.
Ob_start() fonksiyonunu session_start() dan önce yazmanız daha doğru ola bilir. header("location:login"); kodu zaten yönlendirme
yapacağı için ondan sonrakı kodlar çalışmayacaktır. exit() kullanmanıza gerek yoktur. Hatanız ise index.phpde dir.

if (empty($_SESSION['kullanici_giris']) {
    header("location:login");
    exit;
}

bu kodda empty ( kapanmamış. doğru kod aşağıdakı gibidir.

if (empty($_SESSION['kullanici_giris'])) {
    header("location:login");
}
qplot
491 gün önce

header("Location: login"); olarak denermısın L buyuk

bırde ob_start() ekle sayfa basına

spleidanger
491 gün önce

index.php:

include 'inc/db.php';

if (empty($_SESSION['kullanici_giris']) {
    header("location:login");
    exit;
}

db.php:

session_start();
ob_start();
error_reporting(0);
date_default_timezone_set('Europe/Istanbul');

try 
{
	$db = new PDO("mysql:host=localhost;dbname=db_adi;charset=utf8",'db_kullanici','db_sifre');
	//echo "Veritabanı Bağlantısı Başarılı.";
} 
catch (PDOExpception $e) 
{
	echo $e->getMessage();
}
aykhan
491 gün önce

Merhaba, header fonksiyonunun bulundugu dosyanin kodlarini paylasa bilirmisiniz?