Jak zablokować stronę www hasłem, tak aby nie można było wejść bezpośrednio w plik tylko po wcześniejszym zalogowaniu

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

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl