【问题标题】:Redirect visitor to a different url if a page is accessed more than 5 times?如果页面被访问超过 5 次,将访问者重定向到不同的 url?
【发布时间】:2012-12-10 14:24:05
【问题描述】:

如果用户访问页面超过 5 次,我会尝试重定向用户。 所以基本的想法是,如果用户没有登录我的网站并且他们正在浏览用户个人资料(profile.php),那么这会计算 cookie 会话的点击次数并重定向到一个页面以表示注册或其他内容.

我是 php 新手,不知道从哪里开始。谁能给我看看。

【问题讨论】:

  • 别忘了选择接受最适合你的答案!

标签: php session redirect cookies


【解决方案1】:

这在 PHP 中很容易实现。只需使用计数值设置一个会话并在每次访问后读取它。然后如果计数为 5 或更多,您可以重定向。下面是示例代码

!session_id() ? session_start() : null; if(!isset($_SESSION['page_access_count'])){ $_SESSION['page_access_count'] = 1; }elseif($_SESSION['page_access_count'] >= 5){ //重定向到注册页面 header('位置:/signup.php'); 出口; } // 增加页面访问会话值 $_SESSION['page_access_count']++; ...

【讨论】:

    【解决方案2】:

    基本上,您应该能够在服务器端的会话变量或 cookie 中设置计数器。 在每次访问个人资料页面时增加该计数器。如果该计数器大于5,则使用 php header 函数将用户重定向到您的注册页面。这是一个快速的代码提示,您可以使用会话变量来实现这一点:

    if(! isset($_SESSION["ProfileVisitCount"])){
        $_SESSION["ProfileVisitCount"] = 1;
    }
    
    $_SESSION["ProfileVisitCount"]++;
    
    if($_SESSION["ProfileVisitCount"] > 5){
        header("Location: http://domain.com/signup");
        exit();
    }
    

    还要确保在这些代码之前使用 session_start() 启动 php 会话。

    同样的事情可以用这样的 cookie 来实现:

    if(! isset($_COOKIE["ProfileVisitCount"])){
        setcookie("ProfileVisitCount", "1", time()+3600);
    }
    
    if($_COOKIE["ProfileVisitCount"] > 5){
        header("Location: http://domain.com/signup");
        exit();
    }
    else {
        setcookie("ProfileVisitCount", ($_COOKIE["ProfileVisitCount"] + 1), time()+3600);
    }
    

    参考文献

    【讨论】:

      【解决方案3】:

      使用 cookie。下面是我在 PHP 中的做法:

      <?php
      if (!isset($_COOKIE["cookie1"]))
      {
        setcookie(
        "cookie1",
        "1",
        time() + (20 * 365 * 24 * 60 * 60),
        '/',
        '.example.com'
      );
      }
      else{
        setcookie(
        "cookie2",
        "2",
        time() + (20 * 365 * 24 * 60 * 60),
        '/',
        '.example.com'
      );
      else{
        setcookie(
        "cookie3",
        "3",
        time() + (20 * 365 * 24 * 60 * 60),
        '/',
        '.example.com'
      );
      }
      else{
        setcookie(
        "cookie4",
        "4",
        time() + (20 * 365 * 24 * 60 * 60),
        '/',
        '.example.com'
      );
      }
      else{
        setcookie(
        "cookie5",
        "5",
        time() + (20 * 365 * 24 * 60 * 60),
        '/',
        '.example.com'
      );
      }
      else
      {
      header("Location: http://domain.com/signup");
      }
      }
      ?>
      

      确保将 .example.com 替换为您的域名。并保留“。”而不是“www”。如果您希望它在使用带有“www”的域名运行它时工作,或者没有它。

      告诉我它是否有效......我总是可以修改它。

      【讨论】:

      • 为什么设置多个 cookie 而一个就足够了?
      • @Arash Milani 这听起来可能很脏,但它确实有效。它设置了一个cookie。下一次访问,它会创建一个新的,下一次访问它会创建一个新的,等等,直到它重定向的第 5 个 cookie。这是我的计数方式......虽然可能不是最好的......你的方法要好得多:P
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 2018-12-04
      • 2016-10-23
      • 1970-01-01
      • 2022-08-13
      • 2020-05-01
      相关资源
      最近更新 更多