Birinden' Alıntı:

Az önce bir yönlendirme sayfası yapayım dedim ama header already send diye bir hata aldım. Daha sonra sorunun çözümüne ulaştığımda ise bana ob_start ; ob_end_flush ; fonksiyonlarını verdi. Gerçekten de ekledim bunları ve sorun düzeldi. Tam olarak bunların ne işe yaradığını ne yaptılar da sorunları düzelttiğini açıklayabilecek birisi var mı?

301/302 redirect, ya da cookie set etme gibi işlemler, http isteğinde headerda gönderilir. Script ilk echo, html kodu, herhangi bir ekrana basma işlemi gerçekleştirdiğinde, header gönderimi bitmiş kabul edilir. Bu aşamadan sonra redirect, cookie işlemleri yapamazsın. Header'ları gönderdik kusura bakma hacı der. ob_start'da ekrana basmaları sen serbest bırakana kadar göndermez, böylece scriptin altında bir yerde herhangi bir koşul karşılığı redirect/cookie yapmak istersen yapabilesin diye bunu kullanırsın. ayrıca sürekli tekrar eden bazı işlemlerde de kullanılır. mesela sayfalama yaptığında, genelde hem sayfanın üstünde hem en altında sayfa 1 2 3 diye yazdırılır navigasyon kolaylığı açısından. bazı programcı arkadaşlar hem yukarıda hem aşağıda aynı kodu tekrar çalıştırır. bu tarz arkadaşları sevmiyoruz. tepedeki navigasyonu ob_start ; ob_get_contents ; bloğu arasına alıp, aşağıda tekrar aynen kaydettiğimiz outputu basarız. bu tarz işlerde de yararlıdır output fonksiyonları. Bir de ob_gzhandler vardır ki, sıkıştırılmış output yaratır. bandwidthden tasarruf sağlar.

Angelo' Alıntı: