Chromeで自動入力を使用すると「パスワードフィールドが空です」エラー


10

Chromeでログイン画面を開くと、ブラウザにフォームにユーザー名とパスワードが自動的に入力されます。しかし、送信ボタンを押すと、次のメッセージが表示されます。

エラー:パスワードフィールドが空です。

自動入力されたパスワードにスペースを追加して、もう一度削除すると、ログインできます。どうしているのですか?

回答:


15

JavaScript関数wp_attempt_focusがこの問題の原因です。この関数は、ページの読み込み直後に起動し、フォームをクリアしてフォーカスし、ユーザーに手動でログイン情報を入力させる。

JS関数がフィールドをクリアするわずか数ミリ秒前に、Chromeがユーザー名とパスワードを自動的に入力しています。Chromeは変更を適切に取得せず、フィールドが実際には空であっても黄色の塗りつぶされたフィールドが表示されます。

私はオートフォーカス機能に感謝しますが、フォームを自動的にクリアしてほしいと思う十分な理由は考えられません。

起源

悲しいことに、関数はwp-login.php913-930行(WordPress 4.0)にハードコードされています。wp-login.phpWordPressの今後のアップデートでファイルが上書きされる可能性があるため、ファイルを完全に変更することは悪い考えです。したがって、少し「ハッキング」に頼らなければなりません。

簡単な修正

wp_attempt_focusフォームにエラーがない場合、この関数が呼び出されます。エラーチェックはPHPを介して行われます。これは、WPアクションを使用して適切なタイミングでフォームエラーを偽装することで、関数が実行されないようにすることができることを意味します。このlogin_formアクションを選択したのは、エラー処理の、JS呼び出しの直前にアクションが常に発生するためです。次のコードをテーマfunctions.php(またはプラグインファイル)に追加します。

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

ハックの修正

上記の修正により、関数が完全に実行されなくなり、適切なオートフォーカスも得られなくなります。それを回避する別の方法があります: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
未解決の。この修正はコアに適用する必要があります。これに関して問題があるユーザーから多くのコメントを受け取りました。修正を共有していただきありがとうございます。
クリスティンクーパー

解決していただきありがとうございます。また、これはコアにあるべきではないと考えます。
ThiagoPonte

0

私もこの問題を抱えていました。Scott Allenによるプラグイン「WP-SpamShield」をオフにすると、すべてが再び機能し始めました。


0

私のパスワードは空またはnullだったので、「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.