我可以使用哪些代码示例来阻止人们通过破解 php 脚本来投票以给他们更高的评分?
最佳答案
第一道防线是cookie。
基本上,您在他们的机器上设置 cookie,如果存在则禁用投票。
setcookie('cookiename', 'voted=1');
// and later
if(isset($_COOKIE['cookiename']) && $_COOKIE['cookiename'] = "voted=1")
{
// error
}
这消除了您可能需要进行的数据库调用以验证他们的投票。将其保留在适当的位置是个好主意,因为它就像缓存:对数据库的访问越少越好。
第二道防线是 IP 限制。您基本上会检查数据库中的 IP 地址日志,看看他们最近是否投票。
mysql_query('INSERT INTO TABLE (`IP_ADDR`, `TIME`) VALUES("'.$_SERVER['REMOTE_ADDR'].'", "'.time().'")');
// and later
$results = mysql_query('SELECT IP_ADDR FROM TABLE WHERE IP_ADDR="'.$_SERVER['REMOTE_ADDR'].'"');
if(mysql_num_rows($results) != 0)
{
// error
}
将你的整个脚本变成类似的东西
if(isset($_COOKIE['cookiename']) && $_COOKIE['cookiename'] = "voted=1")
{
die("You have voted recently.");
}
$results = mysql_query('SELECT IP_ADDR FROM TABLE WHERE IP_ADDR="'.$_SERVER['REMOTE_ADDR'].'"');
if(mysql_num_rows($results) != 0)
{
die("You have voted recently");
}
//Do Voting Stuff Here
vote($_GET['vote']);
// Record the vote.
setcookie('cookiename', 'voted=1');
mysql_query('INSERT INTO TABLE (`IP_ADDR`, `TIME`) VALUES("'.$_SERVER['REMOTE_ADDR'].'", "'.time().'")');
您还必须添加过期时间等,但它的基本内容就在那里。
关于php - 阻止人们使用 PHP 劫持投票系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165828/