Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z funkcja 'header()'
Forum PHP.pl > Forum > Przedszkole
Endrjub
Witam.
Mam taki problem ze skryptem. Chyba nie dziala funkcja header() i wyrzuca mi nastepujacy blad:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\apache group\apache2\htdocs\endrju\www\sonda.php:11) in c:\program files\apache group\apache2\htdocs\endrju\www\sonda.php on line 25

Jak zmienie na include("wyniki.php") niby wszystko jest ok, ale zawartosc pliku 'wyniki.php; pojawiaja sie na tej samej stronie pod formularzem,a nie na nowej stronie. A chcialbym zeby zostaly wyswietlone tylko wyniki z ankiety juz bez formularza.

  1. <html>
  2. <head></head>
  3. <body>
  4. <form action=\"sonda.php\" method=\"POST\">
  5. Pytanie:<br>
  6. &nbsp;<input type=\"radio\" name=\"answer\" value=\"tak\">&nbsp;TAK<br>
  7. &nbsp;<input type=\"radio\" name=\"answer\" value=\"nie\">&nbsp;NIE<br> 
  8. &nbsp;<input type=\"radio\" name=\"answer\" value=\"nw\">&nbsp;NIE WIEM<br>
  9. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"submit\" name=\"send\" value=\"Glosuj\">
  10. </form>
  11. <?
  12. if(isset($_POST['send'])){
  13. if($_POST['send']=='Glosuj'){
  14. $file=fopen(&#092;"sonda.txt\",\"r+\");
  15. $wpis=fgets($file,80);
  16. $tab=explode(&#092;"#\",$wpis);
  17.  
  18. $tabl[&#092;"tak\"]=$tab[0];
  19. $tabl[&#092;"nie\"]=$tab[1];
  20. $tabl[&#092;"nw\"]=$tab[2];
  21. ++$tabl[$answer];
  22. fseek($file,0);
  23. fwrite($file,$tabl[&#092;"tak\"].\"#\".$tabl[\"nie\"].\"#\".$tabl[\"nw\"]);
  24.  
  25. Header(&#092;"Location: wyniki.php\");
  26.  
  27.  
  28. }
  29. }
  30.  
  31. ?>
  32.  
  33. </body>
  34. </html>


Za odpowiedz z gory wszystkim wielkie dzieki.
pozdrawiam
tiraeth
Nie można wysłać nagłówków (HEADER) po zadeklarowaniu <html>
nospor
Sprawdz w pliku php.ini jaką masz wartość :output_buffering
ustaw: output_buffering = on
Fipaj
  1. <?
  2. ?>
  3. <html>
  4. <head></head>
  5. <body>
  6. <form action=\"sonda.php\" method=\"POST\">
  7. Pytanie:<br>
  8. &nbsp;<input type=\"radio\" name=\"answer\" value=\"tak\">&nbsp;TAK<br>
  9. &nbsp;<input type=\"radio\" name=\"answer\" value=\"nie\">&nbsp;NIE<br> 
  10. &nbsp;<input type=\"radio\" name=\"answer\" value=\"nw\">&nbsp;NIE WIEM<br>
  11. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"submit\" name=\"send\" value=\"Glosuj\">
  12. </form>
  13. <?
  14.     if(isset($_POST['send'])){
  15.     if($_POST['send']=='Glosuj'){
  16.     $file=fopen(&#092;"sonda.txt\",\"r+\");
  17.     $wpis=fgets($file,80);
  18.     $tab=explode(&#092;"#\",$wpis);
  19.  
  20.     $tabl[&#092;"tak\"]=$tab[0];
  21.     $tabl[&#092;"nie\"]=$tab[1];
  22.     $tabl[&#092;"nw\"]=$tab[2];
  23.     ++$tabl[$answer];
  24.     fseek($file,0);
  25.     fwrite($file,$tabl[&#092;"tak\"].\"#\".$tabl[\"nie\"].\"#\".$tabl[\"nw\"]);
  26.  
  27.     Header(&#092;"Location: wyniki.php\");
  28.         
  29.     
  30.     }
  31.     }
  32. ob_en_flush();
  33. ?>
  34.  
  35. </body>
  36. </html>


I z buforowaniem zadziała na 100%;
Endrjub
Ale to nie dziala mi:
  1. <?
  2.  
  3. echo&#092;"'<html>
  4. <head></head>
  5. <body>
  6. <form action=&#092;"sonda.php\" method=\"POST\">
  7. Pytanie:<br>
  8. &nbsp;<input type=&#092;"radio\" name=\"answer\" value=\"tak\">&nbsp;TAK<br>
  9. &nbsp;<input type=&#092;"radio\" name=\"answer\" value=\"nie\">&nbsp;NIE<br>
  10. &nbsp;<input type=&#092;"radio\" name=\"answer\" value=\"nw\">&nbsp;NIE WIEM<br>
  11. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=&#092;"submit\" name=\"send\" value=\"Glosuj\">
  12. </form>&#092;";
  13. if(isset($_POST['send'])){
  14. if($_POST['send']=='Glosuj'){
  15. $file=fopen(&#092;"sonda.txt\",\"r+\");
  16. $wpis=fgets($file,80);
  17. $tab=explode(&#092;"#\",$wpis);
  18.  
  19. $tabl[&#092;"tak\"]=$tab[0];
  20. $tabl[&#092;"nie\"]=$tab[1];
  21. $tabl[&#092;"nw\"]=$tab[2];
  22. ++$tabl[$answer];
  23. fseek($file,0);
  24. fwrite($file,$tabl[&#092;"tak\"].\"#\".$tabl[\"nie\"].\"#\".$tabl[\"nw\"]);
  25.  
  26. Header(&#092;"Location: wyniki.php\");
  27.  
  28.  
  29. }
  30. }
  31.  
  32. echo &#092;"</body>
  33. </html&#092;";
  34.  
  35. ?>
Yarecki
Zamiast echo "' wstaw echo ', a na końcu zamiast </form>" </form>'

Fipaj podał Ci jak to poprawnie zrobić.
Fipaj
Poprawiłem swój skrypt, który widzicie powyżej. Teraz musi działać
Endrjub
Dzieki, wszystko dziala, ale moze mi ktos wyjasnic dlaczego z echo "<html>..."; nie dzialalo, tylko z echo '...'; ?

W kazdym razie wszystko teraz dziala smile.gif
Fipaj
echo "<html>"; działało
ale nie działało echo "<html><body bgcolor="black">";
dobrze było by tak: echo '<html><body bgcolor="black">';

rozumiesz??
Endrjub
Fipaj:
faktycznie, zapomnialem, ale ze mnie gapa smile.gif
ale tak działała echo "<html><body bgcolor=\"black\">"; smile.gif

A ja chcialbym podrazyc temat. Jesli moze mi ktos odpowiedziec, to bylbym bardzo wdzieczny. Rozszerzylem skrypt o cookies, zeby "uodpornic go na odswiezania" ale cos nie dziala. Gdzies mam blad, ale nie wiem gdzie. Moze rzucicie okiem na to:

  1. <?
  2.  
  3.  
  4. setcookie(&#092;"visited\", \"1\", time()+3600); 
  5.  
  6. echo '<html>
  7. <head></head>
  8. <body>
  9. <form action=\"sonda.php\" method=\"POST\">
  10. Pytanie:<br>
  11. &nbsp;<input type=\"radio\" name=\"answer\" value=\"tak\">&nbsp;TAK<br>
  12. &nbsp;<input type=\"radio\" name=\"answer\" value=\"nie\">&nbsp;NIE<br>
  13. &nbsp;<input type=\"radio\" name=\"answer\" value=\"nw\">&nbsp;NIE WIEM<br>
  14. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"submit\" name=\"send\" value=\"Glosuj\">
  15. </form>';
  16.  
  17. if(isset( $_COOKIE['visited'])){
  18. if($_COOKIE['visited'] != &#092;"1\") { 
  19.  
  20. if(isset($_POST['send'])){
  21. if($_POST['send']=='Glosuj'){
  22.  
  23. $file=fopen(&#092;"sonda.txt\",\"r+\");
  24. $wpis=fgets($file,80);
  25. $tab=explode(&#092;"#\",$wpis);
  26.  
  27. $tabl[&#092;"tak\"]=$tab[0];
  28. $tabl[&#092;"nie\"]=$tab[1];
  29. $tabl[&#092;"nw\"]=$tab[2];
  30. ++$tabl[$answer];
  31. fseek($file,0);
  32. fwrite($file,$tabl[&#092;"tak\"].\"#\".$tabl[\"nie\"].\"#\".$tabl[\"nw\"]);
  33.  
  34. Header(&#092;"Location: wyniki.php\");
  35.  
  36.  
  37. }
  38. }
  39. else
  40. echo &#092;"Juz oddales swoj glos!\";
  41. }
  42. }
  43.  
  44. echo &#092;"</body>
  45. </html>&#092;";
  46.  
  47. ?>


Dlaczego to nie idzie...questionmark.gif

Dolaczam zawartosc pliku "wyniki.php" zeby mozna bylo zobaczyc efekt dzialania skryptu, a nie sie tylko domyslac: smile.gif
  1. <?
  2.  
  3. $file=fopen(&#092;"sonda.txt\",\"r\");
  4. $wpis=fgets($file,80);
  5. $tab=explode(&#092;"#\",$wpis);
  6.  
  7. $tabl[&#092;"tak\"]=$tab[0];
  8. $tabl[&#092;"nie\"]=$tab[1];
  9. $tabl[&#092;"nw\"]=$tab[2];
  10.  
  11. $suma= $tabl[&#092;"tak\"]+$tabl[\"nie\"]+$tabl[\"nw\"];
  12. @ $tak= floor(($tabl[&#092;"tak\"]/$suma)*100);
  13. @ $nie= floor(($tabl[&#092;"nie\"]/$suma)*100);
  14. @ $nie_wiem= floor(($tabl[&#092;"nw\"]/$suma)*100);
  15.  
  16.  
  17.  
  18. echo &#092;"<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
  19. <tr><td>TAK</td></tr>n&#092;";
  20.  echo &#092;"<tr><td width=\"200\"><img src=\"linia.gif\" width=\"\". 2*$tak .\"\" height=\"10\"></td><td>\". $tak .\"% (<b>\". $tabl[\"tak\"] .\"</b>)</td></tr>n\";
  21.  
  22.  
  23.  
  24. echo &#092;"<tr><td>NIE</td></tr>n\";
  25. echo &#092;"<tr><td width=\"200\"><img src=\"linia.gif\" width=\"\". 2*$nie. \"\" height=\"10\"></td><td>\".$nie.\"%(<b>\".$tabl['nie'].\"</b>)</td></tr>n\";
  26.  
  27. echo &#092;"<tr><td>NIE WIEM</td></tr>n\";
  28. echo &#092;"<tr><td width=\"200\"><img src=\"linia.gif\" width=\"\". 2*$nie_wiem .\"\" height=\"10\"></td><td>\". $nie_wiem .\"% (<b>\". $tabl[\"nw\"] .\"</b>)</td></tr>n\";
  29.  
  30. echo &#092;"<tr><td>Oddanych glosow:\".$suma.\"</td></tr>n\";
  31.  
  32. ?>
  33. <html>
  34. <head></head>
  35. <body></body>
  36. </html>


Z gory bardzo dziekuje
Fipaj
Nie wiem, błędu nie znalazłem, ale bardzo brudny kod. Ciężko coś odczytać, a tym bardziej znaleźć błąd
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.