почему при перезагрузке загружается модальное всплывающее окно вместо загрузки окна.какие могут быть причины? - PullRequest
0 голосов
/ 16 апреля 2019

Я устанавливаю модальное окно Bootstrap на каждой странице со скрытой прокруткой на фоне, чтобы получить информацию о посетителях для генерации потенциальных клиентов, потому что мы получаем достаточно трафика.

Я делаю все кодирование с header.php, используя окно при загрузкевсплывающее окно для каждого раза.Всплывающее окно должно быть скрыто после нажатия на кнопку закрытия или отправки параметров.и больше нет всплывающего окна на любой странице после нажатия кнопки «Закрыть» или «Отправить» сразу.

Я использую сеанс, чтобы скрыть всплывающее окно после нажатия кнопки «Закрыть» или «Отправить».это работает нормально.

безопасен ли сеанс?Какие еще варианты?

что за проблема - всплывающее окно возникает после перезагрузки вместо окна при загрузке.

выглядит как проблема с файлами cookie, проблема с кэшем заголовка.я понятия не имею

после исследования я сделал перезагрузку окна один раз.здесь приводятся некоторые переменные в URL

, проверьте здесь: https://www.carlo.in/new-cars-test

, пожалуйста, предложите мне другие варианты или предоставьте мне решения.

1 Ответ

0 голосов
/ 17 апреля 2019

Сеанс будет препятствовать повторному появлению модального режима в течение оставшегося времени, когда клиент имеет открытый браузер, или до истечения / закрытия сеанса на стороне сервера (кратковременно). Файл cookie будет препятствовать повторному появлению модальной модели, пока файл cookie не будет удален с их компьютера (на длительный срок)

Вот как я могу это сделать, используя модал начальной загрузки и куки:

  1. Проверьте, существует ли уже cookie.
  2. Если cookie не существует, запустите модальное.
  3. После подтверждения модального режима сохраните файл cookie на компьютере клиента.

header.php

  # check if "Got-It!" button has been pressed
  if (isset($_POST['btn_modal'])) {
    $nameofCookie = $_POST['btn_modal'] . '-' . $_SERVER['REMOTE_ADDR']; // store name of modal with client's IP for the cookie's name
    $cookieExp = (86400 * 365); // time in seconds for cookie to expire
    # check if this cookie exists already
    if (!array_key_exists($nameofCookie, $_COOKIE)) {
      setcookie($name, '_any_value_goes_here_to_store_in_cookie', $cookieExp, '/'); // create cookie
      header('Location: https://' . $_SERVER['HTTP_HOST'] . URI); // refresh the current page after they click "Got It!"
      die();
    }
  }

Лично я предпочитаю использовать имя пользователя, если пользователь вошел в систему, но если имя пользователя не сохраняется в сеансе, вы можете использовать его IP-адрес, как показано выше. Вот с именем пользователя, отличается только одна строка.

  # check if "Got-It!" button has been pressed
  if (isset($_POST['btn_modal'])) {
    $nameofCookie = $_POST['btn_modal'] . '-' . $_SESSION['username']; // store name of modal with client's username for the cookie's name
    $cookieExp = (86400 * 365); // time in seconds for cookie to expire
    # check if this cookie exists already
    if (!array_key_exists($nameofCookie, $_COOKIE)) {
      setcookie($name, '_any_value_goes_here_to_store_in_cookie', $cookieExp, '/'); // create cookie
      header('Location: https://' . $_SERVER['HTTP_HOST'] . URI); // refresh the current page after they click "Got It!"
      die();
    }
  }

index.php (или любая другая страница, на которой идет модал)

<!-- code... -->

  <!-- begin: What's New? [Modal] -->
    <div class="modal fade" id="newModal" tabindex="-1" role="dialog">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title">What's new</h5>
          </div>
          <div class="modal-body">
            <ul>
              <li>NEW THIS</li>
              <li>NEW THAT</li>
              <li>NEW EVERYTHING</li>
            </ul>
          </div>
          <div class="modal-footer">
            <form method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
              <button type="submit" class="btn btn-primary" name="btn_modal" value="newModal">Got It!</button>
            </form>
          </div>
        </div>
      </div>
    </div>
  <!-- end: What's New? [Modal] -->

<!-- more code... ->

footer.php

  if(array_key_exists($nameofCookie, $_COOKIE)) {
    echo "<script>
            $(window).on('load',function(){
              $('#newModal').modal('show');
            });
          </script>";
  }

Сценарий для установки cookie-файла должен быть помещен в заголовок, и лучше всего, если скрипт для проверки и запуска модального режима размещается где-нибудь после html-кода для модального объекта, предпочтительно нижнего колонтитула.

...