如何用PHP实现随机显示/隐藏文本的简单脚本?
实现PHP文本按访问次数显示/隐藏的方案
嘿,这个需求其实很容易搞定,核心就是要跟踪用户的访问次数,PHP里用Session或者Cookie都能实现,我给你分场景讲清楚:
方案一:用Session实现会话级计数(关闭浏览器重置)
Session是服务器端存储的会话数据,适合只在用户当前浏览会话中计数的场景,代码示例如下:
<?php // 注意:session_start()必须放在所有输出(包括空格、HTML标签)之前 session_start(); // 初始化访问计数器:第一次访问设为1,之后每次刷新自动+1 if (!isset($_SESSION['visit_count'])) { $_SESSION['visit_count'] = 1; } else { $_SESSION['visit_count']++; } // 定义需要显示文本的访问次数 $display_times = [1, 2, 5]; // 判断当前次数是否在显示列表中,满足条件就输出文本 if (in_array($_SESSION['visit_count'], $display_times)) { echo "HELLO WORLD"; } // 不在列表里的次数(比如3、4次)会自动无内容输出 ?>
代码说明:
session_start():启动会话,让PHP能读写Session数据,必须放在最开头,否则会触发报错。$_SESSION['visit_count']:存储用户的访问次数,每次刷新页面都会自动递增。in_array():检查当前访问次数是否在我们指定的显示数组里,符合条件就输出目标文本。
方案二:循环重复显示规律(每5次循环一次)
如果你希望访问次数超过5次后,重复这个显示规律(第6次=第1次,第7次=第2次...),可以用取模运算实现循环:
<?php session_start(); if (!isset($_SESSION['visit_count'])) { $_SESSION['visit_count'] = 1; } else { $_SESSION['visit_count']++; } // 定义循环周期为5次 $cycle = 5; // 计算当前在周期内的位置(比如第6次会得到1,第7次得到2) $current_cycle_num = ($_SESSION['visit_count'] - 1) % $cycle + 1; $display_times = [1, 2, 5]; if (in_array($current_cycle_num, $display_times)) { echo "HELLO WORLD"; } ?>
方案三:用Cookie实现持久化计数(关闭浏览器不重置)
如果需要让计数在用户关闭浏览器后依然保留,可以用Cookie存储次数,适合长期跟踪的场景:
<?php // 初始化Cookie计数:没有Cookie就设为1并保存1年,否则次数+1 if (!isset($_COOKIE['visit_count'])) { // setcookie(键, 值, 过期时间):这里设置为1年后过期 setcookie('visit_count', 1, time() + 365 * 24 * 3600); $current_count = 1; } else { $current_count = $_COOKIE['visit_count'] + 1; setcookie('visit_count', $current_count, time() + 365 * 24 * 3600); } $display_times = [1, 2, 5]; if (in_array($current_count, $display_times)) { echo "HELLO WORLD"; } ?>
注意事项:
- Cookie存在客户端,用户可以手动修改,所以如果计数需要严格准确,优先用Session。
setcookie()同样需要放在所有输出之前,否则无法生效。
内容的提问来源于stack exchange,提问作者Joe Ronald
相关产品推荐
相关产品推荐

