Chrome에서 자동 완성을 사용할 때 '비밀번호 입력란이 비어 있습니다'오류


10

Chrome에서 로그인 화면을 열면 브라우저가 자동으로 양식에 내 사용자 이름과 비밀번호를 입력합니다. 그러나 제출 버튼을 누르면 다음 메시지가 나타납니다.

오류 : 비밀번호 필드가 비어 있습니다.

자동 완성 된 비밀번호에 공백을 추가 한 후 다시 제거하면 로그인 할 수 있습니다.

답변:


15

JavaScript 기능 wp_attempt_focus으로 인해이 문제가 발생합니다. 이 기능은 페이지를로드 한 직후에 실행되고 양식을 지우고 그에 초점을 맞추므로 사용자가 수동으로 로그인 정보를 입력해야합니다.

Chrome이 사용자 이름과 비밀번호를 자동으로 채우고 있습니다. JS 기능이 필드를 지우기 직전에 밀리 초입니다. Chrome이 변경 사항을 제대로 선택하지 않아 필드가 실제로 비어 있어도 노란색으로 채워진 필드가 표시됩니다.

자동 초점 기능에 감사하지만 양식을 자동으로 지우려는 사람이 좋은 이유는 없습니다.

소스

wp-login.php안타깝게도이 기능은 913-930 행 (WordPress 4.0) 으로 하드 코딩되었습니다 . wp-login.php향후 WordPress 업데이트에서 파일을 덮어 쓸 수 있으므로 파일을 완전히 변경 하는 것은 좋지 않습니다. 따라서 우리는 약간의 '해킹'에 의지해야합니다.

쉬운 수정

wp_attempt_focus형태에 오류가없는 경우 함수가 호출된다. 운이 좋았습니다-오류 점검은 PHP를 통해 이루어집니다. 즉, WP 작업을 사용하여 적시에 양식 오류를 발생시켜 함수가 실행되지 않도록 할 수 있습니다. JS 호출 직전에 오류 처리 login_form 작업이 항상 발생 하기 때문에 작업을 선택 했습니다. 테마 (또는 플러그인 파일)에 다음 코드를 추가하십시오 .functions.php

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

hackish 수정

위의 수정은 함수가 완전히 실행되는 것을 방지하므로 적절한 자동 초점을 얻지 못합니다. Geeklab에서ob_start 영감을 얻은 것처럼 HTML 출력을 버퍼링 하고을 통해 수정하는 또 다른 방법이 있습니다 . 버퍼링을 통해 코드의 특정 부분 (이 경우 자동 삭제 부분)을 제거 할 수 있습니다 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
훌륭해. 이를위한 수정 사항이 코어에 적용되어야합니다. 이 문제가있는 사용자로부터 많은 의견을 받았습니다. 수정 사항을 공유해 주셔서 감사합니다.
Christine Cooper

솔루션 주셔서 감사합니다. 또한 이것이 핵심이어서는 안된다고 생각하십시오.
ThiagoPonte

0

나도이 문제가 있었다. Scott Allen의 플러그인 "WP-SpamShield"를 끄고 모든 것이 다시 작동하기 시작했습니다.


0

비밀번호가 비어 있거나 비어있어서 "1234"와 같은 다른 비밀번호로 변경하려고했습니다. 공간을 추가하고 제거해도 작동하지 않으며 JS를 비활성화하지 않았습니다. 다른 브라우저를 사용해 보았으므로 Chrome에서만 실제로 있습니까?

내가 한 것은 데이터베이스에서 암호 해시를 변경하고 작동한다는 것입니다. wp_users.user_pass.

필자의 경우 암호 1234는 BCrypted입니다.$2a$06$x4lljZOw0Cfuj7jy6qsdp./iX34gaDUMXQIQob4VIHLXQ5yI92RjC

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

영상

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.