Инструменты пользователя

Инструменты сайта


software:development:demo:cms:ucms:sample_php_deny_access

4.8 Запрет доступа к содержимому страниц на основе сессий

Введение

Файл index.php

В файле index.php добавляем в строке 3 кода, в список разрешенные страницы добавим users и users_logout.

index.php
  1. <?php
  2. include 'pages/header.php';
  3. $allowed_pages = array('home', 'about', 'contact', 'like', '404' , 'users', 'users_logout');
  4. $page = $_GET['page'] ?? 'home'; // По умолчанию 'home'
  5. ?>
  6. <!-- Здесь основное содержимое нашей страницы -->
  7. <main>

Файл header.php

В файле header.php добавляем в строке 32 кода меню, ссылки на дополнительные страницы, страницу авторизации users и выхода из системы users_logout.

header.php
  1. <nav class="navbar">
  2. <ul>
  3. <ul>
  4. <li><a class="active" href="/">Home</a></li>
  5. <li><a href="index.php?page=about">About</a></li>
  6. <li><a href="index.php?page=contact">Contact</a></li>
  7. <li><a href="index.php?page=users">login</a></li>
  8. <li><a href="index.php?page=users_logout">logout</a></li>

Файл user.php

Создадим user.php

user.php
  1. <?php
  2. echo 'test';
  3. echo '<br/>';
  4. $users = [
  5. ['eva', '123', 'admin_test'],
  6. ['tom', '456', 'admin_test'],
  7. ['bob', '456', 'user_test'],
  8. ['alisa', '789', 'user_test']
  9.  
  10. ];
  11.  
  12. foreach ($users as $user) {
  13. list($name, $pass, $status) = $user;
  14. echo "$name, $pass, $status <br>";
  15. }
  16. ///////
  17. // проверить блокировку по IP
  18. // проверить, что не бот
  19. // вывести капчу
  20.  
  21.  
  22. if ($_SERVER["REQUEST_METHOD"] == "POST") {
  23. $username = $_POST['userform'];
  24. $password = $_POST['passform'];
  25. $err = '';
  26. foreach ($users as $user) {
  27. list($name, $pass, $status) = $user;
  28.  
  29. if ($username === $name && $password === $pass) {
  30. $_SESSION['user_name'] = $name;
  31. $_SESSION['user_status'] = $status;
  32. echo $_SESSION['user_name'] . ", Ваш статус: " . $_SESSION['user_status'] . " <br>";
  33. //header('Location: /auto/profile.php');
  34. //exit();
  35. }
  36. }
  37.  
  38.  
  39.  
  40. $err = '<small class="form-text text-danger mb-2">Неверное имя пользователя или пароль.</small>';
  41. }
  42. else
  43. {
  44. $_SESSION['user_name'] = [];
  45. $_SESSION['user_status'] = 'gost';
  46. echo "Вы не авторизированны, вы - " . $_SESSION['user_status'] . "<br>";
  47. //header('Location: /auto/profile.php');
  48. //exit();
  49. }
  50. ///////
  51. ?>
  52. <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  53. <head>
  54. <meta charset="utf-8">
  55. <!-- запрет автоперевода перевода google translate -->
  56. <meta name="google" content="notranslate">
  57. <!-- отображение файктической ширины экрана для адаптивного дизайна -->
  58. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  59. </head>
  60. <form method="post" >
  61. <center>
  62. <table border=0>
  63. <tr>
  64. <td><label for="userform">Username:</label></td>
  65. <td><input type="text" id="userform" name="userform" maxlength="50" /></td>
  66. </tr> <tr>
  67. <td><label for="passform">Password:</label></td>
  68. <td><input type="password" id="passform" name="passform" /></td>
  69. </tr>
  70. </table><br />
  71. <input type="submit" value="Log in" />
  72. </form>
  73. </html>

Файл user_logout.php

Создадим user_logout.php

user_logout.php
  1. <?php
  2. header('Location: index.php?page=home');
  3. exit();
  4. ?>

Файл about.php

В начале кода about.php.php добавим код разрешения просмотра содержимого

about.php.php
  1. <?php
  2. // блоктровка страниц, если пользователь не авторизирован
  3. echo "Ваш статус: " . $_SESSION['user_status'] . " <br>";
  4. if (!isset($_SESSION['user_status']) || $_SESSION['user_status'] !== 'admin_test' && $_SESSION['user_status'] !== 'user_test')
  5. {
  6. echo 'это недоступная информация';
  7. include '404.php';
  8. exit();
  9. }
  10. echo "Добро пожаловать...";
  11. ?>

Сохраняем и проверяем ссылку http://localhost/index.php?page=about в браузере

Дополнения и Файлы

Только авторизованные участники могут оставлять комментарии.
software/development/demo/cms/ucms/sample_php_deny_access.txt · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki