Поддержка Проблемы и решения Стандартная форма входа на сайт «не логинит»»

  • Решено jurvrn

    (@jurvrn)


    при входе на сайт через шорткод выводящий форму для входа на сайт даже зарегистрированные пользователи перекидываются на http://jurvrn.ru/wp-login.php?pass=1 где приходится и заходить на сайт.
    Для теста пользователь: userchat с паролем: userchat

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • приведу код шоркода

    <?php
    add_shortcode('logining', 'logining_func');
    function logining_func ( $attr, $shortcode_content = null )
    {
    	$args = array(
    	'echo'           => false,
    	'redirect'       => site_url( $_SERVER['REQUEST_URI'] ), 
    	'form_id'        => 'logining',
    	'label_username' => __( 'Имя пользователя' ),
    	'label_password' => __( 'Пароль' ),
    	'label_remember' => __( 'Запомнить меня' ),
    	'label_log_in'   => __( 'Войти' ),
    	'id_username'    => 'user_logining',
    	'id_password'    => 'user_pass_logining',
    	'id_remember'    => 'rememberme_logining',
    	'id_submit'      => 'wp-submit_logining',
    	'remember'       => true,
    	'value_username' => NULL,
    	'value_remember' => true );
    	
    	return wp_login_form($args);
    }
    ?>

    Получается что хоть форма подгрузилась, но не подгрузились какие-то скрипты, и нажатие на кнопку войти не срабатывает правильно

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    У вас вместо стандартной формы wp-login.php открывается HTML-заглушка, которая сразу же перенаправляет на форму:

    
    <html>
    <head>
        <!-- без тайтла, чтобы в истории FireFox рядом с именем сайта не отображалось Service Temporarily Unavailable -->
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <meta http-equiv="refresh" content="0; url=?pass=1">
        <style>
        * { font-family: verdana; font-size: 10pt; COLOR: gray; }
        b { font-weight: bold; }
        table { height: 40%; border: 1px solid gray;}
        td { text-align: center; padding: 25;}
    
        </style>
    </head>
    <body>
    <center>
    <br><br><br><br>
        <table>
        <tr><td>
         Для доступа в административную панель Вашего сайта, пожалуйста, перейдите по ссылке ниже. <br /><br />
         <a href="?pass=1">Вход в административную панель сайта.</a></td></tr>
        </table>
    
    </center>
    </body>
    
    </html>
    

    Она передаёт форме логина параметр ?pass=1, а все остальные — не передаёт.

    Если это инициатива хостинг-провайдера — попробуйте её отключить.

    Также можно попробовать направить форму на wp-login.php?pass=1 вместо стандартного адреса, добавив в конце функции шорткода замену:

    
    $form = str_replace( 'wp-login.php', 'wp-login.php?pass=1', wp_login_form( $args ) );
    
    return $form;
    

    @sergeybiryukov, спасибо, тему отмечу решенной
    заменил return wp_login_form($args);
    на

    $form = str_replace( 'wp-login.php', 'wp-login.php?pass=1', wp_login_form( $args ) );
    return $form;

    срабатывает как нужно — происходит вход на сайт без каких-либо окон. А с точки зрения логики wordpress эти перенаправления нормальны?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    А с точки зрения логики wordpress эти перенаправления нормальны?

    С точки зрения движка лучше не заменять стандартные страницы кустарной защитой от ботов, но у некоторых хостинг-провайдеров своё мнение на этот счёт, и в этом случае приходится работать с тем, что есть 🙂

    Sergey (@sergeybiryukov), в моем коде используются стандартные страницы? и мне нельзя приделать какую-то каптчу к ним? а то много фейковых регистраций идет.

    просьба ещё подсказать как правильно использовать стандартные php-функции — надо сделать чтобы при вводе неправильных данных при авторизации пользователь не перебрасывался на станицу сайта http://jurvrn.ru/?login=failed, а всплывало предупреждение о неправильном вводе данных и предлагалось заново ввести данные (или отмена)?

    по ссылке под чатом «Войти на сайт» (код тот что указан выше с учетом вашей правки)

Просмотр 6 ответов — с 1 по 6 (всего 6)