Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Błąd po zmianie serwera
Forum PHP.pl > Forum > Przedszkole
ikaruss
Witam,
Po przeniesieniu strony www na inny serwer zaczęły wyskakiwać mi komunikaty z błędami:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /website/index.php:11) in /website/pliki/index.php on line 3

Nie mam pojęcia co jest tą przyczyną bo zrobiłem już chyba wszystko co tylko było opisywane na ten temat w podobnych wątkach i na innych stronach www.
Zmieniłem kodowanie na Uft8 bez BOM, pousuwałem ciasteczka, próbowałem z buforowanie strony, ale to nic nie pomogło. Na poprzednim serwerze (IQ.pl) strona działała bez zarzutów, po przeniesieniu na inny serwer (home.pl) są problemy. Podam kod dwóch plików o nazwie index.php (mają tą samą nazwę ale ten drugi jest w niższym katalogu o nazwie "pliki")

index.php

  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html" charset="ISO-8859-2" />
  4. <title>Website</title>
  5. <LINK HREF="stylek.css" REL="stylesheet" TYPE="text/css" />
  6. </head>
  7. <body>
  8. <div id="all">
  9. <div id="lalala"></div>
  10. <div id="logowanie">
  11. <?php
  12. include('pliki/index.php');
  13. ?>
  14. </div>
  15. <div class="r_top"><img src="images/rejestracja_top.png" /></div>
  16. <div id="rejestracja">
  17. <?php
  18.  
  19. $mysql_host = "nazwa_hosta";
  20. $mysql_login = "login";
  21. $mysql_haslo = "haslo";
  22. $mysql_baza = "nazwa_bazy";
  23. $mysql_tabela = "nazwa_tabeli";
  24. $twoj_adres = "adres_email";
  25.  
  26. $opcja = trim($_REQUEST["opcja"]);
  27.  
  28. if ($opcja=="test") {
  29.  
  30. // **************************************************
  31. // ********** 1. sprawdzenie danych i dodanie uzytkownika
  32. // **************************************************
  33.  
  34. $login = htmlspecialchars(stripslashes(trim($_POST["login"])), ENT_QUOTES);
  35. $haslo = htmlspecialchars(stripslashes(trim($_POST["haslo"])), ENT_QUOTES);
  36. $email = htmlspecialchars(stripslashes(trim($_POST["email"])), ENT_QUOTES);
  37. $imie = htmlspecialchars(stripslashes(trim($_POST["imie"])), ENT_QUOTES);
  38.  
  39.  
  40. if (strlen($login)<3 or strlen($login)>50
  41. or !eregi("^[a-zA-Z0-9_.]+$",$login)) { $blad++;
  42. echo "<span style=\"color:red;\">Login musi miec od 3 do 50 znakw
  43. bez polskich liter i spacji!</span><br />";
  44. } else {
  45. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) {
  46. if (mysql_select_db($mysql_baza)) {
  47. $wynik=mysql_query("SELECT * FROM $mysql_tabela WHERE login='$login'");
  48. } else echo "Nie mona poczy sie z baza";
  49. mysql_close($baza);
  50. } else echo "Nie mona polczyc sie z serwerem MySQL";
  51. if (mysql_num_rows($wynik)<>0) { $blad++;
  52. echo "<span style=\"color:red;\">Login ju zostal przez kogo uzyty!.
  53. Zaproponuj inny!</span><br />";
  54. }
  55. }
  56.  
  57. if (strlen($haslo)<6 or strlen($haslo)>50
  58. or !eregi("^[a-zA-Z0-9]+$",$haslo)) { $blad++;
  59. echo "<span style=\"color:red;\">Haso musi miec od 6 do 50 znakw
  60. bez polskich liter i spacji!</span><br />";
  61. }
  62.  
  63. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email)) { $blad++;
  64. echo "<span style=\"color:red;\">E-mail nie zosta
  65. podany prawidowo!</span><br />";
  66. }
  67.  
  68. if ($blad==0) {
  69. $kod = uniqid(rand());
  70. $haslo = md5($haslo); // zaszyfrowanie hasla
  71. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) {
  72. if (mysql_select_db($mysql_baza)) {
  73. $wynik = mysql_query("INSERT INTO $mysql_tabela
  74. VALUES('$login', '$haslo', '$kod', 1, NOW(), '$email', '$imie', '$postep')");
  75. } else echo "Nie mona poczy si z baz";
  76. mysql_close($baza);
  77. } else echo "Nie mona poczy si z serwerem MySQL";
  78.  
  79. if ($wynik) {
  80. $list="
  81. Aby potwierdzic rejestracje kliknij w ciagu 48 godzin na adres:
  82. <a href="http://stronawww/index.php?opcja=potwierdz&kod=$kod" target="_blank">http://stronawww/index.php?opcja=potwierdz&kod=$kod</a>
  83. Jezeli nie chcesz sie rejestrowa, zignoruj ten list.
  84. ";
  85. mail($email, "Rejestracja", $list, "From: <$twoj_adres>");
  86. echo "<p>Aby dokoczy proces rejestracji odbierz e-mail</p>";
  87. }
  88. } else $opcja="";
  89. }
  90.  
  91. if ($opcja=="") {
  92. echo <<<KONIEC
  93. <form action="index.php" method="post">
  94. <input type="hidden" name="opcja" value="test" />
  95. <table>
  96. <tr>
  97. <td>login:*</td>
  98. </tr>
  99. <tr>
  100. <td><input type="text" name="login" value="$login" class="przycisk" /></td>
  101. </tr>
  102. <tr>
  103. <td>haso:*</td>
  104. </tr>
  105. <tr>
  106. <td><input type="password" name="haslo" value="$haslo" class="przycisk" /></td>
  107. </tr>
  108. <tr>
  109. <td>Email:*</td>
  110. </tr>
  111. <tr>
  112. <td><input type="text" name="email" value="$email" class="przycisk" /></td>
  113. </tr>
  114. <tr>
  115. <td>Email wykadowcy:*</td>
  116. </tr>
  117. <tr>
  118. <td><input type="text" name="email_w" value="$email_w" class="przycisk" /></td>
  119. </tr>
  120. <tr>
  121. <td>Imi i nazwisko:*</td>
  122. </tr>
  123. <tr>
  124. <td><input type="text" name="imie" value="$imie" class="przycisk" /></td>
  125. </tr>
  126. <tr>
  127. <td>
  128. Status:
  129. <input type="radio" name="status" value="s"> Student
  130. <input type="radio" name="status" value="w"> Wykadowca
  131. </td>
  132. </tr>
  133. <tr>
  134. <td>&nbsp;</td>
  135. </tr>
  136. <tr>
  137. <td><input type="submit" value=" OK, rejestruj si!" style="margin-left:30px; margin-top:-15px" /></td>
  138. </tr>
  139. </table>
  140. </form>
  141. KONIEC;
  142. }
  143. if ($opcja=="potwierdz") {
  144. // **************************************************
  145. // ********** 3. potwierdzenie rejestracji, uaktywnienie uzytkownika
  146. // **************************************************
  147.  
  148. $kod = htmlspecialchars(stripslashes(trim($_GET["kod"])), ENT_QUOTES);
  149. if ($kod<>"") {
  150. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) {
  151. if (mysql_select_db($mysql_baza)) {
  152. $wynik = mysql_query("DELETE FROM $mysql_tabela
  153. WHERE data<=DATE_SUB(NOW(),INTERVAL 2 DAY) and status=1");
  154. $wynik = mysql_query("UPDATE $mysql_tabela
  155. SET status='5', data=NOW() WHERE kod='$kod' and status=1");
  156. $wynik = mysql_query ("UPDATE $mysql_tabela
  157. SET postep='1' WHERE kod='$kod' and status=5");
  158. $wynik = mysql_query("SELECT * FROM $mysql_tabela
  159. WHERE kod='$kod' and status=5");
  160. } else echo "Nie mozna polaczyc sie z baza";
  161. mysql_close($baza);
  162. } else echo "Nie mozna polaczyc sie z serwerem MySQL";
  163. if (mysql_num_rows($wynik)==1) {
  164. $dane = mysql_fetch_array($wynik);
  165. echo "<p>Dziekujemy. Rejestracja zostala zakonczona poprawnie.</p>";
  166. }
  167. }
  168. if ($kod=="" or mysql_num_rows($wynik)<>1) {
  169. echo "<p>Rejestracja nie moze zostac dokonczona -
  170. sprawdz czy link jest poprawny!</p>";
  171. }
  172. }
  173.  
  174. ?>
  175. </div>
  176. <div id="stopka"></div>
  177. </div>
  178. </body>
  179. </html>


drugi plik: pliki/index.php

  1. <?php
  2. $mysql_host = "nazwa_hosta";
  3. $mysql_login = "login";
  4. $mysql_haslo = "haslo";
  5. $mysql_baza = "nazwa_bazy";
  6. $mysql_tabela = "nazwa_tabeli";
  7.  
  8. // **************************************************
  9. // ********** wylogowanie i zalogowanie z ustaleniem sesji...
  10. // **************************************************
  11.  
  12. $login = $_POST["login"];
  13. $haslo = $_POST["haslo"];
  14.  
  15. if ($_GET["login"]=="koniec") { // wylogowanie
  16. } else if ($login<>"" and $haslo<>"") {
  17. $haslo = md5($haslo);
  18. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) {
  19. if (mysql_select_db($mysql_baza)) {
  20. $wynik = mysql_query("SELECT * FROM $mysql_tabela WHERE
  21. login='$login' and haslo='$haslo' and status=5");
  22. if (mysql_num_rows($wynik)==1) {
  23. $dane = mysql_fetch_array($wynik);
  24. $_SESSION["zalogowany"]="tak";
  25. $_SESSION["login"]=$dane["login"];
  26. $_SESSION["imie"]=$dane["imie"];
  27. $_SESSION["email"]=$dane["email"];
  28. }
  29. } else echo "Nie można połączyć się z bazą";
  30. mysql_close($baza);
  31. }
  32. }
  33. ?>
  34.  
  35. <table width="100%">
  36. <tr><td valign="top" width="100">
  37.  
  38. <?php
  39.  
  40. // **************************************************
  41. // ********** panel formularza do zalogowania i wylogowania
  42. // **************************************************
  43.  
  44. if ($_SESSION["zalogowany"]=="tak") {
  45. echo "<a href=\"index.php?login=koniec\">wyloguj się</a><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Witaj <span style=\"color:#1a5a95;\">".$_SESSION["login"]."</b></span>";
  46. } else {
  47.  
  48. echo <<<KONIEC
  49.  
  50. <form action="index3.php" method="post">
  51. <table>
  52. <tr>
  53.   <td align="right">login:&nbsp;</td>
  54.   <td><input type="text" name="login" class="przycisk_log" /></td>
  55.   <td align="right">haslo:&nbsp;</td>
  56.   <td><input type="password" name="haslo" class="przycisk_log" /></td>
  57.   <td colspan="2" align="right">
  58.   <input type="submit" class="buton" value=""/></td>
  59. </tr>
  60. </table>
  61. </form>
  62. KONIEC;
  63. }
  64. ?>
  65. </td>


Dlaczego wyskakuje mi błąd?
johny_s
dokladnie z tego powodu co Ci wyskakuje w komunikacie bledu,
przenis tego includa na sama gore
lukesh
Nie tylko przenieś include z opcjami sesji na górę, ale również umieść formularz logowania w innym pliku, w przeciwym razie dostaniesz kod html przed nagłówkami strony.
Ja zwykle umieszczam na górze dokumentu include_once (dzięki _once mam pewność, że nie pojawi się błąd, jeśli gdzieś jeszcze zostanie wstawiony za pomocą include inny dokument, który zawiera odwołanie do tego samego pliku) z funkcją obsługującą sesję, która zwraca zmienną $auth (true lub false) i następnie, korzystając z tej zmiennej, decyduję, które elementy strony wyświetlić.
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.