Aby zablokować dostęp do określonych stron w serwisie (np. oferta.php
), wymagając wcześniejszego zalogowania się w pliku index.php
, możesz zastosować mechanizm sesji PHP oraz przekierowywanie użytkowników na stronę logowania. Oto kroki, jak to zrobić:
1. Stwórz system logowania
Najpierw musisz stworzyć formularz logowania i skrypt, który będzie autoryzował użytkowników. Przykład może wyglądać tak:
Formularz logowania (index.php
)
<?php session_start(); // Rozpoczynamy sesję // Sprawdzamy, czy użytkownik już jest zalogowany if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) { header('Location: oferta.php'); // Przekierowanie do strony po zalogowaniu exit; } // Obsługa logowania po wysłaniu formularza if ($_SERVER['REQUEST_METHOD'] == 'POST') { $username = $_POST['username']; $password = $_POST['password']; // Proste sprawdzenie danych logowania (przykładowy login: user, hasło: password) if ($username === 'user' && $password === 'password') { $_SESSION['loggedin'] = true; // Ustawiamy flagę zalogowania header('Location: oferta.php'); // Przekierowanie po zalogowaniu exit; } else { $error = 'Niepoprawna nazwa użytkownika lub hasło.'; } } ?> <!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Logowanie</title> </head> <body> <h2>Logowanie</h2> <?php if (isset($error)) echo "<p style='color:red;'>$error</p>"; ?> <form method="post" action="index.php"> <label for="username">Login:</label> <input type="text" name="username" id="username" required><br> <label for="password">Hasło:</label> <input type="password" name="password" id="password" required><br> <button type="submit">Zaloguj się</button> </form> </body> </html>
2. Zabezpiecz dostęp do plików (oferta.php
)
Następnie, w pliku oferta.php
należy sprawdzić, czy użytkownik jest zalogowany, zanim wyświetlimy zawartość strony. Jeśli nie jest, przekierujemy go do formularza logowania.
Plik zabezpieczony (oferta.php
)
<?php session_start(); // Rozpoczęcie sesji // Sprawdzamy, czy użytkownik jest zalogowany if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) { header('Location: index.php'); // Przekierowanie do strony logowania, jeśli nie jest zalogowany exit; } ?> <!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Oferta</title> </head> <body> <h1>Oferta</h1> <p>Witaj na stronie z ofertą, dostępnej tylko po zalogowaniu.</p> </body> </html>
3. Dodaj opcję wylogowania
Możesz dodać opcję wylogowania, aby użytkownik mógł się wylogować i zakończyć sesję.
Plik logout.php
<?php session_start(); $_SESSION = array(); // Wyczyszczenie wszystkich zmiennych sesji session_destroy(); // Zniszczenie sesji header('Location: index.php'); // Przekierowanie na stronę logowania po wylogowaniu exit; ?>
4. Podsumowanie
index.php
: formularz logowania i obsługa uwierzytelniania.oferta.php
: strona zabezpieczona sesją, dostępna tylko po zalogowaniu.logout.php
: wylogowanie użytkownika poprzez zniszczenie sesji.
Upewnij się, że dane logowania są przechowywane bezpiecznie (np. w bazie danych z zahashowanymi hasłami) oraz że sesje są zabezpieczone, aby chronić użytkowników przed atakami na sesję.