【问题标题】:why bootstrap modal popup after reload instead of window load. what may be causes?为什么重新加载后引导模式弹出窗口而不是窗口加载。可能是什么原因?
【发布时间】:2019-04-16 19:24:58
【问题描述】:

我在每个页面上设置 Bootstrap 模式窗口,并在背景上隐藏滚动以获取访问者详细信息以生成潜在客户,因为我们获得了足够的流量。

我每次都在加载弹出窗口时使用 header.php 进行所有编码。 单击关闭或提交选项后应隐藏弹出窗口。点击关闭或立即提交后,任何页面上都不再弹出窗口。

我正在使用会话在关闭或提交点击后隐藏弹出窗口。 这工作正常。

会话安全吗?还有什么其他选择?

我遇到了什么样的问题 - 重新加载后出现弹出窗口,而不是加载时出现窗口。

看起来像 cookie 问题、标头缓存问题。我不知道

经过研究,我已经完成了一次窗口重新加载。它在 url 中给出了一些变量

在这里查看:https://www.carlo.in/new-cars-test

请给我一些其他选择或提供解决方案。

【问题讨论】:

    标签: php cookies popup bootstrap-modal web-storage


    【解决方案1】:

    在客户端打开浏览器的剩余时间内,或直到会话在服务器端过期/关闭(短期),会话将阻止模式再次出现。只要 cookie 没有从他们的计算机中删除(长期),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代码之后的任何位置,最好是页脚。

    【讨论】:

    • 是的@KamaranaL,如果我想使用 cookie,这很有帮助,我需要更多关于 bootstrap 和 JQuery 冲突的帮助,因为这就是我面临的问题。
    • @RajendraSingh,是第一次访问时出现的“抓住交易”模式吗?如果是这样,我不会存储任何 cookie。设置 cookie 并检查 cookie 的代码是什么样的?
    • 是的 @KamaranL 兄弟它的 Grab The Deal 弹出窗口。我通过避免 Jquery 冲突得到了解决方案。我正在使用会话而不是 cookie。现在这是在每个页面上进行检查访问carlo.in。请建议通过使用地理位置或获取 ip 来获取用户位置,而不是在弹出窗口中使用城市输入。
    • @RajendraSingh,使用$_SERVER['REMOTE_ADDR']将用户的远程IP存储在会话变量中,如果需要地理定位,可以使用http://www.geoplugin.net/php.gp?ip='IP_ADDRESS_HERE'之类的插件转换IP
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多