İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

ob_start(); ve ob_end_flush(); ne işe yarar?

  • Konbuyu başlatan trgy
  • Başlangıç tarihi
T

trgy

Misafir
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ı?
 

ErdeM

0
Onaylı Üye
Katılım
6 Şubat 2006
Mesajlar
1,541
Reaction score
32
Birinden' Alıntı:
Re: ob_start(); - ob_end_flush();
ob_start la output buffering olayını başlatıyoruz. yani çıktıyı tarayıcıya göndermek yerine bir bufferda depoluyor bu ve ob_end_flush lada işim bitti artık tarayıcıya gönder diyorsun. sanırım default olarak script sona erdigindede ob_end_flush işlemi gerçekleşiyor yani çağrılmasına gerek yok ama sanırım

umarım anlamışındır
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
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. (Cannot modify header information - headers already sent hatası)

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.
 
  • Like
Reactions: jxc
T

trgy

Misafir
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. (Cannot modify header information - headers already sent hatası)

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.

:alkış::alkış:
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst