web-dev-qa-db-fra.com

Vérifier si un utilisateur a déjà voté

J'écris un système de sondage Wordpress. Je dois vérifier si un utilisateur a déjà voté, lui montrer un message. Mais je ne sais pas exactement comment puis-je faire ça! Une de mes solutions consiste à créer une table (nommée wp_voters) et à saisir l'ip et l'ID de poll de chaque utilisateur.

$user_ip = $_SERVER['REMOTE_ADDR'];

Mais ça ne marche pas vraiment. Pour un utilisateur unique, il attribue deux adresses IP ou plus. Comment puis-je gérer ce problème? Merci,

2
inverted_index

Créer une table pour une telle fonctionnalité dans WordPress n’est pas efficace. Je préférerais faire cela en utilisant l'approche suivante.

  1. Créez un type de message personnalisé pour vos informations de votant. Pour cela, vous pouvez essayer Générer WP générateur de type de publication .

  2. Chaque fois que l'utilisateur visite votre site; enregistrer IP et classement en après meta en utilisant wp insert post et add_post_meta . De cette façon, vous pourrez également voir la liste en back-end.

  3. Chaque fois que l'utilisateur visite votre site, vérifiez si un utilisateur possédant cette adresse IP utilise WP Query . S'il existe, inutile d'ajouter des informations, sinon ajoutez ses informations à l'étape 2.

Voici une fonction simple pour obtenir l'ip de votre utilisateur;

function get_the_user_ip() {

    if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
    //check ip from share internet
    $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
    //to check ip is pass from proxy
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
    $ip = $_SERVER['REMOTE_ADDR'];
    }

    return $ip;

} 

J'espère que cela fonctionnera pour vous.

3
Mohammad Mursaleen