1

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

我是 php 新手,不知道从哪里开始。有人可以告诉我。

4

3 回答 3

2

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

if(! isset($_SESSION["ProfileVisitCount"])){
    $_SESSION["ProfileVisitCount"] = 1;
}

$_SESSION["ProfileVisitCount"]++;

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

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

同样的事情可以使用这样的 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);
}

参考

于 2012-12-24T03:28:41.107 回答
2

这在 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']++;

    ...
于 2012-12-24T03:29:02.480 回答
0

使用 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”的域名运行它时工作,或者没有它。

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

于 2012-12-24T03:30:42.290 回答