2010-04-10 26 views
5

Có cách nào để hủy chia sẻ tên người dùng (dựa trên địa chỉ IP hoặc đăng nhập cùng một lúc ở vị trí khác nhau) cho Wordpress không? Nếu có một plugin chỉ để theo dõi địa chỉ IP và thời gian đăng nhập, nó cũng sẽ ổn thôi. Cảm ơnPlugin để tránh chia sẻ tên người dùng trong Wordpress

+0

Bạn có muốn làm điều đó để chỉ một IP duy nhất có thể sử dụng tên người dùng không? Nếu vậy, bạn sẽ chặn bất kỳ người dùng nào có IP động. Hoặc bạn đang cố gắng chặn đăng nhập đồng thời của cùng một người dùng? –

+0

Tôi đang cố gắng chặn đăng nhập đồng thời. –

Trả lời

2

bạn có thể thêm tệp này vào tệp functions.php hoặc tệp plugin của mình.

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

Điều này sẽ chỉ hoạt động theo một hướng. Bất cứ lúc nào một lần đăng nhập mới được xử lý, nó sẽ khóa thông tin đăng nhập cũ. Nếu bạn muốn đảo ngược, có thể bạn sẽ cần phải viết nhiều mã hơn để người dùng có thể ngắt khóa.

Bạn cũng có thể thực hiện việc này bằng cách thay thế các hàm thích hợp trong 'wp-includes/pluggable.php '

Tôi đã thử nghiệm mã ở trên để hoạt động với WordPress 3.1.

+0

lưu ý rằng điều này sẽ không cho phép người dùng bất kể IP họ có trên cơ sở người dùng theo người dùng. Nếu bạn muốn cho phép cùng một người dùng đăng nhập nhưng từ các IP khác nhau (có thể không phải là cách tốt nhất), chỉ cần thêm trường meta người dùng cho IP của họ hoặc mã hóa nó trong cookie và sau đó kiểm tra các yêu cầu chống lại điều đó. – nullvariable

0

Tôi chưa sử dụng tính năng này, nhưng IP Logger WordPress plugin có vẻ đầy hứa hẹn. Nó có rất nhiều tính năng quản lý và ghi nhật ký.

1

Tested trong 3.6.1 và hoạt động tốt, ngoại trừ chức năng "check_one_cookie" đã được cập nhật như thế này:

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 nên relaced bởi $ storedcookie [0] (và đừng quên thay thế COOKIEPATH, COOKIE_DOMAIN bằng dữ liệu của riêng bạn)

+0

cuộc sống tiết kiệm Tôi đã phát điên với haha ​​này – cppit

Các vấn đề liên quan