【问题标题】:Show something to specific number of users and skip some others向特定数量的用户显示某些内容并跳过其他一些内容
【发布时间】:2012-11-09 21:24:38
【问题描述】:

我在设置一些东西时遇到了一点问题。 假设我有这个简单的页面:

<html>
<body>
<?php echo "hello"; ?>
</body>
</html>

在我的数据库中,我有一个带有访客计数器的表格,现在该计数器归零。

我想要做的是,仅向某些访问者显示此 Hello 消息,更准确地说是使用如下规则:

显示 5 人,跳过​​ 3 人,然后显示下 5 人,再跳过下 3 人...

然后继续往前走。 抱歉愚蠢,但我想我可以用多个数字做一些事情,我只是在设置 if、foreach 等时遇到问题......

好吧,如果有人可以帮助我,我会很高兴的。

提前致谢。

【问题讨论】:

  • 你说的是用户还是页面请求
  • 您需要某种服务器端存储(文件或数据库)来保持计数。您还需要跟踪使用 cookie 或其他东西的用户(以避免在每次刷新时显示和隐藏同一用户)。
  • 页面请求我认为,每个页面请求我都会增加这个数据库计数器,所以这个页面的前 5 次加载,显示回显,跳过 3 次加载,然后继续
  • 抱歉在这里连续重复评论,但@Aziz 用户并不重要,Jason 说得对,它是页面请求而不是特定用户。
  • 如果你不想破坏页面请求$count,另一种方法是检查if($count % 8 &lt; 5) show itelse don't show it% 是模运算符(除法的余数)。更多信息:php.net/manual/en/internals2.opcodes.mod.php

标签: php math if-statement for-loop


【解决方案1】:

好的,接缝你开始学习,所以我会用伪php代码提示你可以做什么:

<?php
  $countFromDb = getCoundFromDB();
  if ($countFromDb % 8 != 0 && $countFromDb % 8 != 7 && $countFromDb % 8 != 6) {
    echo "hello";
  }
  increaseCoundFromDB();
?>

您需要使用像mySQLSQLite 这样的数据库来存储值。

而且您应该注意,如果用户刷新页面,这不会再次使用 cookie 或存储客户端 IP。

【讨论】:

  • 真棒@tbraun89,非常感谢你......这段代码就像一个魅力,感谢Aziz,你的代码也工作了。我今天使用 MySQL 来存储它,尝试以正确的方式开始,也使用 CodeIgniter。
【解决方案2】:

不需要foreach。

第一步,设置一个计数器$i。每次加载页面时,都会增加此计数器。然后:

$i++
If ($i < 5) {
  echo "hello";
} else if ($i > 8) {
  $i = 0;
}

第二步,更进一步...尝试检测会话 ID 或 IP 地址。然后,每次您检测到不同的会话时,都会像上面一样增加计数器。

希望对你有帮助!如果您需要更多详细信息,请告诉我。

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2020-08-16
    • 2016-06-07
    • 1970-01-01
    相关资源
    最近更新 更多