За последние 24 часа нас посетили 22402 программиста и 1059 роботов. Сейчас ищут 690 программистов ...

Ограничить просмотр страницы после выхода из профиля

Тема в разделе "Сделайте за меня", создана пользователем Яна Литвинова, 25 авг 2022.

  1. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    После авторизации под логином администратора выходит страница с итоговой таблицей с результатами тестирования всех пользователей (admin.php), если вернутся на страницу с профилем (profile.php) и нажать кнопку выйти, и потом опять вернутся на страницу admin.php то таблица все еще будет активной. Как это избежать? Чтобы после выхода из профиля страница admin.php перестала отображаться. Подскажите какие есть способы и методы обойти это? Заранее большое спасибо!
    Код страницы admin.php:
    PHP:
    1. <?php
    2.     include_once  'db.php';
    3.     $res = $db->query("SELECT * FROM users");
    4.  
    5.     // Удаление файлов предыдущего сеанса
    6.     if ($handle = opendir('.')) {
    7.       while (false !== ($entry = readdir($handle))) {
    8.           if ($entry != "." && $entry != "..") {
    9.             if (preg_match('#[\d._]+users.csv#', $entry)) {
    10.               unlink($entry);
    11.             }
    12.           }
    13.       }
    14.       closedir($handle);
    15.   }
    16.  
    17.     $fileName = date('d') . "." .  date('m') . "." . date('Y') . "_" . time() . "_users.csv";
    18.  
    19.     $users = [];
    20.     $users[0]['full_name'] = "ФИО";
    21.     $users[0]['sex'] = "Пол";
    22.     $users[0]['gender'] = "С кем проживаю";
    23.     $users[0]['relatives'] = "Братья/Сестры";
    24.     $users[0]['performance'] = "Успеваемость";
    25.     $users[0]['cat21'] = "Подшкала Депрессия";
    26.     $users[0]['cat22'] = "Подшкала Тревога";
    27.     $users[0]['cat23'] = "Подшкала Стресс";
    28.     $users[0]['cat24'] = "Подшкала Эмоциональные симптомы";
    29.     $users[0]['cat25'] = "Подшкала Проблемы поведения";
    30.     $users[0]['cat26'] = "Подшкала Гиперактивность";
    31.     $users[0]['cat27'] = "Подшкала Проблемы отношений со сверстниками";
    32.     $users[0]['cat28'] = "Подшкала Просоциальное поведение";
    33.     $users[0]['cat29'] = "Шкала оценки намеренного";
    34.  
    35.     foreach ($res as $key => $row) {
    36.       $users[$key + 1]['full_name'] = $row['full_name'];
    37.       $users[$key + 1]['sex'] = $row['sex'];
    38.       $users[$key + 1]['gender'] = $row['gender'];
    39.       $users[$key + 1]['relatives'] = $row['relatives'];
    40.       $users[$key + 1]['performance'] = $row['performance'];
    41.       $users[$key + 1]['cat21'] = $row['cat21'];
    42.       $users[$key + 1]['cat22'] = $row['cat22'];
    43.       $users[$key + 1]['cat23'] = $row['cat23'];
    44.       $users[$key + 1]['cat24'] = $row['cat24'];
    45.       $users[$key + 1]['cat25'] = $row['cat25'];
    46.       $users[$key + 1]['cat26'] = $row['cat26'];
    47.       $users[$key + 1]['cat27'] = $row['cat27'];
    48.       $users[$key + 1]['cat28'] = $row['cat28'];
    49.       $users[$key + 1]['cat29'] = $row['cat29'];
    50.     }
    51.  
    52.   $file = fopen($fileName, 'w');
    53.   foreach ($users as $line) {
    54.     fputcsv($file, $line, ";");
    55. }
    56.  
    57. fclose($file)
    58.  
    59. ?>
    60.  
    61. <!doctype html>
    62. <html lang="ru">
    63. <head>
    64.     <meta charset="UTF-8">
    65.     <meta name="viewport"
    66.           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    67.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
    68.     <title>Система тестирования</title>
    69.     <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    70.     <link rel="stylesheet" href="assets/css/app.css">
    71.     <style>
    72.       table { border-collapse: collapse;}
    73.       th, td { padding: 3px; border: 1px solid black; }
    74.     </style>
    75. </head>
    76. <body>
    77.   <div class="container">
    78.     <div class="row justify-content-center">
    79.         <h1>Все пользователи</h1>
    80.     <table>
    81.  
    82.         <tr>
    83.           <?php foreach ($users as $user): ?>
    84.           <td> <?= $user['full_name']; ?> </td>
    85.           <td> <?= $user['sex']; ?> </td>
    86.           <td> <?= $user['gender']; ?> </td>
    87.           <td> <?= $user['relatives']; ?> </td>
    88.           <td> <?= $user['performance']; ?> </td>
    89.           <td> <?= $user['cat21']; ?> </td>
    90.           <td> <?= $user['cat22']; ?> </td>
    91.           <td> <?= $user['cat23']; ?> </td>
    92.           <td> <?= $user['cat24']; ?> </td>
    93.           <td> <?= $user['cat25']; ?> </td>
    94.           <td> <?= $user['cat26']; ?> </td>
    95.           <td> <?= $user['cat27']; ?> </td>
    96.           <td> <?= $user['cat28']; ?> </td>
    97.           <td> <?= $user['cat29']; ?> </td>
    98.           </tr>
    99.           <?php endforeach; ?>
    100.     </table>
    101.     <br>
    102.     <p>
    103.       <a href="index.php">Назад</a>
    104.     </p>
    105.  
    106.     <a href="<?= $fileName ?>" download="">
    107.       <button>Скачать файл</button>
    108.     </a>
    109.   </div>
    110. </div>
    111. <p>
    112.   <a href="info.html">Связаться со мной</a>
    113. </p>
    114.  
    115.     <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
    116.     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    117.     <script src="js/app.js"></script>
    118. </body>
    119. </html>
    Код страницы profile.php:
    PHP:
    1. <?php
    2. if (!$_SESSION['user']) {
    3.     header('Location: /');
    4. }
    5.  
    6. ?>
    7. <!doctype html>
    8. <html lang="en">
    9. <head>
    10.     <meta charset="UTF-8">
    11.     <title>Авторизация и регистрация</title>
    12.     <link rel="stylesheet" href="assets/css/main.css">
    13.     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    14. </head>
    15. <body>
    16.  
    17.     <!-- Профиль -->
    18.  
    19.     <form action="test.php?<?php echo $_SESSION['user']['id'] ?>">
    20.         <img src="<?= $_SESSION['user']['avatar'] ?>" width="200" alt="">
    21.         <h2 style="margin: 10px 0;"><?= $_SESSION['user']['full_name'] ?></h2>
    22.         <a href="#"><?= $_SESSION['user']['email'] ?></a>
    23.         <button type="submit" class="btn btn-primary btn-lg" id="user" style="background:#0B5ED7; color:#FFFFFF">Начать тестирование</button>
    24.         <a href="vendor/logout.php" class="logout" style="color:#B30B00">ВЫХОД</a>
    25.     </form>
    26. </body>
    27. </html>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.820
    Симпатии:
    736
    Адрес:
    Татарстан
    честно говоря в этой помойке совсем не хочется разбираться....
    не знаю что у вас там по кнопке - выйти... похоже сессию вы не уничтожаете
     
    MouseZver нравится это.
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.790
    Симпатии:
    649
    При помощи кнопки «Назад» или истории? Это кеширование в браузере. Одна из самых серьезных проблем, когда админка работает на основе обычных страниц. Пробуйте все страницы админки снабжать заголовками, препятствующими кешированию. Иногда помогает :)

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

    Для ручной борьбы с этим явлением помогает кнопка «Обновить» (иногда после второй попытки). Если это вообще не помогает, то проблема скорее всего в чем-то другом. Т.е. походу не выполнили выход.
     
  4. Batman

    Batman Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    72
    Симпатии:
    2
    PHP:
    1. <?php
    2. // admin.php
    3. if (empty($_SESSION['user'])) {
    4.     echo "Вы не авторизованы для просмотра этой страницы.";
    5.     exit;
    6. }
    7.  
    8. include_once  'db.php';
    9. $res = $db->query("SELECT * FROM users");
    10. ...
    P.S.
    PHP:
    1. $fileName = date('d.m.Y') . "_" . time() . "_users.csv";