Как заблокировать прямой доступ к моему файлу php

У меня есть следующие файлы с потоком:

index.html -> login.php -> displayinbox.php

Файлы login.php подтверждают пользователей из базы данных и перенаправляют в файл displayinbox.php.

Проблема в том, что если кто-то просто набирает прямую ссылку на страницу displayinbox.php, скрипт на странице запускается.

Как я могу остановить это? Я попытался определить и определить метод, но он работает только для включенных файлов, я думаю. любая помощь?

3 ответа

Используйте значение сеанса, чтобы отслеживать, вошел ли пользователь в систему. Если !$_SESSION['whatever'], перенаправьте их на страницу индекса / входа.

Пример:

login.php

session_start();
/* login code here */
$_SESSION['logged_in'] = true;

displayinbox.php

session_start();
if (!$_SESSION['logged_in']) {
    header("Location: login.php");
    exit;
}

Есть много способов сделать это. Включите login.php в верхней части вашего displayinbox.php и POST_SELF или после входа в систему, установите сеансовые куки и проверьте это в верхней части страницы displayinbox.php.

Это очень открытый вопрос о безопасности, который требует больше, чем может дать любой ответ. на самом простом уровне, установка $_SESSION переменная, как я бы пошел.

если вы используете шаблон MVC, имейте Secure_Controller что все контроллеры, которым требуется пароль доступа для расширения от. Если вы не используете MVC или какой-либо шаблон, вам нужно будет включить скрипт на каждую страницу, которую вы хотите защитить паролем.

login.php

<?php
//check username and pw against the database
if($passwordAndUsername == 'good'){
    $_SESSION['loggedIn'] = 'yes';
}
?>

securityCheck.php

<?php
if($_SESSION['loggedIn'] != 'yes'){
    $message = 'you must log in to see this page.';
    header('location:login.php');
}
?>

включите securityCheck.php в начале любой страницы, защищенной паролем.

Другие вопросы по тегам