Функция WordPress для предотвращения входа в систему - PullRequest
0 голосов
/ 30 сентября 2018

Тема, от которой я сильно зависим, но которую я не создал, вызывает у меня проблемы.В теме используется пользовательский модальный логин.Когда я пытаюсь войти в свою учетную запись администратора из Opera, я получаю следующую ошибку:

Session has expired, please reload the page and try again

, за которую отвечает следующий код:

function check_ajax_referer( $action = -1, $query_arg = false, $die = true ) {
    if ( -1 == $action ) {
        _doing_it_wrong( __FUNCTION__, __( 'You should specify a nonce action to be verified by using the first parameter.' ), '4.7' );
    }

    $nonce = '';

    if ( $query_arg && isset( $_REQUEST[ $query_arg ] ) )
        $nonce = $_REQUEST[ $query_arg ];
    elseif ( isset( $_REQUEST['_ajax_nonce'] ) )
        $nonce = $_REQUEST['_ajax_nonce'];
    elseif ( isset( $_REQUEST['_wpnonce'] ) )
        $nonce = $_REQUEST['_wpnonce'];

    $result = wp_verify_nonce( $nonce, $action );

    /**
     * Fires once the Ajax request has been validated or not.
     *
     * @since 2.1.0
     *
     * @param string    $action The Ajax nonce action.
     * @param false|int $result False if the nonce is invalid, 1 if the nonce is valid and generated between
     *                          0-12 hours ago, 2 if the nonce is valid and generated between 12-24 hours ago.
     */
    do_action( 'check_ajax_referer', $action, $result );

    if ( $die && false === $result ) {
        if ( wp_doing_ajax() ) {
            wp_die( -1, 403 );
        } else {
            die( '-1' );
        }
    }

    return $result;
}
// Check CSRF token
    if( !check_ajax_referer( 'ajax-login-nonce', 'loginsecurity', false) ){
        echo json_encode(array('error' => true, 'message'=> '<div class="wpsm_box warning_type"><i></i>'.__('Session has expired, please reload the page and try again', 'rehub_framework').'</div>'));
    }

Я не уверен, почему это связано с Opera, но мне нужно это выяснить.Любое понимание будет высоко ценится.Вот фактический сайт .

Примечание: тот же результат в «приватном» окне.

1 Ответ

0 голосов
/ 30 сентября 2018

1) попробуйте с Google Chrome, Firefox

2) если проблема все еще существует, обратитесь к хостинговой компании

посмотрите это (это говорит о том, что система безопасности nonce создает аналогичную проблему))

https://wordpress.org/support/topic/problem-with-oceanwp-popup-login/

3) поговорить с авторами тематической компании и сообщить об этом для исправления

...