Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Warning: session_start() pomocy
Forum PHP.pl > Forum > Przedszkole
flaq1991
pomocy mam problem z tym błędem przy logowaniu

  1. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home//public_html/logowanie.php:8) in /home//public_html/config.php on line 59
  2.  
  3. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home//public_html/logowanie.php:8) in /home//public_html/config.php on line 59


Przez ten błąd po wyczysczeniu ciasteczek nie moge przejsc na strone dla zalogowanych i pisze ze nie jestem zalogowany zapewne nie trzyma sesji o to kod pliku config

  1. <?php
  2.  
  3. // definiujemy dane do połączenia z bazą danych
  4. define('DBHOST', '');
  5. define('DBUSER', '');
  6. define('DBPASS', '');
  7. define('DBNAME', '');
  8.  
  9. function db_connect() {
  10. // połączenie z mysql
  11. mysql_connect(DBHOST, DBUSER, DBPASS) or die('<h2>ERROR</h2> MySQL Server is not responding');
  12.  
  13. // wybór bazy danych
  14. mysql_select_db(DBNAME) or die('<h2>ERROR</h2> Cannot connect to specified database');
  15. }
  16.  
  17. function db_close() {
  18. }
  19.  
  20. function clear($text) {
  21. // jeśli serwer automatycznie dodaje slashe to je usuwamy
  22. $text = stripslashes($text);
  23. }
  24. $text = trim($text); // usuwamy białe znaki na początku i na końcu
  25. $text = mysql_real_escape_string($text); // filtrujemy tekst aby zabezpieczyć się przed sql injection
  26. $text = htmlspecialchars($text); // dezaktywujemy kod html
  27. return $text;
  28. }
  29.  
  30. function codepass($password) {
  31. // kodujemy hasło (losowe znaki można zmienić lub całkowicie usunąć
  32. return sha1(md5($password).'#!%Rgd64');
  33. }
  34.  
  35. // funkcja na sprawdzanie czy user jest zalogowany, jeśli nie to wyświetlamy komunikat
  36. function check_login() {
  37. if(!$_SESSION['logged']) {
  38. die('<p>Panel haseł jest tylko dla zarejestrowanych użytkowników.</p>
  39. <p><a href="logowanie.php">Logowanie</a></p><p><a href="rejestracja.php">Rejestracja</a></p>');
  40. }
  41. }
  42.  
  43. // funkcja na pobranie danych usera
  44. function get_user_data($id = -1) {
  45. // jeśli nie podamy id usera to podstawiamy id aktualnie zalogowanego
  46. if($id == -1) {
  47. $id = $_SESSION['id'];
  48. }
  49. $result = mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1");
  50. if(mysql_num_rows($result) == 0) {
  51. return false;
  52. }
  53. return mysql_fetch_assoc($result);
  54. }
  55.  
  56. // startujemy sesje
  57.  
  58. // jeśli nie ma jeszcze sesji "logged" i "id" to wypełniamy je domyślnymi danymi
  59. if(!isset($_SESSION['logged'])) {
  60. $_SESSION['logged'] = false;
  61. $_SESSION['id'] = -1;
  62. }
  63. ?>
pitu
Wstaw to na początek pliku, a nie wśrodku:
flaq1991
wstawiłem tak :
  1. <?php

i
  1. <?php session_start();

i wyskakuje ten sam error
PawelC
Ustaw kodowanie pliku na utf-8 bez boom np w Notepad++ zakładka format. I w meta też daj utf-8. To Ci pomoże, sam miałem takie problemy i ten zabieg pomógł smile.gif

Temat był wałkowany wiele razy smile.gif
flaq1991
nic nie dało nadal jest ten sam błąd sad.gif
PawelC
Plik w którym wywołujesz te funkcje co podałeś do nich kod, ma kodowanie pliku utf-8 bez boom?
flaq1991
Tak zmieniłem to w notepad++ i zamiast polskich znaków śźćżó itp wyskoczyły krzaczki ;p ale mniejsza o to i tak to nic nie dało ;/
PawelC
Krzaki są dlatego, że w meta nie masz ustawionego kodowanie utf-8

http://forum.php.pl/index.php?showtopic=85888 tu masz opisane oba błędy czyli krzaczki i session
flaq1991
Kodowanie mam dobrze niżej podaje plik logowanie.php w którym odbywa się includowanie config.php może ktoś mi go zrobi tak jak byc powinien wtedy sprawdzimy

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <meta name="keywords" content="" />
  5. <meta name="description" content="" />
  6. <link href="templatemo_style.css" rel="stylesheet" type="text/css" />
  7. <script language="javascript" type="text/javascript">
  8. function clearText(field)
  9. {
  10. if (field.defaultValue == field.value) field.value = '';
  11. else if (field.value == '') field.value = field.defaultValue;
  12. }
  13. </head>
  14. <div id="templatemo_container_wrapper">
  15. <div id="templatemo_container">
  16. <div id="templatemo_banner">
  17. <div id="site_title">
  18. <h1><a href="#" target="_parent"><span></span></a></h1>
  19. </div>
  20.  
  21. <div id="templatemo_menu">
  22. <ul>
  23. <li><a href="index.php" class="current">Start</a></li>
  24. <li><a href="rejestracja.php" target="_parent">Rejestacja</a></li>
  25. <li><a href="logowanie.php">Logowanie</a></li>
  26. <li><a href="galeria.php">Galeria</a></li>
  27. <li><a href="kontakt.php">Kontakt</a></li>
  28. <li><a href="hasla.php">Panel haseł</a></li>
  29. </ul>
  30. </div> <!-- end of menu -->
  31.  
  32. </div> <!-- end of banner -->
  33.  
  34. <div id="templatemo_content">
  35.  
  36. <div id="side_column">
  37.  
  38. <div class="side_column_box">
  39.  
  40. <h2><span></span>Menu</h2>
  41.  
  42. <div class="side_column_box_content">
  43. <div class="news_section">
  44. <h3><a href="index.php">Start</a></h3>
  45. <h3><a href="rejestracja.php">Rejestacja</a></h3>
  46. <h3><a href="logowanie.php">Logowanie</a></h3>
  47. <h3><a href="galeria.php">Galeria</a></h3>
  48. <h3><a href="kontakt.php">Kontakt</a></h3>
  49. <h3><a href="hasla.php">Panel haseł</a></h3>
  50.  
  51.  
  52.  
  53. </div>
  54.  
  55. <div class="news_section">
  56.  
  57. </div>
  58.  
  59.  
  60. </div>
  61.  
  62. <div class="bottom"></div>
  63. </div>
  64.  
  65. <div class="side_column_box">
  66.  
  67. <h2><span></span>Statystyka</h2>
  68.  
  69. <div class="side_column_box_content">
  70. <h3>Uzytkownikow :
  71. <?php
  72. $wynik = mysql_query("SELECT * FROM uzytkownicy WHERE id=(SELECT MAX(id) FROM uzytkownicy)")
  73. or die('Błąd zapytania');
  74. if(mysql_num_rows($wynik) > 0) {
  75. while($r = mysql_fetch_assoc($wynik)) {
  76.  
  77. echo $r['id'];
  78. }
  79. }
  80.  
  81. ?> </h3>
  82. <h3>Najnowszy :
  83. <?php
  84. $wynik = mysql_query("SELECT nick FROM uzytkownicy ORDER BY id DESC LIMIT 1")
  85. or die('Błąd zapytania');
  86. if(mysql_num_rows($wynik) > 0) {
  87. while($r = mysql_fetch_assoc($wynik)) {
  88.  
  89. echo $r['nick'];
  90. }
  91. }
  92.  
  93. ?> </h3>
  94. <h3>Najwyzszy poziom:
  95. <?php
  96. $wynik = mysql_query("SELECT poziom FROM konta ORDER BY id DESC LIMIT 1")
  97. or die('Błąd zapytania');
  98. if(mysql_num_rows($wynik) > 0) {
  99. while($r = mysql_fetch_assoc($wynik)) {
  100.  
  101. echo $r['poziom'];
  102. }
  103. }
  104.  
  105. ?> </h3>
  106. <h3>Wersja klienta : 9.71</h3>
  107.  
  108.  
  109.  
  110. <div class="cleaner"></div>
  111. </div>
  112.  
  113. <div class="bottom"></div>
  114. </div>
  115.  
  116.  
  117. </div> <!-- end of side column -->
  118.  
  119. <div id="main_column">
  120.  
  121. <div class="main_column_section">
  122.  
  123.  
  124.  
  125.  
  126. <h2><span></span>Logowanie</h2>
  127. <div class="main_column_section_content">
  128. <p></p>
  129. <div>
  130. <p><?php
  131. include 'config.php';
  132. db_connect();
  133.  
  134. // sprawdzamy czy user nie jest przypadkiem zalogowany
  135. if(!$_SESSION['logged']) {
  136. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  137. if(isset($_POST['name'])) {
  138. // filtrujemy dane...
  139. $_POST['name'] = clear($_POST['name']);
  140. $_POST['password'] = clear($_POST['password']);
  141. // i kodujemy hasło
  142. $_POST['password'] = codepass($_POST['password']);
  143.  
  144. // sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
  145. $result = mysql_query("SELECT `id` FROM `users` WHERE `login` = '{$_POST['name']}' AND `haslo` = '{$_POST['password']}' LIMIT 1");
  146. if(mysql_num_rows($result) > 0) {
  147. // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "id" wstawiamy id usera
  148. $row = mysql_fetch_assoc($result);
  149. $_SESSION['logged'] = true;
  150. $_SESSION['id'] = $row['id'];
  151. echo '<p>Zostałeś zalogowany. Możesz przejść do <a href="hasla.php">panelu haseł</a>.</p>';
  152. } else {
  153. echo '<p>Podany login lub hasło jest nieprawidłowe.</p>';
  154. }
  155. }
  156.  
  157. // wyświetlamy komunikat na zalogowanie się
  158. echo '<form method="post" action="logowanie.php">
  159. <p>
  160. Login:<br>
  161. <input type="text" value="'.$_POST['name'].'" name="name">
  162. </p>
  163. <p>
  164. Hasło:<br>
  165. <input type="password" value="'.$_POST['password'].'" name="password">
  166. </p>
  167. <p>
  168. <input type="submit" value="Zaloguj">
  169. </p>
  170. </form>';
  171. } else {
  172. echo '<p>Jesteś już zalogowany, więc nie możesz się zalogować ponownie.</p>
  173. <p>[<a href="index.php">Powrót</a>]</p>';
  174. }
  175.  
  176. db_close();
  177. ?></p>
  178.  
  179.  
  180. </div>
  181. </div>
  182.  
  183.  
  184.  
  185. <div class="bottom"></div>
  186. </div>
  187.  
  188.  
  189.  
  190. </div><!-- end of main column -->
  191.  
  192. <div class="cleaner"></div>
  193. </div> <!-- end of content -->
  194.  
  195. <div id="templatemo_footer">
  196.  
  197. <div id="templatemo_footer_bar">
  198.  
  199.  
  200.  
  201.  
  202.  
  203. </div>
  204.  
  205. </div> <!-- end of footer -->
  206.  
  207. </div> <!-- end of container -->
  208. </div> <!-- end of container wrapper -->
  209. </body>
  210. </html>
PawelC
Brakuje na samym początku pliku session_start(); powinno być w tym pliku, a nie w tym który includujesz. Jeżeli session_Start() miałeś na początku pliku config.php to nic dziwnego, że wywala Ci błąd, skoro do przeglądarki najpierw są wysyłane dane, dopiero później jest include w którym jest session start.
jeremiash
session_start() ma być na początku każdego z plików, który używa sesji!
flaq1991
dodałem do pliku logowanie na początku sktyptu session start i wyskakuje to :

  1. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/cytrynka/public_html/logowanie.php:8) in /home/cytrynka/public_html/logowanie.php on line 142
  2.  
  3. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/cytrynka/public_html/logowanie.php:8) in /home/cytrynka/public_html/logowanie.php on line 142
PawelC
Oba pliki logowanie.php i config.php zapisałem w Notepad++ z kodowaniem UTF-8 bez boom. W pliku logowanie.php na samym początku dałem session_start(); a z pliku config.php usunąłem te session_Start(); z 59 linii, efekt jest taki, że skrypt śmiga bez problemu.
jeremiash
notepad++ , otwórz nowy plik, ustaw utf-bez BOM i wklej kod. (nowy plik, a nie zmianę kodowania gdy jest już kod). Kiedyś miałem podobny problem i pomogło...
flaq1991
Problem został rozwiązany session_start(); dałem na samym początku całej podstrony smile.gif
Wazniak96
Przeciesz już Ci wcześniej pisali, że musi być na początku...

session_start() i ob_start() zawsze muszą być na początku skryptu zanim jakie kolwiek dane zostaną wczytane. Zapamiętaj.
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.