Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Błąd: headers already sent by
dantekir
post 22.08.2005, 23:14:00
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 14.06.2004
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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


--------------------
...albo jesteś zerem albo jedynką ;)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
DreeD
post 23.08.2005, 00:22:11
Post #2





Grupa: Przyjaciele php.pl
Postów: 120
Pomógł: 0
Dołączył: 29.11.2003
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
TomASS
post 23.08.2005, 00:39:38
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
dantekir
post 23.08.2005, 00:50:24
Post #4





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 14.06.2004
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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


--------------------
...albo jesteś zerem albo jedynką ;)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:52