2010-04-10 17 views
5

में शेयर उपयोगकर्ता नाम से बचने के लिए प्लगइन वर्डप्रेस के लिए उपयोगकर्ता नाम (आईपी पते के आधार पर या एक ही समय में लॉगिन पर आधारित) को रद्द करने का कोई तरीका है? यदि आईपी पता और लॉगिन समय ट्रैक करने के लिए सिर्फ एक प्लगइन है, तो यह भी ठीक होना चाहिए। धन्यवादवर्डप्रेस

+0

क्या आप इसे बनाना चाहते हैं ताकि केवल एक ही आईपी उपयोगकर्ता नाम का उपयोग कर सके? यदि ऐसा है, तो आप किसी भी उपयोगकर्ता को गतिशील आईपी के साथ अवरुद्ध करने जा रहे हैं। या आप एक ही उपयोगकर्ता द्वारा एक साथ लॉग इन ब्लॉक करने की कोशिश कर रहे हैं? –

+0

मैं एक साथ लॉगिन को ब्लॉक करने की कोशिश कर रहा हूं। –

उत्तर

2

आप इसे अपने 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-include/pluggable.php' में उचित फ़ंक्शंस को बदलकर इसे भी पूरा कर सकते हैं। '

मैंने वर्डप्रेस 3.1 के साथ काम करने के लिए उपर्युक्त कोड का परीक्षण किया है।

+0

ध्यान दें कि इससे उपयोगकर्ता को उपयोगकर्ता के आधार पर उपयोगकर्ता पर आईपी के मामले में कोई फर्क नहीं पड़ता है। यदि आप एक ही उपयोगकर्ता को लॉग इन करने की अनुमति देना चाहते हैं लेकिन अलग-अलग आईपी (शायद सबसे अच्छा तरीका नहीं) से बस अपने आईपी के लिए उपयोगकर्ता मेटा फ़ील्ड जोड़ें या कुकी में एन्कोड करें और उसके बाद अनुरोध जांचें। – nullvariable

0

मैंने इसका उपयोग नहीं किया है, लेकिन IP Logger WordPress plugin आशाजनक लग रहा है। इसमें बहुत सारी लॉगिंग और प्रबंधन सुविधाएं हैं।

1

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 
    } 
} 

$ storedcookie$ storedcookie द्वारा relaced किया जाना चाहिए [0] (और अपने डेटा द्वारा COOKIEPATH, COOKIE_DOMAIN को प्रतिस्थापित करने के लिए मत भूलना)

+0

जीवन बचतकर्ता मैं इस हाहा के साथ पागल हो रहा था – cppit