software:development:demo:cms:ucms:sample_php_deny_access
Содержание
4.8 Запрет доступа к содержимому страниц на основе сессий
Введение
Файл index.php
В файле index.php добавляем в строке 3 кода, в список разрешенные страницы добавим users и users_logout.
- index.php
- <?php
- include 'pages/header.php';
- $page = $_GET['page'] ?? 'home'; // По умолчанию 'home'
- ?>
- <!-- Здесь основное содержимое нашей страницы -->
- <main>
Файл header.php
В файле header.php добавляем в строке 32 кода меню, ссылки на дополнительные страницы, страницу авторизации users и выхода из системы users_logout.
- header.php
- <nav class="navbar">
- <ul>
- <ul>
- <li><a class="active" href="/">Home</a></li>
- <li><a href="index.php?page=about">About</a></li>
- <li><a href="index.php?page=contact">Contact</a></li>
- <li><a href="index.php?page=users">login</a></li>
- <li><a href="index.php?page=users_logout">logout</a></li>
Файл user.php
Создадим user.php
- user.php
- <?php
- echo 'test';
- echo '<br/>';
- $users = [
- ['eva', '123', 'admin_test'],
- ['tom', '456', 'admin_test'],
- ['bob', '456', 'user_test'],
- ['alisa', '789', 'user_test']
- ];
- foreach ($users as $user) {
- echo "$name, $pass, $status <br>";
- }
- ///////
- // проверить блокировку по IP
- // проверить, что не бот
- // вывести капчу
- if ($_SERVER["REQUEST_METHOD"] == "POST") {
- $username = $_POST['userform'];
- $password = $_POST['passform'];
- $err = '';
- foreach ($users as $user) {
- if ($username === $name && $password === $pass) {
- $_SESSION['user_name'] = $name;
- $_SESSION['user_status'] = $status;
- echo $_SESSION['user_name'] . ", Ваш статус: " . $_SESSION['user_status'] . " <br>";
- //header('Location: /auto/profile.php');
- //exit();
- }
- }
- $err = '<small class="form-text text-danger mb-2">Неверное имя пользователя или пароль.</small>';
- }
- else
- {
- $_SESSION['user_name'] = [];
- $_SESSION['user_status'] = 'gost';
- echo "Вы не авторизированны, вы - " . $_SESSION['user_status'] . "<br>";
- //header('Location: /auto/profile.php');
- //exit();
- }
- ///////
- ?>
- <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta charset="utf-8">
- <!-- запрет автоперевода перевода google translate -->
- <meta name="google" content="notranslate">
- <!-- отображение файктической ширины экрана для адаптивного дизайна -->
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- </head>
- <form method="post" >
- <center>
- <table border=0>
- <tr>
- <td><label for="userform">Username:</label></td>
- <td><input type="text" id="userform" name="userform" maxlength="50" /></td>
- </tr> <tr>
- <td><label for="passform">Password:</label></td>
- <td><input type="password" id="passform" name="passform" /></td>
- </tr>
- </table><br />
- <input type="submit" value="Log in" />
- </form>
- </html>
Файл user_logout.php
Создадим user_logout.php
- user_logout.php
- <?php
- ?>
Файл about.php
В начале кода about.php.php добавим код разрешения просмотра содержимого
- about.php.php
- <?php
- // блоктровка страниц, если пользователь не авторизирован
- echo "Ваш статус: " . $_SESSION['user_status'] . " <br>";
- if (!isset($_SESSION['user_status']) || $_SESSION['user_status'] !== 'admin_test' && $_SESSION['user_status'] !== 'user_test')
- {
- echo 'это недоступная информация';
- include '404.php';
- }
- echo "Добро пожаловать...";
- ?>
Сохраняем и проверяем ссылку http://localhost/index.php?page=about в браузере
Дополнения и Файлы
Только авторизованные участники могут оставлять комментарии.
software/development/demo/cms/ucms/sample_php_deny_access.txt · Последнее изменение: — VladPolskiy

