如果页面访问次数超过5次而忽略某些页面,则将访问者重定向到不同的URL。

时间:2012-12-24 19:33:51

标签: php redirect count

好的我正在使用页数来计算用户访问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']++;
    }


        ?>

1 个答案:

答案 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();
    }
}