Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt logowania - Sesje
lukaszphp
post 6.02.2010, 18:38:37
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 1
Dołączył: 29.11.2009

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
tehaha
post 6.02.2010, 19:35:10
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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.
Go to the top of the page
+Quote Post
lukaszphp
post 6.02.2010, 19:43:03
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 1
Dołączył: 29.11.2009

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


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
Go to the top of the page
+Quote Post
gothye
post 6.02.2010, 19:43:45
Post #4





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


albo dodaj : ob_start();     przed session_start(); 









--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
furman12
post 6.02.2010, 19:56:40
Post #5





Grupa: Zarejestrowani
Postów: 118
Pomógł: 4
Dołączył: 3.12.2009

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


BOM
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: 14.08.2025 - 07:36