Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie i błąd header already send
Forum PHP.pl > Forum > PHP
akurczyk
Gdy ustawie kodowanie pliku na ANSI to podany w temacie błąd w ogóle się nie wyświetla, a gdy kodowanie tego samego pliku jest ustawione na UTF8 wyświetla się "header already send on line 1". Dodam jeszcze że chodzi o funkcję session_start() a nie header() i pomimo ustawienia kodowania na ANSI wcześniej ustawione zmienne sesyjne nie działają.
Kod przykładowego pliku w kturym występuje ten błąd:
  1. <?php
  2. mysql_connect("localhost", "root", "vertrigo");
  3. mysql_select_db("porady");
  4. mysql_query("SET NAMES 'utf8'");
  5. echo "<html>";
  6. echo "<head>";
  7. echo "<title>Tytuł</title>";
  8. echo "</head>";
  9. echo "<body>";
  10. echo "<table width=\"790\" align=\"center\" border=\"1\">";
  11. echo "<tr>";
  12. echo "<td colspan=\"2\">";
  13. echo "Tytuł";
  14. echo "</td>";
  15. echo "</tr>";
  16. echo "<tr>";
  17. echo "<td colspan=\"2\">";
  18. echo "<a href=\"index.php\">Porady</a> | <a href=\"kontakt.php\">Kontakt</a>";
  19. echo "</td>";
  20. echo "</tr>";
  21. echo "<tr>";
  22. echo "<td style=\"vertical-align: top;\">";
  23. echo "<table width=\"100%\" border=\"1\">";
  24. echo "<tr>";
  25. echo "<td>";
  26. echo "<b>Tytuł</b>";
  27. echo "</td>";
  28. echo "</tr>";
  29. echo "<tr>";
  30. echo "<td>";
  31. echo "Treść";
  32. echo "</td>";
  33. echo "</tr>";
  34. echo "</table>";
  35. echo "</td>";
  36. echo "<td width=\"200px\" style=\"vertical-align: top;\">";
  37. if(isset($_SESSION['zalogowany']) && $_SESSION['zalogowany'] == "tak") {
  38. echo "<table width=\"100%\" border=\"1\">";
  39. echo "<tr>";
  40. echo "<td>";
  41. echo "<b>Twoje konto</b>";
  42. echo "</td>";
  43. echo "</tr>";
  44. echo "<tr>";
  45. echo "<td>";
  46. echo "<a href=\"edycja_profilu.php\">Edycja profilu</a><br>";
  47. echo "<a href=\"wyloguj_sie.php\">Wyloguj się</a>";
  48. echo "</td>";
  49. echo "</tr>";
  50. echo "</table>";
  51. } else {
  52. echo "<table width=\"100%\" border=\"1\">";
  53. echo "<tr>";
  54. echo "<td>";
  55. echo "<b>Logowanie</b>";
  56. echo "</td>";
  57. echo "</tr>";
  58. echo "<tr>";
  59. echo "<td>";
  60. echo "<form method=\"post\" action=\"zaloguj_sie.php\">";
  61. echo "Login:<br>";
  62. echo "<input type=\"text\" name=\"login\" maxlenght=\"30\" style=\"width: 100%;\"><br>";
  63. echo "Hasło:<br>";
  64. echo "<input type=\"password\" name=\"haslo\" maxlenght=\"30\" style=\"width: 100%;\"><br>";
  65. echo "<input type=\"submit\" value=\"Zaloguj się\"><br>";
  66. echo "<a href=\"rejestracja.php\">Rejestracja</a><br>";
  67. echo "<a href=\"przypomnienie_hasla.php\">Przypomnienie hasła</a>";
  68. echo "</form>";
  69. echo "</td>";
  70. echo "</tr>";
  71. echo "</table>";
  72. }
  73. echo "<table border=\"1\" width=\"100%\">";
  74. echo "<tr>";
  75. echo "<td>";
  76. echo "<b>Wyszukiwarka</b>";
  77. echo "</td>";
  78. echo "</tr>";
  79. echo "<tr>";
  80. echo "<td>";
  81. echo "<script type=\"text/javascript\">";
  82. echo "function wyslij(form){";
  83. echo "var element = form.elements[\"kategoria[]\"];";
  84. echo "for(var i=0;i<element.length;i++){";
  85. echo "if(element[i].checked){";
  86. echo "form.kategorie.value+=element[i].value;";
  87. echo "}";
  88. echo "element[i].disabled=true;";
  89. echo "}";
  90. echo "}";
  91. echo "</script>";
  92. echo "<form action=\"index.php\" method=\"get\" onsubmit=\"return wyslij(this)\">";
  93. echo "<input type=\"hidden\" name=\"kategorie\" value=\"\">";
  94. echo "Pytanie:<br>";
  95. echo "<input type=\"text\" name=\"pytanie\" maxlenght=\"50\" style=\"width: 100%;\"><br>";
  96. echo "Kategorie:<br>";
  97. echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[PHP]\"> <a href=\"index.php?kategorie=[PHP]\">[PHP]</a><br>";
  98. echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[JavaScript]\"> <a href=\"index.php?kategorie=[JavaScript]\">[JavaScript]</a><br>";
  99. echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[XHTML/CSS]\"> <a href=\"index.php?kategorie=[XHTML/CSS]\">[XHTML/CSS]</a><br>";
  100. echo "<input type=\"submit\" value=\"Szukaj\">";
  101. echo "</form>";
  102. echo "</td>";
  103. echo "</tr>";
  104. echo "</table>";
  105. echo "</td>";
  106. echo "</tr>";
  107. echo "<tr>";
  108. echo "<td colspan=\"2\">";
  109. echo "Stopka";
  110. echo "</td>";
  111. echo "</tr>";
  112. echo "</table>";
  113. echo "</body>";
  114. echo "</html>";
  115. ?>

I jeszcze jedno tak samo dzieje się z kodami z manuala gdy je zapisze w ANSI wszystko działa (oprucz polskich znaków), a gdy kodowanie znaków ustawione jest na UTF8 to php wywala błędy. Czy to może zależeć od ustawień apacha (używam VertrigoServ)?
Proszę o pomoc!!!
Piniek
Było milion razy. Zapisuj plik bez BOM.
akurczyk
ale jak używam notatnika
Piniek
Notepad++ ma tę opcję.
akurczyk
użyłem notepada++ teraz nie wywala mi błędów ale zamiast polskich znaków są krzaczki.
drPayton
A na pewno zapisujesz w utf? Poza tym musisz jeszcze określić kodowanie tego co ma być na ekranie wyświetlane. Tag META, albo:
  1. <?php
  2. header('Content-Type: text/html; charset=UTF-8');
  3. ?>
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.