Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Klik link berikut untuk informasi cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

Headers Already Sent

<h2>
APA?</h2>
<p>
Baru-baru ini, banyak yang mengirimkan paket yang berisi sebuah buku didalamnya dan ternyata itu adalah <strong>BOM</strong>. Buku tersebut dikirimkan kepada beberapa orang yang sudah dialamatkan kepada mereka.</p>
<p>
<strong>Apa hubungannya dengan buku?</strong><br>
Hampir sama logikanya dengan <em>headers</em>. Anggap saja kita mempunyai data (buku) yang harus ditampilkan pada <em>browser </em>(penerima).<br>
Secara disengaja ataupun tidak disengaja, bisa saja si pengirim mengirimkan paket tersebut melalui orang yang salah, yang isinya bisa diganti menjadi <strong>BOM</strong>. </p>
<p>
Jika data tersebut dikirim dengan cara yang salah (dengan mengirimkan ataupun memodifikasi <em>header </em>HTTP) sebelum <em>output </em>dibuat, maka akan menampilkan pesan seperti ini :</p>
<pre>Warning: Cannot modify header information - headers already sent</pre>
<hr>
<h2>
SIAPA?</h2>
<p>
Yang paling berperan dalam hal ini adalah : </p>
<ul>
<li>
Fungsi <a href="http://php.net/manual/en/function.header.php">header </a></li>;
<li>
Fungsi <a href="http://php.net/manual/en/function.header-remove.php">header_remove</a></li>;
<li>
Fungsi <a href="http://php.net/manual/en/function.session-start.php">session_start</a></li>;
<li>
Fungsi <a href="http://php.net/manual/en/function.session-regenerate-id.php">session_regenerate_id</a></li>;
<li>
Fungsi <a href="http://php.net/manual/en/function.setcookie.php">setcookie</a></li>;
<li>
Fungsi <a href="http://php.net/manual/en/function.setrawcookie.php">setrawcookie</a></li>;
<li>
<em>Editor </em>yang dipakai</li>
<li>
<em>Programmer</em></li>
</ul>
<hr>
<h2>
KAPAN?</h2>
<p>
<strong>Headers already sent</strong> dapat terjadi ketika melakukan hal seperti ini :</p>
<h4>
Kasus 1</h4>
<pre><?php
echo "Sesuatu..";
header("location: google.com");
?></pre>
<h4>
Kasus 2</h4>
<pre><html>
<head></head>
<body>
<?php
session_start();
echo "Sesuatu..";
?>
</body>
</html></pre>
<h4>
Kasus 3</h4>
<pre>



<?php

session_start();
echo "Sesuatu..";
?>


</pre>
<h4>
Kasus 4</h4>
<pre>hex : EF BB BF
dec : 239 187 191
ISO : </pre>
<hr>
<h2>
DIMANA?</h2>
<h4>
Kasus 1</h4>
<p>
Pada kasus 1, kita melihat adanya <tt>echo </tt>untuk memproses <em>ouput </em>dan header yang me-<em>redirect</em>. <br>
Dalam kasus ini, hal tersebut tidak dapat dilakukan, karena sebelumnya <tt>echo </tt>sudah membuat data, lalu <tt>header </tt>dikirimkan sebelum <em>output </em>dibuat (selesai diakhir script). </p>
<h4>
Kasus 2 </h4>
<p>
Pada kasus 2, tag <tt><html></tt> sudah lebih dulu memproses <em>output</em>, lalu ada fungsi <tt>session_start </tt>yang membuat sesi sebelum proses <em>output </em>selesai.</p>
<h4>
Kasus 3</h4>
<p>
Pada kasus 3, terdapat banyak sekali <em>whitespace</em>, <em>new line</em>, <em>tab </em>dan <em>NULL-byte</em>. Mereka adalah <a href="http://en.wikipedia.org/wiki/ASCII"><strong>ASCII Code</strong></a> yang dapat dijadikan karakter HTML.<br>
Lagi-lagi, output sudah diproses dan <tt>session_start </tt>dibuat sebelum akhirnya <em>output</em> benar-benar dihasilkan. </p>
<h4>
Kasus 4</h4>
<p>
Pada kasus 4, inilah yang benar-benar disebut <strong>BOM </strong>alias <a href="http://en.wikipedia.org/wiki/Byte_order_mark"><strong>Byte Order Mark</strong></a>.<br>
Pada kasus ini, terjadi dan diakibatkan pada <em>editor </em>yang digunakan. Ketika menyimpan <em>file </em>PHP, di-<em>encode </em>dengan <strong>UTF-8</strong> dengan BOM. </p>
<hr>
<h2>
BAGAIMANA?</h2>
<h4>
Kasus 1 </h4>
<p>
Pada kasus ini, tidak ada yang dapat dilakukan kecuali memilih salah satu antara <tt>echo </tt>yang ingin dibuat atau <tt>header </tt>yang ingin melakukan <em>redirect</em>.</p>
<h4>
Kasus 2</h4>
<p>
Pindahkan <tt>session_start </tt>sebelum tag <tt><html> </tt>dibuat.</p>
<pre><?php session_start(); ?>
<html>
<head></head>
<body>
<?php echo "Sesuatu.."; ?>
</body>
</html></pre>
<h4>
Kasus 3</h4>
<p>
Hindari <em>whitespace</em>, <em>new line</em>, <em>tab </em>dan <em>NULL-byte</em> sebelum <em>tag </em><tt><?php </tt>dan setelah <em>tag</em> penutupnya.</p>
<pre><?php
session_start();
echo "Sesuatu..";
?></pre>
<h4>
Kasus 4</h4>
<p>
Simpan <em>file </em>PHP dengan menggunakan <strong>UTF-8</strong> tanpa di-<em>encode</em> dengan BOM.<br>
<br>
<img alt="" src="https://dl.dropbox.com/u/83581209/etc/bom.png"></p>;
<hr>
<h3>
Note</h3>
<p>
Kasus "<strong>Headers Already Sent</strong>" sebenarnya cukup mudah untuk ditangani.<br>
<strong>Tempatkan fungsi yang mengirimkan atau memodifikasi header HTTP sebelum ada fungsi yang mem-proses output</strong>.<br>
<br>
Jika tidak ada waktu untuk melakukan perubahan pada hal-hal tersebut, gunakan <a href="http://www.php.net/manual/en/outcontrol.examples.basic.php"><strong>Output Control</strong></a>. untuk menangani hal tersebut.</p>
Sign In or Register to comment.