Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt logowania - Sesje
Forum PHP.pl > Forum > PHP
lukaszphp
Witam serdecznie, napisałem skrypt, który ma za zadanie udostępnić stronę tylko zalogowanemu użytkownikowi (w tym wypadku będzie to administrator). Informacje o jego loginie i haśle są dostępne w stałych LOGIN i PASSWORD. Sęk w tym, że przy odpaleniu skryptu wyświetlają mi się dwa błędy, oto ich treść:

  1. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\cms\index.php:1) in C:\xampp\htdocs\cms\index.php on line 4
  2.  
  3. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\cms\index.php:1) in C:\xampp\htdocs\cms\index.php on line 4


A to sam skrypt:

  1. <?php
  2.  
  3. // Uruchomienie obsługi sesji
  4.  
  5. ?>
  6.  
  7. <html>
  8. <head>
  9. <title>Logowanie do panelu administratora</title>
  10. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  11. <meta name="author" content="lukaszphp" />
  12. <style type="text/css">
  13. body {
  14. margin: 10px auto;
  15. text-align: center;
  16. font: 13px Arial, Verdana, Helvetica, sans-serif;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21.  
  22. <?php
  23.  
  24. // Sprawdzenie czy użytkownik jest już zalogowany
  25. if ($_SESSION["authuser"] == true) {
  26. // Jeśli tak wyświetlenie pliku admin.php, w którym znajduję się strona widoczna
  27. // tylko dla zalogowanego użytkownika
  28. require_once("main.php");
  29. echo "\n</body>\n</html>";
  30. }
  31.  
  32. // Definiujemy stałe, które posłużą jako login i hasło
  33. define("LOGIN", "admin");
  34. define("PASSWORD", "demo");
  35.  
  36. // Funkcja wyświetlająca formularz
  37. function loginForm($alert = NULL) {
  38. // Formularz HTML
  39. echo "<form action=\"index.php\" method=\"post\">";
  40. echo "<table align=\"center\" cellpadding=\"5\">";
  41. echo "<tr><td>Login:</td><td><input type=\"text\" name=\"login\" /></td></tr>";
  42. echo "<tr><td>Hasło:</td><td><input type=\"password\" name=\"password\" /></td></tr>";
  43. echo "<tr><td colspan=\"2\" align=\"center\"><button type=\"submit\">Zaloguj</button></td></tr>";
  44. echo "</table>";
  45. echo "<input type=\"hidden\" name=\"formSent\" />";
  46. echo "</form>";
  47.  
  48. // Ew. wyświetlenie wiadomości informujące użytkownika o popełnionym błędzie
  49. if ($alert != NULL)
  50. echo "<p style=\"color: #ff0000\">$alert</p>";
  51. }
  52.  
  53. // Wyświetlenie formularza logowania
  54. if (!isset($_POST["formSent"]))
  55. loginForm();
  56. else {
  57. // Sprawdzenie czy wpisany został login
  58. if ($_POST["login"]) {
  59. // Sprawdzenie czy wpisane zostało hasło
  60. if ($_POST["password"]) {
  61. // Sprawdzenie czy dane są prawidłowe
  62. $login = $_POST["login"];
  63. $password = $_POST["password"];
  64.  
  65. if ($login === LOGIN and $password === PASSWORD) {
  66. // Ustawienie sesji informujące, że użytkownik jest zalogowany
  67. $_SESSION["login"] = $login;
  68. $_SESSION["password"] = $password;
  69. $_SESSION["authuser"] = true;
  70.  
  71. // Wyświetlenie informacji użytkownikowi, że został zalogowany oraz przeładowanie strony
  72. echo "<div style=\"margin: 10px auto; padding: 10px; text-align: center; border: 1px dotted; width: 500px;\">";
  73. echo "Dziękuję za zalogowanie się użytkowniku <strong>" . $_SESSION["login"] . "</strong>!<br />";
  74. echo "Proszę czekać, trwa przekierowanie...";
  75. // Odświeżenie strony
  76. echo "<meta http-equiv=\"refresh\" content=\"2\" />";
  77. echo "</div>";
  78. } else
  79. loginForm("Dane są nieprawidłowe!");
  80. } else
  81. loginForm("Wpisz swoje hasło!");
  82. } else
  83. loginForm("Wpisz swój login!");
  84. }
  85.  
  86. ?>
  87.  
  88. </body>
  89. </html>


Z góry dziękuję za pomoc w odnalezieniu błędu, miło widziane będą również uwagi co w poprawić w kodzie.
Pozdrawiam, lukaszphp.
tehaha
session_start() daj od razu na samym początku, upewnij się że przed <?php nie ma żadnej spacji , jeżeli dalej będzie błąd spróbuj zapisać plik php bez BOM, bo może Twój serwer go nie akceptuje.
lukaszphp
Tak się składa, że korzystam z Notepad++ i miałem ustawione kodowanie na UTF-8, zamieniłem na UTF-8 (bez BOM) i już jest ok, dzięki smile.gif Ale jeszcze jedno pytanie, co to jest te BOM?

P.S Skrypt śmiga, aż miło tongue.gif
gothye
albo dodaj : ob_start();     przed session_start(); 







furman12
BOM
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.