2012-05-24 3 views
0

J'ai IP code de vote basé, mais le problème est quand je vote depuis mon ordinateur (connecté à Internet en utilisant le même réseau) Je ne peux pas !!Comment réparer IP-Based vote?

Voici le code:

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

Votre adresse IP est probablement la même à chaque fois, et votre script n'autorise qu'un vote par adresse IP ... consultez la table 'irecommendthis_votes' pour votre adresse IP. –

+3

Pourquoi pas vous? Avez-vous des erreurs? Êtes-vous derrière un serveur proxy? Vous devrez fournir plus d'informations sur le problème. – j08691

+0

Je pense que le problème ici est que d'autres ordinateurs sur le même réseau ne peuvent pas voter parce qu'ils utilisent le même adresse IP publique –

Répondre

1

Si vous utilisez des cookies et des contrôles IP pour éviter le vote multiple, puis votes ne peuvent pas faire plus d'une fois pour les ordinateurs partageant la même adresse IP. Cela empêcherait les autres utilisateurs du même réseau de voter, car vous seriez considéré comme ayant une seule adresse IP.