1查看每个IP或设置Cookie

时间:2012-08-31 09:54:38

标签: php mysql html cookies

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

很可能

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

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

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

从根本上说,如果你想限制访问,你需要保留服务器端的记录无法更改的内容(例如强制用户登录,与用户关联)或接受真的,你要放一个非常不安全的防守。

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

答案 2 :(得分:0)

if ( !isset($_COOKIE['visited'][$page_id]) )
{
    // leave him view the page
    $_COOKIE['visited'][$page_id] = true;
}
else
{
    // get him out of there
}

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

但是,我不建议这样做,因为客户端可以轻松编辑cookie。会话是安全的方式。

答案 3 :(得分:0)

我会避免使用:

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

B)IP地址'(可以轻松更改。)

正如@Basic所说,也许让他们登录,只让该用户查看它曾经的内容。