0

好的,我想允许一个用户在每个页面上查看 1 次,然后向他们发送一个 cookie,阻止他们再次查看该页面,但我不擅长使用 cookie,我会用 IP 来做,但我宁愿通过饼干。这可能吗?我该怎么做?

4

4 回答 4

1

最简单的答案:

if(isset($_COOKIE['myCookie'])){
    die('Not allowed! Only one view per user!');
}
else{
    setcookie('myCookie', true);
}
//content here

使用会话进行操作:

session_start();
if(isset($_SESSION['mySession'])){
    die('Not allowed! Only one view per user!');
}
else{
    $_SESSION['mySession'] = true;
}
//content here

重定向而不是显示丑陋的错误:

if(isset($_COOKIE['myCookie'])){
    header('Location: error.php');
    exit;
}
else{
    setcookie('myCookie', true);
}
//content here
于 2012-08-31T09:57:00.093 回答
0

很有可能

<?php 
    if(isset($_COOKIE['blocked'])) {die('Access denied');}
    setcookie("blocked", true);
?>

当然,绕过(删除cookies)是微不足道的。

你遇到的真正问题是信任问题。Cookie 是由客户端发送给您的,您永远不应信任客户端。

从根本上说,如果您想限制访问,您要么需要在服务器端记录一些无法更改的内容(例如强制用户登录、与用户关联),要么接受这一点,您实际上是在设置一个非常不安全的防御。

请注意,IP 地址也不好,因为公司中的许多用户可能看起来都具有相同的 IP 地址 - 因此阻止一个会阻止所有用户。此外,一些在家中的用户只需断开/重新连接调制解调器/路由器即可获得新的 IP 地址

于 2012-08-31T09:57:09.550 回答
0
if ( !isset($_COOKIE['visited'][$page_id]) )
{
    // leave him view the page
    $_COOKIE['visited'][$page_id] = true;
}
else
{
    // get him out of there
}

这需要在索引/页面的开头编写。

但是,我不推荐这样做,因为 cookie 很容易被客户端编辑。会话是安全的方式。

于 2012-08-31T10:01:46.953 回答
0

我会避免使用:

A) 限制访问的 Cookies(可由客户端编辑)

B)IP地址'(可以很容易地更改。)

正如@Basic 所说,也许让他们登录并只让该用户查看一次。

于 2012-08-31T10:11:36.130 回答