好的我想让每个页面允许一个用户1个视图,然后向他们发送一个cookie,阻止他们再次查看该页面,但我对cookie不好,我会用IP做,但我宁愿通过cookie来做。这可能吗?我该怎么做?
答案 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所说,也许让他们登录,只让该用户查看它曾经的内容。