Плагин, чтобы избежать общего имени пользователя в Wordpress - PullRequest
5 голосов
/ 10 апреля 2010

Есть ли способ запретить совместное использование имени пользователя (на основе IP-адреса или логина одновременно в другом месте) для Wordpress? Если есть плагин для отслеживания IP-адреса и времени входа в систему, он тоже должен быть в порядке. Спасибо

Ответы [ 3 ]

2 голосов
/ 12 апреля 2011

Вы можете добавить это в файл functions.php или в файл плагина.

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

Это будет работать только в одном направлении. Каждый раз, когда новый логин обрабатывается, он блокирует старый. Если вы хотите изменить это, вам, вероятно, потребуется написать намного больше кода, чтобы пользователь мог снять блокировку и т. Д.

Вы также можете сделать это, заменив соответствующие функции в 'wp-includes / pluggable.php'

Я протестировал приведенный выше код для работы с WordPress 3.1.

1 голос
/ 21 сентября 2013

Протестировано в 3.6.1 и работает хорошо, за исключением того, что функция "check_one_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[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
    }
}

$ Storecookie должно быть соотнесено с $ Storecookie [0] (и не забудьте заменить COOKIEPATH, COOKIE_DOMAIN своими собственными данными)

0 голосов
/ 27 апреля 2010

Я не использовал это, но плагин IP Logger WordPress выглядит многообещающе. В нем много функций ведения журнала и управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...