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ę.