Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Logowanie
Forum PHP.pl > Forum > Przedszkole
Mike122
Przerobiłem sobie pewien skrypt logowania który był oparty o pliki ja go przerobiłem żeby był obsługiwany przez MySQL.
  1. <?php
  2.  
  3. ini_set( 'session.use_cookies', 1 );
  4.  
  5.  mysql_connect ("localhost", "root", "pass") or 
  6.  die ("Błąd połączenia");
  7.  mysql_select_db ("mycms") or 
  8.  die ("Nie można połączyć się z bazą");
  9.  
  10. if( !empty( $_POST['login'] ) && $_POST['haslo'] )
  11. {
  12. //us
  13. $query = mysql_query("SELECT * FROM users WHERE ksywa = '{$_POST['login']}'");
  14.  if (mysql_num_rows($query) < 1) {
  15. print "Brak loginu ".$_POST['login']." w bazie";
  16.  }else{
  17.  $querypass = mysql_query("SELECT * FROM users WHERE ksywa = '{$_POST['login']}' and pass = '{$_POST['haslo']}'");
  18. if (mysql_num_rows($querypass) < 1) {
  19. print "Nie poprawne hasło";
  20. }else{
  21. $rekord = mysql_fetch_assoc ($querypass);
  22.  $_SESSION['user'] = $_POST['login'];
  23.  $_SESSION['status'] = $rekord['statususer'];
  24. header( 'Location: '. $_POST['from'] ); //przekierowanie
  25.  
  26. }
  27.  }
  28.  
  29. }
  30. elseif( $_GET['def'] == 'logout' )
  31. {
  32. session_destroy( ); // zniszczenie sesji = wylogowanie
  33. header( 'Location: '. $_SERVER['HTTP_REFERER'] ); // przekierowanie
  34. }
  35. else
  36. {
  37. header( 'Location: '. $_SERVER['HTTP_REFERER'] ); // przekierowanie
  38. }
  39.  
  40. ?>

Jednak w skrycie tym mam błędy i nie wiem jak sobie z nimi poradzić:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /httpd/mycms/logowanie/login.php:1) in /httpd/mycms/logowanie/login.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at /httpd/mycms/logowanie/login.php:1) in /httpd/mycms/logowanie/login.php on line 26

Proszę o pomoc.
Formularz logowania wygląda tak:
  1. <?php
  2. // krok 1
  3. ini_set( 'session.use_cookies', 1 );
  4. // krok 2
  5.  
  6. if( !isset( $_SESSION['user'] ) )
  7. {
  8. // krok 3
  9. formularz();
  10. define( 'STATUS', 'g' );
  11. }
  12. else
  13. {
  14. // krok 4
  15. echo "Witaj ". $_SESSION['user'] .'<br>';
  16. echo '<a href="login.php?def=logout">Wyloguj mnie</a>';
  17. print $_SESSION['status'];
  18. define( 'STATUS', $_SESSION['status'] );
  19. }
  20.  
  21. function formularz()
  22. {
  23. echo "<form method='POST' action='login.php'>";
  24. echo "Login<input type='text' name='login'><br>";
  25. echo "Haslo<input type='password' name='haslo'>";
  26. echo "<input type='hidden' name='from' value='". $_SERVER['PHP_SELF'] ."'>";
  27. echo "<input type='submit' value='ok'></form>";
  28. }
  29. ?>
gebp
Z tego co wiem to sesje powinno się zaczynać na samym początku.
Cytat
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /httpd/mycms/logowanie/login.php:1) in /httpd/mycms/logowanie/login.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at /httpd/mycms/logowanie/login.php:1) in /httpd/mycms/logowanie/login.php on line 26


Jeżeli chodzi o powyższe to użyj ob_start();

czyli plik php winien wyglądać

  1. <?php
  2.  
  3. ... // kod
  4.  
  5. ?>
Mike122
Niestety, zrobiłem tak jak piszesz ale nadal to samo sad.gif
mort
a czy przed rozpoczeciem kodu php wysylasz cokolwiek questionmark.gif np kawalek kodu html??
session_start() powinno sie znalezc przed jakimkolwiek kodem ...
Mike122
Na początku kodu php nie ma żadnych innych funkcji można to zobaczyć w załączonych przeze mnie kodach.


Próbowałem także dawać:
  1. <?php
  2. ini_set( 'session.use_cookies', 1 );
  3. ?>

Na samym początku.
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.