好的我正在使用页数来计算用户访问profile.php的时间。如果他们未登录,则他们只能查看5个用户配置文件。
每个配置文件都有profile.php的扩展名,例如profile.php?id = 1或id = 2等。
页面计数工作正常,基本上如果用户试图点击超过5个配置文件,它会将它们重定向到limit.php页面,该页面告诉用户他们已达到限制a登录以查看更多内容。
我已将其设置为排除下面列出的一些配置文件。
基本上问题是,如果用户点击排除的配置文件,如99999或99998,它不会将用户重定向到limit.php页面。这很好,因为我想要它排除这些配置文件,但是,如果用户点击其他配置文件,如1或8等介于两者之间,用户试图重新访问99999或99998然后它不会让他们重定向?
任何人都可以告诉我如何编辑脚本,即使在访问其他配置文件之后或期间,用户仍然可以访问配置文件99999或99998,而不会重定向它们吗?
希望这很清楚。谢谢
<?php
!session_id() ? session_start() : null;
if(!isset($_SESSION['page_access_count'])){
$_SESSION['page_access_count'] = 1;
}elseif($_SESSION['page_access_count'] >= 6){
// redirect to signup page
header('Location: limit.php');
exit;
}
$free_profiles = array(99999,99998,99997,99996,99995,99994,99993); // array of profile IDs to exclude
if (! in_array($_GET['id'], $free_profiles)) {
$_SESSION['page_access_count']++;
}
?>
答案 0 :(得分:1)
我将限制验证逻辑包装在一个名为verify_profile_visit_limit
的函数中。现在我们可以使用$_GET
获取页面的“id”(因为它是一个查询字符串)并通过退出$free_profile
函数跳过限制检查它是否在verify_profile_visit_limit
数组中return
功能。
!session_id() ? session_start() : null;
verify_profile_visit_limit();
function verify_profile_visit_limit(){
$free_profiles = array(99999,99998,99997,99996,99995,99994,99993);
if(in_array($_GET["id"], $free_profiles)) return;
if(! isset($_SESSION["page_access_count"])){
$_SESSION["page_access_count"] = 0;
}
$_SESSION["page_access_count"]++;
if($_SESSION["page_access_count"] > 5){
header("Location: limit.php");
exit();
}
}