2010-04-10 4 views
5

Existe-t-il un moyen d'annuler le partage de nom d'utilisateur (basé sur l'adresse IP ou se connecter en même temps dans un emplacement différent) pour Wordpress? S'il y a un plugin juste pour suivre l'adresse IP et l'heure de connexion, ça devrait aller aussi. MerciPlugin pour éviter de partager le nom d'utilisateur dans Wordpress

+0

Voulez-vous faire en sorte qu'une seule adresse IP puisse utiliser un nom d'utilisateur? Si c'est le cas, vous allez bloquer tout utilisateur avec une adresse IP dynamique. Ou essayez-vous de bloquer les connexions simultanées par le même utilisateur? –

+0

J'essaye de bloquer la connexion simultanée. –

Répondre

2

vous pouvez l'ajouter à votre fichier functions.php ou un fichier plugin.

//set the most current user to have a cookie matching a unique value  
add_action("set_logged_in_cookie", "one_cookie", 10, 5); 
function one_cookie($logged_in_cookie, $expire, $expiration, $user_id, $logged_in) { 
    $secure = apply_filters('secure_logged_in_cookie', false, $user_id, is_ssl()); 
    $cookie = uniqid(); 
    update_user_meta($user_id, "one_cookie", $cookie); 
    setcookie("one_cookie", $cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure, true); 
    return; 
} 
//check requests from users to ensure they have this cookie 
add_action("init", "check_one_cookie", 1); 
function check_one_cookie() { 
    $user = wp_get_current_user(); 
    if ($user->ID == 0) { return; } 
    $storedcookie = get_user_meta($user->ID, 'one_cookie'); 
    print_r(array('$storedcookie'=>$storedcookie)); 
    if (!empty($storedcookie) && $_COOKIE['one_cookie'] != $storedcookie) { 
    /*if the user doesn't have the same cookie as we have stored, log them out.*/ 
     wp_logout(); 
     //auth_redirect() may have a more desired effect 
    } 
} 
//unset a users cookie 
add_action('wp-logout', 'one_cookie_logout'); 
function one_cookie_logout() { 
    setcookie("one_cookie", "", 1); 
} 

Cela ne fonctionnera que dans une seule direction. Chaque fois qu'une nouvelle connexion est traitée, elle verrouillera l'ancienne. Si vous souhaitez inverser cela, vous aurez probablement besoin d'écrire beaucoup plus de code pour qu'un utilisateur puisse rompre un lock-out, etc.

Vous pouvez également accomplir cela en remplaçant les fonctions appropriées dans 'wp-includes/pluggable.php '

J'ai testé le code ci-dessus pour travailler avec WordPress 3.1.

+0

Notez que cela interdira l'utilisateur, quelle que soit leur adresse IP utilisateur par utilisateur. Si vous souhaitez autoriser le même utilisateur à se connecter mais à partir d'adresses IP différentes (probablement pas la meilleure), ajoutez simplement un champ Meta utilisateur pour son adresse IP ou l'encoder dans le cookie, puis vérifiez les demandes par rapport à cela. – nullvariable

0

Je n'ai pas utilisé cela, mais le IP Logger WordPress plugin semble prometteur. Il a beaucoup de fonctionnalités de journalisation et de gestion.

1

testé dans 3.6.1 et fonctionne bien, sauf la fonction "check_one_cookie" doit être mis à jour comme celui-ci:

add_action("init", "check_one_cookie", 1); 
    function check_one_cookie() { 
    $user = wp_get_current_user(); 
    if ($user->ID == 0) { return; } 
    $storedcookie = get_user_meta($user->ID, 'one_cookie'); 
    // print_r(array('$storedcookie'=>$storedcookie)); 
    if (!empty($storedcookie) && $_COOKIE['one_cookie'] != $storedcookie[0]) { 
    /*if the user doesn't have the same cookie as we have stored, log them out.*/ 
     wp_logout(); 
     //auth_redirect() may have a more desired effect 
    } 
} 

$ storedcookie devrait être relaced par storedcookie de $ [0] (et n'oubliez pas de remplacer le COOKIEPATH, COOKIE_DOMAIN par vos propres données)

+0

épargnant de vie Je devenais fou avec ce haha – cppit

Questions connexes