2010-04-10 3 views
5

Czy istnieje sposób unieważnienia udostępniania nazwy użytkownika (na podstawie adresu ip lub logowania w tym samym czasie w innym miejscu) dla Wordpress? Jeśli istnieje wtyczka służąca do śledzenia adresu IP i czasu logowania, również powinna być w porządku. DziękiWtyczka do uniknięcia udostępniania nazwy użytkownika w Wordpress

+0

Czy chcesz, aby tylko jeden adres IP mógł używać nazwy użytkownika? Jeśli tak, zablokujesz dowolnego użytkownika z dynamicznym adresem IP. Czy próbujesz zablokować jednoczesne logowanie przez tego samego użytkownika? –

+0

Próbuję zablokować jednoczesne logowanie. –

Odpowiedz

2

możesz dodać to do swojego pliku functions.php lub wtyczki.

//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); 
} 

To zadziała tylko w jednym kierunku. Za każdym razem, gdy przetwarzany jest nowy login, zablokuje stary. Jeśli chcesz cofnąć, prawdopodobnie będziesz musiał napisać o wiele więcej kodu, aby użytkownik mógł złamać blokadę itd.

Można to również osiągnąć, zastępując odpowiednie funkcje w 'wp-includes/pluggable.php '

Przetestowałem powyższy kod do pracy z WordPress 3.1.

+0

Pamiętaj, że to zabrania użytkownikowi bez względu na to, jaki adres IP ma on dla użytkownika. Jeśli chcesz zezwolić na zalogowanie się tego samego użytkownika, ale z innych adresów IP (prawdopodobnie nie jest to najlepszy sposób), wystarczy dodać pole meta użytkownika dla swojego adresu IP lub zakodować je w pliku cookie, a następnie sprawdzić żądania z tym związane. – nullvariable

1

Testowane 3.6.1 i działa dobrze, z wyjątkiem funkcji "check_one_cookie" musi być aktualizowana tak:

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 należy relaced przez $ storedcookie [0] (i nie zapomnij zastąpić COOKIEPATH, COOKIE_DOMAIN własnymi danymi)

+0

ratownik życia Szaleję z tym haha – cppit