Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd: headers already sent by
Forum PHP.pl > Forum > Przedszkole
dantekir
Witam,
Chciałbym stworzyć typwową stronkę z możliwością utrzymania na niej własnego konta czyli problem: logowanie smile.gif

mam trzy pliki:
dziennik.php - w nim mam wstawiony poprzez include plik logowanie.php który wygląda tak:
  1. <?
  2.  
  3. function piszformularz() //funkcja rysująca formularz logowania
  4. {
  5. $dane = unserialize(base64_decode(urldecode($_GET['d'])));
  6. $bug = $dane['bug'];
  7. echo "<h1 class="pdark">".$bug."</h1>";
  8. echo "<form action="chek_log.php" method="post" class="pdark">";
  9. echo "<table border="0" cellpadding="5" cellspacing="5">";
  10. echo "<tr><td class="pdark">Login:</td><td align="right"><input type="text" name="nick" tabindex="0" /><br /></td></tr>";
  11. echo "<tr><td class="pdark">Hasło:</td><td align="right"><input type="password" name="pass" tabindex="0" /><br /></td></tr>";
  12. echo "<tr><td>&nbsp;</td><td align="right"><input type="submit" value="Zaloguj się" /></td></tr></table>";
  13. echo "<input type='hidden' name='adr' value='".$_SERVER['PHP_SELF']."' tabindex=0 /></form>";
  14.  
  15. }
  16.  
  17.  
  18.  
  19.  
  20. if (isset($_SESSION['nick'])) {
  21. //jeżeli zmienna sesyjna zarejestrowana - zalogowany
  22.  
  23. echo $_SESSION['nick']."<br>";
  24.  
  25. }
  26. else {
  27. //jeżeli zmienna sesyja nie zarejestrowana - nie zalogowany lub konto nieaktywne
  28. //wprowadzić formularz logowania
  29.  
  30. piszformularz();
  31.  
  32. }
  33.  
  34. ?>


Formularz logowania przesyła nick i pass do pliku chek_log.php który wygląda tak:

  1. <?
  2. $adres=$HTTP_POST_VARS['adr'];
  3. $nick=$HTTP_POST_VARS['nick'];
  4. $pass=$HTTP_POST_VARS['pass'];
  5.  
  6. //echo $adres;
  7.  
  8. include 'config.php';
  9. $sql = mysql_connect ($host ,$user_b ,$password_b);
  10. $wybierz = mysql_select_db($db_nazwa);
  11. $zapytanie = "SELECT * FROM `autor` WHERE `nick`='".$nick."' AND `pass`='".$pass."'";//dodac aktywacja?
  12. $wykonaj = mysql_query($zapytanie);
  13. $znaleziono = mysql_num_rows($wykonaj);
  14.  
  15.  
  16. if ($znaleziono == "0") {
  17.  
  18.  //$bug="Podałeś błędny login lub hasło!";
  19. //$dane = array('bug' => $bug, 'nick' => $nick);
  20. //$dane = urlencode(base64_encode(serialize($dane)));
  21. header('Location:http://127.0.0.1/pobudka/dziennik.php');//.$adres);
  22.  
  23. }else //jeśli nick i pass jest ok
  24. {
  25.  
  26.  
  27. while($wiersz = mysql_fetch_array($wykonaj))
  28. {
  29. $_SESSION['pass']=$wiersz['pass'];
  30. $_SESSION['nick']=$wiersz['nick'];
  31. $_SESSION['data_ur']=$wiersz['data_ur'];
  32. $_SESSION['mail']=$wiersz['mail'];
  33. $_SESSION['imie_nazwisko']=$wiersz['imie_nazwisko'];
  34. $_SESSION['info']=$wiersz['info'];
  35. $_SESSION['aktywacja']=$wiersz['aktywacja'];
  36. }
  37.  
  38. //$dane = array('nick' => $nick, 'pass' => $pass);
  39. //$dane = urlencode(base64_encode(serialize($dane)));
  40. header('Location: '.$adres);
  41.  
  42. }
  43.  
  44.  
  45.  
  46.  
  47. ?>


proszę oczywiście nie zwracać uwagi na kometarze smile.gif

problem polega na tym że gdy wpiszę dobre dane potrzebne do zalogowania ty wywala mi:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at e:\usr\apache\httpd\html\pobudka\chek_log.php:2) in e:\usr\apache\httpd\html\pobudka\chek_log.php on line 28

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at e:\usr\apache\httpd\html\pobudka\chek_log.php:2) in e:\usr\apache\httpd\html\pobudka\chek_log.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at e:\usr\apache\httpd\html\pobudka\chek_log.php:2) in e:\usr\apache\httpd\html\pobudka\chek_log.php on line 42




a gdy wpiszę złe dane to zamiast wrócić do strony z formularzem logowania wywala mi błąd:

Warning: Cannot modify header information - headers already sent by (output started at e:\usr\apache\httpd\html\pobudka\chek_log.php:2) in e:\usr\apache\httpd\html\pobudka\chek_log.php on line 22


Co robię źle? smile.gif

Prosze o pomoc bo niezasnę dzisiaj winksmiley.jpg
DreeD
Chodzi o to że do przeglądarki zostały już wysłane jakieś nagłówki (header'y).
session_start(); umieść na samym poczatku dokumentu (zaraz po <?php). To powinno pomoc.
TomASS
To może być też przyczyną pliku config.php - jak on wygląda? Chodzi tutaj niewątpliwie o headery - nagłówki. Spróbuj podglądnąć co zostało wysłane do przeglądarki (Widok->Źródło w IE) Tak na pierwszy rzut oka to jedna z tych dwóch rzeczy:
- session_start() - BTW: bardzo dziwnie działa przy wysłyaniu nagłówków
- config.php - jeśli nie wyrzuca nic do przeglądarki to znaczy, że to nie to

P.S.

  1. <?php
  2.  
  3. while($wiersz = mysql_fetch_array($wykonaj))
  4. {
  5. $_SESSION['pass']=$wiersz['pass'];
  6.  
  7. ?>


Możesz zastąpić :
  1. <?php
  2.  
  3. $wiersz = mysql_fetch_array($wykonaj);
  4.  
  5. ?>


No chyba, że istnieje możliwość, że kilka użytkowników ma ten sam login i hasło winksmiley.jpg

Pozdrawiam
dantekir
Dzięki smile.gif
faktycznie problem leżał po stronie pliku config.php smile.gif
który miał deklaracje mety :/

już go rozwiązałem i właśnie ide się zadowolony położyć w końcu do wyra winksmiley.jpg

dzięki za odpowiedź i podpowiedź smile.gif
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.