php - 阻止人们使用 PHP 劫持投票系统?

标签 php

我可以使用哪些代码示例来阻止人们通过破解 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/

相关文章:

php - 带有PHP验证码的Varnish缓存,用于防站点抓取算法

php - Wordpress 多站点和 Stripe 订阅?

javascript - 尝试通过 AJAX 将 JS 数组传递给 PHP 脚本

php - Highchart 使用 php、mysql 和 jquery

php - 如何用php将两种不同形式的输入存储在mySQL数据库中?

php - 我的 codeigniter 验证码未生成图像

php - CakePHP 日期选择的默认值

javascript - 为php表单动态生成文本框,将它们放入数组,内爆为字符串并将字符串写入数据库

php - PDO::beginTransaction() 是否导致表或行锁定直到 PDO::commit()?

php - 如何检查 PHP 类中的所有函数值?