Bu soru burada zaten bir cevabı var:
Uyarı açıktır.
Uyarı: başlık bilgileri değiştirilemiyor - zaten tarafından gönderilen başlıklar (çıkış C'de başladı: \ xampp \ htdocs \ test \ index.php: 9) C: satırında 12 \ xampp \ htdocs \ test \ index.php
Çerezler HTTP cevap başlığında gönderilir. HTML içeriği zaten başladığımdan bu yana, geri başlığına gidin ve tanımlama bilgisi eklemek olamaz.
setcookie() HTTP üstbilgileri kalanı ile birlikte gönderilmek üzere bir çerez tanımlar. Diğer başlıklar gibi, çerezler gönderilmesi gerekir before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including
<html>
ve<head>
yanı sıra herhangi bir boşluk etiketleri.
Herhangi bir HTML belirmesi o setcookie
deyimi taşıyın:
<?php
$value = 'something from somewhere';
setcookie("TestCookie", $value);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
....
Çerezler HTTP sayfanın iletim başlıklarında gönderilir. Bazı çıkış vermek sonra, artık bu değişiklik yapamazsınız.
Sizin durumunuzda sorun çerez ayarlamak denemeden önce HTML belgenin bazı çıkış yatıyor.
Bunu çözmek için bir kaç yolu vardır; bir önceki böylece gibi sayfada herhangi bir şey çıktısı için çerez ayarlıyor
<?php
$value = 'something from somewhere';
setcookie("TestCookie", $value);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
</body>
</html>
Açıkça bunu söylemek kadar hiçbir şey yazılı olur böylece Alternatif olarak, size çıkış tampon olabilir
<?php
ob_start(); // Initiate the output buffer
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
$value = 'something from somewhere';
setcookie("TestCookie", $value);
?>
</body>
</html>
<?php
ob_end_flush(); // Flush the output from the buffer
?>
Bu son yaklaşım hakkında daha fazla bilgi için, bir ob_start bakmak ve ob_end_flush fonksiyonlarını alır.
Bu da, setcookie hakkında okumak yararlı olabilir.
Eğer çerez ayarlamadan önce bazı HTML yolluyorlar. Bu yanıt başlıklarından gönderilir gibi çerez, herhangi bir çıktı göndermeden önce ayarlanmış olmalıdır. Bunu yapın:
<?php
$value = 'something from somewhere';
setcookie("TestCookie", $value);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
</body>
</html>
Ya da sadece dönüş
output_buffering = On
Lütfen php.ini
olarak
http://digitalpbk.com/php/warning-cannot-modify-header-information-headers-already-sent tam bir çözüm için başvurun