Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Warning: Cannot modify header information itd.
Forum PHP.pl > Forum > Przedszkole
elektronic
Witam.

Robie ankietę w php, wszystko idzie dobrze ale ni z tąd ni z owąd zaczęło mi wyskakiwać na stronie coś takiego :

Warning: Cannot modify header information - headers already sent by (output started at /disk3/users/elektronic/public_html/test2.php:8) in /disk3/users/elektronic/public_html/test2.php on line 46
linia 46:
Kod
setcookie('entry1', "$entry1", time()+3110400);


nie działa ob_start(); , które niby powinno pomagać. Dziwne jest to że przepisywałem kod 3 razy analizując go bardzo dokładnie. Był moment kiedy wszystko działało poprawnie... aż tu nagle warning.

Z góry dzięki.
kicaj
  1. <?php
  2. if( ob_get_flush() )
  3. {
  4. }
  5. ?>


Bylo wielokrotnie...
elektronic
Niestety nie działa...
Hazel
Jeśli przepisywałeś kod 3 razy, to jak bardzo byś nie uważał - zawsze możesz gdzies się pomylić.
Możesz dać cały kod?
k@mil
ustawienie ciastka (SetCookie) musi byc wyslane przed jakimikolwiek informacjami wysylanymi do przegladarki (czyli przed <head>)
wiec daj kod to pomozemy ci dobrze to usytuowac
elektronic
hmm... kod jako taki jest raczej dobry, problem chyba wystąpił jak dodałem te wszystkie meta, head itd. Potem się okaże że są głupie błędy :

Kod
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ankieta</title>
<LINK REL="stylesheet" HREF="images/css.css" TYPE="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta http-equiv="Content-Language" content="pl">
<style type="text/css">

</style>
</head>
<body>
<table>
<?


if(!($send)) {

if(!($next)) {
  
      print'<form method=post>';
        print'<tr><td>';
        print'<p>Czy posiadasz w domu internet?<br><br>';
        print'<input type="radio" name="pole1" value="1">Tak<br>';
        print'<input type="radio" name="pole1" value="2">Nie</p>';
        print'</td></tr>';
    
        print'<tr><td>';
        print'<input type="submit" name="next" value="dalej">';
        print'</td></tr>';
        print'</form>';

  } else { //  jeśli naciśnięto "dalej"
  
   $entry1++;
   setcookie('entry1', "$entry1", time()+3110400);

  
   if($entry1==1) {
     if($pole1==1) {
/******************************************/          
/* TU ZACZYNA SIĘ WŁAŚCIWA TREŚĆ ANKIETY  */
/******************************************/

    } else {
     print'<tr><td><p>';
     print "jakiś tekst";
     print'</p></td></tr>';
    }    
} else {
    print'</p></td></tr>';
    print"Eh... Wchodzisz tu już $entry1 raz...<br>";
    print'</p></td></tr>';
    print'<tr><td><p>';
    print "Już rozwiązywałeś ankietę";
    print'</p></td></tr>';
    }  
}
  


} else {

// tu jakieś instrukcje

}

?>
</table>
</body>
</html>
Hazel
no to jest praktycznie czysty HTML, sprawdzasz jedynie istnienie dwóch zmiennych, o ktorych nie mam pojęcia, czym są...
Prosiłem Cię o cały kod tongue.gif
elektronic
Sory, coś mi się popierniczyło, już jest pełny kod winksmiley.jpg
strife
No i ? Przecież odpowiedź już dostałeś, jeśli Ci mało to wejdź na http://phpedia.pl/wiki.php?title=Cannot_ad...rs_already_sent

Przenoszę na Przedszkole.
phpion
Cytat(k@mil @ 3.09.2007, 20:39:26 ) *
ustawienie ciastka (SetCookie) musi byc wyslane przed jakimikolwiek informacjami wysylanymi do przegladarki (czyli przed <head>)



Cytat(elektronic @ 3.09.2007, 21:11:47 ) *
hmm... kod jako taki jest raczej dobry, problem chyba wystąpił jak dodałem te wszystkie meta, head itd. Potem się okaże że są głupie błędy :

Kod
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
...
<?
...
   setcookie('entry1', "$entry1", time()+3110400);
...
?>
....

Potrafisz już sam stwierdzić co jest nie tak?
elektronic
Dobra, już działa... tylko zastanawiam się dlaczego jeżeli umieszcze zwykły print "tekst"; przed if(!(send)) { , warning itd. się pokazuje...Dzięki wielkie... edit: Jeszcze jedno pytanie. Jeżeli przykładowo mam index.php w którym jest ten html razem ze stylami itd. a między znacznikami body jest tylko :
Kod
<?include("ankieta.php");?>
i to nie działa, a dokładniej - pojawia się to samo ostrzeżenie, to co zrobić żeby działało. Nawet po to żebym mógł opracować css do całego dokumentu questionmark.gif Mam nadzieje że wyraziłem się jasno winksmiley.jpg

Czy ktoś może mi pomóc ? Jest mi to naprawdę potrzebne. Co zrobić abym mógł przed kodem użyć html'a... Próbuję :
Kod
<?
ob_start();  
// cały kod
ob_end_flush();
?>

ale to nie działa, próbowałem kilku innych sposobów, i również nic nie idzie. Czytałem że można jeszcze zmienić to w pliku konfiguracyjnym lecz jak ? W PHP Core w linii output_buffering pisze no_value... Nie wiem gdzie należy zmienić to na on...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.