Я пытаюсь добавить ReCaptcha на мою страницу входа. Я знаю, что есть много плагинов по запросу, я не могу использовать плагины. Пока что так хорошо, я могу добавить Captcha в свой логин, но не могу показать ошибки.
Я буду ошибаться, когда я введу неправильный пароль, но если я введу правильный пароль и не войду в Captcha, я не получу ошибок (что я должен получить Captcha, не заполненную ошибку). Таким образом, единственный раз, когда captcha_errors
функция captcha_errors
является неправильное имя пользователя / пароль.
Как получить мою регистрационную форму, чтобы проверить ReCaptcha, прежде чем проверять учетные данные для входа?
do_action('login_head'); // this function adds captcha to the login form function addCaptcha() { if( session_id() == "" ) @session_start(); if (isset( $_SESSION["recaptcha_response_field"] )) unset( $_SESSION["recaptcha_response_field"] ); ?> <p class="cptch_block"> <div id="cap"></div> <script type='text/javascript' src='http://www.google.com/recaptcha/api/js/recaptcha_ajax.js'></script> <script type='text/javascript'> Recaptcha.create("pubk", "cap", {theme:"clean", callback: Recaptcha.focus_response_field}); </script> <noscript> <iframe src='http://www.google.com/recaptcha/api/noscript?k=pubk' height='300' width='500'></iframe> <br /> <textarea name='recaptcha_challenge_field' rows='3' cols='40'></textarea> <input type='hidden' value='manual_challenge' name='recaptcha_response_field'/> </noscript> </p> <br /> <?php return true; } function verifyCaptcha($pageid) { $result = false; if( session_id() == "" ) @session_start(); $pvk = 'prvk'; if (!empty($pvk) && isset($_POST['recaptcha_response_field'])) { if(!function_exists('recaptcha_check_answer')) { require_once 'recaptchalib.php'; } $resp = recaptcha_check_answer($pvk, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']); $result = $resp->is_valid; } if(!$result) return $_SERVER["REQUEST_URI"]; else return admin_url(); } // this function checks captcha posted with a login function captcha_errors( $errors ) { if ( isset( $_SESSION['cptch_error'] ) ) unset( $_SESSION['cptch_error'] ); // return $errros.'<strong>TEST</strong>'; if ("" == $_REQUEST['recaptcha_response_field'] ) { return $errors.'<strong>'. __( 'ERROR', 'captcha' ) .'</strong>: '. __( 'Please fill out The Cpatcha.', 'captcha' ); } if ( isset( $_REQUEST['recaptcha_response_field'] ) && verifyCaptcha()) { // captcha was matched } else { return $errors.'<strong>'. __( 'ERROR', 'captcha' ) .'</strong>: '. __( 'Please enter a valid CAPTCHA value.', 'captcha' ); } return( $errors ); } add_action( 'login_form', 'addCaptcha' ); add_filter( 'login_redirect', 'verifyCaptcha', 10, 3 ); add_filter( 'login_errors', captcha_errors);
Используйте этот плагин для этой цели. SI Captcha