如何修复基于IP的投票?

时间:2012-05-24 19:44:03

标签: php

我有基于IP的投票代码,但问题是当我从我的电脑投票(使用相同的网络连接到互联网)时,我无法做到!

以下是代码:

global $wpdb;
$post_ID = $_POST['id'];
$ip = $_SERVER['REMOTE_ADDR'];
$irt_textOnclick = get_option('irt_textOnclick');
$recommend = get_post_meta($post_ID, '_recommended', true);

if($post_ID != '') {
    $voteStatusByIp = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."irecommendthis_votes WHERE post_id = '$post_ID' AND ip = '$ip'");

    if (!isset($_COOKIE['recommended-'.$post_ID]) && $voteStatusByIp == 0) {
        $recommendNew = $recommend + 1;
        update_post_meta($post_ID, '_recommended', $recommendNew);

        setcookie('recommended-'.$post_ID, time(), time()+3600*24*365, '/');
        $wpdb->query("INSERT INTO ".$wpdb->prefix."irecommendthis_votes VALUES ('', NOW(), '$post_ID', '$ip')");

        $return_text = $recommendNew . ' ' . $irt_textOnclick;
        echo $return_text; //$recommendNew; // 
    }
    else {
        $return_text = $recommend . ' ' . $irt_textOnclick;
        echo $return_text; //$recommendNew; //  
    }
}

1 个答案:

答案 0 :(得分:1)

如果您同时使用Cookie和IP检查以防止多次投票,则对于共享相同IP地址的计算机,投票不能超过一次。这将阻止同一网络中的其他用户进行投票,因为您将被视为拥有一个IP地址。