【问题标题】:Need single popup for each session每个会话需要一个弹出窗口
【发布时间】:2012-06-11 10:23:35
【问题描述】:

我希望弹出广告只对任何访问者显示一次,无论访问了多少页面。所以我使用了这段代码,但我发现这段代码会为每个访问的页面弹出一个新广告。我该如何纠正它?:

<?php if(!isset($_COOKIE['ad_zedo'])) {

 setcookie('ad_zedo',1);
?>
<script language="JavaScript">
var zflag_nid="1185"; var zflag_cid="3307"; var zflag_sid="823"; var zflag_width="1"; var zflag_height="1"; var zflag_sz="15";
</script>
<script language="JavaScript" src="http://d8.zedo.com/jsc/d8/fo.js"></script>

<?php
}
?>

【问题讨论】:

    标签: php


    【解决方案1】:

    cookie 即将到期,因为您尚未设置到期时间。设置过期时间:

    setcookie('ad_zedo',1, time()+60*60*24*30); // 30 days
    

    来自Manual

    过期

    如果设置为 0 或省略,cookie 将在会话结束时(浏览器关闭时)过期。

    另外,不要忘记设置 cookie 会发送 HTTP 标头,因此在使用 setcookie() 之前您不能有任何输出。


    您也可以将标志存储在 PHP 会话中,而不是 cookie。这样做意味着弹出窗口会在新的 PHP 会话开始时显示(其到期时间由您的服务器配置定义)。

    <?php if(!isset($_SESSION['ad_zedo'])) {
    
     $_SESSION['ad_zedo'] = true;
    ?>
    

    每个页面上都需要session_start()

    【讨论】:

    • No 对于每个访问的页面,都会弹出一个广告。所以我想限制每个会话一个广告。
    • 如果您指的是 PHP 会话,那么您应该将 ad_zero 存储在 $_SESSION 而不是 cookie 中。
    • 当然&lt;script&gt;需要放在条件内。
    【解决方案2】:

    好的,正如 MrCode 已经说过的那样: 您应该使用 Sessions,例如您的代码将遵循 - 未经测试但应该做的事情......

    <?php 
    session_start();
    if(!isset($_SESSION['ad_zedo'])) {
    $_SESSION['ad_zedo'] = true;
    ?>
    <script language="JavaScript">
    var zflag_nid="1185"; var zflag_cid="3307"; var zflag_sid="823"; var zflag_width="1";      var zflag_height="1"; var zflag_sz="15";
    </script>
    <script language="JavaScript" src="http://d8.zedo.com/jsc/d8/fo.js"></script>
    
    <?php
    }
    ?>
    

    K 这应该有魔力;)。

    【讨论】:

    • 顺便说一句,这个 sn-p 必须添加到您的每个站点上!使用包含“ads.php”是最简单的;或类似的东西。
    【解决方案3】:

    在页面的开头调用 setcookie,在任何输出或标题发送到服务器之前,否则永远不会设置 cookie:

    <?php 
        $showadzedo = false;
        if(!isset($_COOKIE['ad_zedo'])) { $showadzedo = true; setcookie('ad_zedo',1); } 
    ?>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    
    [...]
    
    <?php if($showadzedo) { ?>
        <script language="JavaScript">
        var zflag_nid="1185"; var zflag_cid="3307"; var zflag_sid="823"; var zflag_width="1"; var zflag_height="1"; var zflag_sz="15";
        </script>
        <script language="JavaScript" src="http://d8.zedo.com/jsc/d8/fo.js"></script>
    <?php } ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多