Ограничить прямой доступ к странице

В попытке защитить администраторскую область сайта, над которым я работаю, я сделал index.php, который содержит

if (isset($_POST['password']) && isset($_POST['userName'])) { if($_POST['password']==$pass && $_POST['userName']==$username) { header( 'Location: admin.php' ) ; } 

Это перенаправляет файл в ту же папку, что и admin.php. Проблема в том, что я могу получить доступ к этому файлу, если я пишу localhost/folder/admin.php . Скажите, пожалуйста, как ограничить прямой доступ к этой странице. Единственный способ получить его – от index.php после имени пользователя и пароля.

установить переменную сеанса и проверять ее каждый раз, когда кто-то получает доступ к admin.php

 <?php if (isset($_POST['password']) && isset($_POST['userName'])) { if ($_POST['password'] == $pass && $_POST['userName'] == $username) { if (!session_id()) session_start(); $_SESSION['logon'] = true; header('Location: admin.php'); die(); } ?> 

а также

 //admin.php if (!session_id()) session_start(); if (!$_SESSION['logon']){ header("Location:index.php"); die(); } 

Вы должны изучить PHP-сессии. Вы можете установить переменную сеанса «isLogged» в этом файле перенаправления, а затем проверить в admin.php, если эта переменная сессии зарегистрирована, если не перенаправляется на страницу входа!

 session_start(); if (isset($_POST['password']) && isset($_POST['userName'])) { if($_POST['password']==$pass && $_POST['userName']==$username) { header( 'Location: admin.php' ) ; $_SESSION['isLogged'] = true; } 

admin.php

 session_start(); if(!$_SESSION['isLogged']) { header("location:login.php"); die(); } 

Примечание: session_start (); должен быть вызван до того, как глобальный $ _SESSION может быть использован.

Задайте значение сеанса, которое означает, что пользователь успешно выполнил вход в систему, проверьте его на каждой странице, которую вы хотите защитить, переадресовываете на логин, если это значение не задано.