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