【问题标题】:Set session/cookie for 24hs to show something only once per day to users将会话/cookie 设置为 24 小时以每天仅向用户显示一次
【发布时间】:2012-08-23 20:06:51
【问题描述】:

过去一小时我一直在寻找如何做到这一点......我认为这很容易,但无法让它发挥作用。

我只想每天显示一次(AdSense)。

如果使用 cookie 或 PHP 会话,我不知道最好的方法是什么。无论如何,你能帮我告诉我该怎么做吗?

提前致谢!

圣地亚哥

编辑:我认为这样我可以创建会话,但我不知道如何每 24 小时“重新创建”一次,以及如何检查该会话以显示我想每天显示一次的内容。

if (!isset($_SESSION['adSense']) 
    $_SESSION['adSense'] = time();

if (time() - $_SESSION['adSense'] <= 60*60*24 ) {
   return true;
} else {
   return false;
}

【问题讨论】:

  • 您想向我们展示您尝试过但没有成功的方法吗?
  • 我尝试了很多,我可以粘贴一大块不起作用的代码,但我不知道它是否会有所帮助。
  • 好吧,对于你写的代码,它怎么行不通?它设置cookie吗?它是否设置了 cookie,但时间戳不起作用?时间戳是否有效,但仍然出现?

标签: php session cookies


【解决方案1】:

当用户离开网站时会话将过期,使用 cookie 是你想要的:

<? if (!isset($_COOKIE['showstuff'])): ?>

    <!-- replace this whatever you want to show -->

    <?
    setcookie('showstuff', true,  time()+86400); // 1 day
    ?>

<? endif; ?>

【讨论】:

  • 一个问题,我可以在标题中执行一次,每次我想在我的页面中显示某些内容时检查 cookie 吗?因为我想在我的页面中显示 3 种不同的东西,我不知道设置 cookie 3 次是否正确...
  • 无论您在同一页面上放置多少次代码(即使内容不同),它都会起作用。它只会设置一次cookie。
  • 我明白了,但是只设置一次cookie然后每次我想显示一些东西时检查它不是更干净吗?
  • 是的,您可以在后续展示位置中删除 setcookie
  • 哦,现在我明白了!对不起!再次感谢您的回答! ;)
【解决方案2】:

你可以这样做。

1.

setcookie('showPopup','yes',time() + 24 * 3600); // 24 hours

2.

setcookie('showPopup','yes',strtotime( '+1 days' )); // 24 hours

3.

setcookie('showPopup','yes',time() + 86400); // 24 hours

检查 Cookie

if(isset($_COOKIE['showPopup']))
{
     echo 'Not show pop';
}
else{           
    echo 'show popup and set cookie';
    setcookie('showPopup','yes', time() + 86400);
}

【讨论】:

    【解决方案3】:

    换个方式怎么样:

    • 您检查 cookie 是否存在。
    • 如果它在那里,什么也不做
    • 如果不存在,请每天执行一次您想做的事情,并创建一个 24 小时后过期的 cookie。

    【讨论】:

    • 完全正确 :) 我们每隔 2 分钟回答一次 :)
    猜你喜欢
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多