Chrome में ऑटोफिल का उपयोग करते समय 'पासवर्ड फ़ील्ड खाली है' त्रुटि


10

जब मैं क्रोम पर लॉगिन स्क्रीन खोलता हूं, तो ब्राउज़र स्वचालित रूप से मेरा उपयोगकर्ता नाम और पासवर्ड भरता है। हालाँकि, जब मैं सबमिट बटन दबाता हूँ, तो मुझे निम्न संदेश मिलता है:

त्रुटि: पासवर्ड फ़ील्ड रिक्त है।

स्वतःभरण पासवर्ड के लिए एक स्थान जोड़ना और इसे फिर से हटाने से मुझे लॉग इन करने की अनुमति मिलती है। क्या चल रहा है?

जवाबों:


15

जावास्क्रिप्ट फ़ंक्शन wp_attempt_focusइस समस्या का कारण बन रहा है। फ़ंक्शन पेज लोड होने के तुरंत बाद फायर करता है, फ़ॉर्म को साफ़ करता है और उस पर ध्यान केंद्रित करता है, जिससे उपयोगकर्ता मैन्युअल रूप से अपनी लॉगिन जानकारी दर्ज कर सकते हैं।

Chrome, जेएस फ़ंक्शन के क्षेत्र को साफ़ करने से पहले, स्वचालित रूप से उपयोगकर्ता नाम और पासवर्ड भर रहा है। Chrome ठीक से परिवर्तनों को नहीं उठाता है, फिर भी पीले रंग के भरे हुए फ़ील्ड प्रदर्शित करते हैं, भले ही फ़ील्ड वास्तव में खाली हों।

हालांकि मैं ऑटोफोकस कार्यक्षमता की सराहना करता हूं, मैं एक अच्छे कारण के बारे में सोच भी नहीं सकता हूं कि कोई भी व्यक्ति स्वचालित रूप से स्पष्ट करना चाहेगा।

स्रोत

अफसोस की बात है कि फंक्शन को wp-login.php913-930 (वर्डप्रेस 4.0) लाइनों में हार्डकोड किया गया है । wp-login.phpफ़ाइल को पूरी तरह से बदलना एक बुरा विचार है, क्योंकि इसे किसी भी आगामी वर्डप्रेस अपडेट में ओवरराइट किया जा सकता है। इसलिए हमें थोड़ा resort हैकिंग ’का सहारा लेना पड़ेगा।

आसान तय है

wp_attempt_focusयदि प्रपत्र कोई त्रुटि नहीं है समारोह कहा जाता है। हम भाग्य में हैं - त्रुटि की जाँच PHP के माध्यम से की जाती है। इसका मतलब है कि हम केवल WP क्रियाओं का उपयोग करके फ़ंक्शन को सही समय पर फ़ॉर्म त्रुटि को रोककर फायरिंग से रोक सकते हैं। मैंने login_formएक्शन को चुना क्योंकि जेएस कॉल से ठीक पहले एक्शन हमेशा त्रुटि से निपटने के बाद फायर करता है। अपनी थीम functions.php(या प्लगइन फ़ाइल) में निम्नलिखित कोड जोड़ें :

add_action("login_form", "kill_wp_attempt_focus");
function kill_wp_attempt_focus() {
    global $error;
    $error = TRUE;
}

Hackish फिक्स

ऊपर दिए गए फिक्स फ़ंक्शन को पूरी तरह से फायरिंग से बचाता है, जिसका अर्थ है कि आपको उचित ऑटोफोकस भी नहीं मिलेगा। इसके चारों ओर एक और तरीका है: HTML आउटपुट को बफ़र करना और गीकलैबob_start से प्रेरित होकर इसे संशोधित करना । बफरिंग हमें कोड के विशिष्ट भागों को हटाने की अनुमति देता है - इस मामले में, आटोक्लेयर भाग । हालांकि बफर फ्लश करने के लिए मत भूलना।d.value = ''

add_action("login_form", "kill_wp_attempt_focus_start");
function kill_wp_attempt_focus_start() {
    ob_start("kill_wp_attempt_focus_replace");
}

function kill_wp_attempt_focus_replace($html) {
    return preg_replace("/d.value = '';/", "", $html);
}

add_action("login_footer", "kill_wp_attempt_focus_end");
function kill_wp_attempt_focus_end() {
    ob_end_flush();
}

2
बकाया। इसके लिए एक कोर को लागू किया जाना चाहिए। मुझे उन उपयोगकर्ताओं द्वारा कई टिप्पणियां मिली हैं, जिन्हें इससे समस्या है। फिक्स साझा करने के लिए धन्यवाद।
क्रिस्टीन कूपर

समाधान के लिए धन्यवाद। यह भी सोचो कि यह कोर में नहीं होना चाहिए।
थियागोपॉनट

0

मुझे यह समस्या भी हुई। स्कॉट एलन द्वारा प्लगइन "WP-SpamShield" बंद कर दिया और सब कुछ फिर से काम करना शुरू कर दिया।


0

मेरा पासवर्ड बस खाली था / अशक्त था इसलिए मैंने इसे "1234" जैसे किसी और चीज़ में बदलने की कोशिश की। अंतरिक्ष को जोड़ना और इसे हटाना न तो जेएस को अक्षम कर सकता था। इसके अलावा विभिन्न ब्राउज़र की कोशिश की तो क्या यह वास्तव में केवल क्रोम में है?

मैंने क्या किया कि मैंने डेटाबेस में पासवर्ड हैश बदल दिया और यह काम किया। wp_users.user_pass

मेरे मामले में पासवर्ड 1234बीसीक्रिप्टेड है:$2a$06$x4lljZOw0Cfuj7jy6qsdp./iX34gaDUMXQIQob4VIHLXQ5yI92RjC

http://bcrypthashgenerator.apphb.com/?PlainText=1234

छवि

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.