Как заблокировать прямой доступ к моему файлу 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 в начале любой страницы, защищенной паролем.