@Dadad

Как при переходе по ссылкам не выполнять window.onunload?

Пытаюсь при нажатии на кнопку "Не запоминать" сделать так, чтобы при закрытии сайта сессия стиралась. У меня получилось сделать это через window.onunload, но при переходе по внутрисайтовым ссылкам сессия тоже стирается. Вот код:
<?php
      if ($_SESSION['user']['dont-remember']) { ?>
        <script>
          window.onunload = () => {
            <?php unset($_SESSION['user']) ?>
          }
        </script> <?php
      } ?>


Я попробовал сделать так, но не работает:
let links = document.querySelectorAll('a:not([href*="#"])');
for (let link of links) {
    link.addEventListener('click', () => {
        window.onunload = null
    })
}
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
<?php
      if ($_SESSION['user']['dont-remember']) { ?>
        <script>
          window.onunload = () => {
            <?php unset($_SESSION['user']) ?> // этот кусок php выполнится на сервере,
                // при генерации страницы, еще ДО того как html будет отправлен пользователю
          }
        </script> <?php
      } ?>


При этом в коде страницы, которая прилетит в браузер получится вот так
window.onunload = () => {

          }
Естественно, ничего полезного этот код не сделает.

Исправить это сложно. Придется отмотать учебник на несколько уроков назад, и попытаться понять чем отличается код на сервере от кода на клиенте (в браузере).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы