![]() |
[PHP] Logowanie na plikach - Wersja do druku +- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl) +-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www) +--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych) +--- Wątek: [PHP] Logowanie na plikach (/thread-php-logowanie-na-plikach) |
[PHP] Logowanie na plikach - kadobe - 23-08-2013 Witam, usiłuję napisać prosty skrypt do logowania na stronę. Cały czas gdzieś jednak popełniam błąd i cały "system" nie chce działać, proszę o sprawdzenie. - login.php - procedura logowania - form.php - formularz logowania - main.php - strona dostępna po zalogowaniu - logout.php - procedura wylogowania - passwords.txt - plik przechowujący dane logowania login.php <?php function checkPass($user, $pass) { if(!$fd = fopen("passwords.txt", "r")) return 1; $result = 2; while (!feof ($fd)){ $line = trim(fgets($fd)); $arr = explode(":", $line); if(count($arr) < 2) continue; if($arr[0] != $user) continue; if($arr[1] == $pass){ $result = 0; } break; } fclose($fd); return $result; } session_start(); if(isset($_SESSION['zalogowany'])){ header("Location: main.php"); } else if(!isset($_POST["haslo"]) || !isset($_POST["user"])){ $_SESSION['komunikat'] = "Wprowadź nazwę i hasło użytkownika."; include('form.php'); } else{ $val = checkPass($_POST["user"], $_POST["haslo"]); if($val == 0){ $_SESSION['zalogowany'] = $_POST["user"]; header("Location: main.php"); } else if($val == 1){ $_SESSION['komunikat'] = "Błąd serwera. Zalogowanie nie było możliwe."; include('form.php'); } else{ $_SESSION['komunikat'] = "Błąd serwera. Zalogowanie nie było możliwe."; include('form.php'); } } ?> form.php <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Logowanie</title> </head> <body> <div> <div style="font-size:16pt"> <?php if(isset($_SESSION['komunikat'])) echo $_SESSION['komunikat']; else echo "Wprowadź nazwę i hasło użytkownika."; ?> </div> <form action = "login.php" methood = "POST"> <table> <tr> <td>Użytkownik:</td> <td> <input type="text" name="user"> </td> </tr> <tr> <td>Hasło:</td> <td> <input type="password" name="haslo"> </td> </tr> <tr> <td colspan="2" style="text-align:center;"> <input type="submit" value="Zaloguj"> </td> </tr> </table> </form> </div> </body> </html> main.php <?php session_start(); if(!isset($_SESSION['zalogowany'])){ $_SESSION['komunikat'] = "Nie jesteś zalogowany!"; include('form.php'); exit(); } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Lista plików</title> </head> <body> Jesteś zalogowany jako: <?php echo $_SESSION['zalogowany'] ?> <br /> <a href="logout.php">Wyloguj</a> </body> </html> logout.php <?php session_start(); if(!isset($_SESSION['zalogowany'])){ $komunikat = "Nie jesteś zalogowany!"; } else{ unset($_SESSION['zalogowany']); $komunikat = "Wylogowanie prawidłowe!"; } session_destroy(); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Wylogowanie</title> </head> <body> <?php echo $komunikat ?> </body> </html> passwords.txt admin:qwerty RE: [PHP] Logowanie na plikach - msx83 - 23-08-2013 Hej. Wydaje mi się, że chodzi o Czeski błąd w pliku form, a mianowicie w linijce: Cytat:<form action = "login.php" methood = "POST">masz zapisane "method" przez dwa o. I z automatu wysyła Ci dane przez GET a nie przez POST. Pozdrawiam. |