2012-05-24 56 views
0

我有基於IP的投票代碼,但問題是當我從我的電腦投票(使用相同的網絡連接到互聯網)我不能!如何解決基於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; // 
    } 
} 
+2

你的IP可能每次都是一樣的,而你的腳本只允許每IP一個投票...檢查你的IP的'irecommendthis_votes'表。 –

+3

你爲什麼不能?你有錯誤嗎?你在代理服務器後面嗎?您需要提供有關問題的更多信息。 – j08691

+0

我認爲這裏的問題是,在同一個網絡上的其他計算機不能投票,因爲他們使用相同的公共IP地址 –

回答

1

如果您正在使用cookies和IP檢查,以防止重複投票,則投票不能超過一次的計算機共享同一個IP地址。這將阻止同一網絡中的其他用戶進行投票,因爲您將被視爲擁有一個IP地址。