0

在登录尝试失败后,我正在使用以下函数重定向用户。在functions.php中,我添加了:

add_action( 'wp_login_failed', 'inline_login_fail' );

function inline_login_fail( $username ) {
    $referrer = $_SERVER['HTTP_REFERER'];
    if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
        if ( !strstr($referrer,'?login=failed') ) { // don’t append twice
        wp_redirect( $referrer . '?login=failed' ); 
        } else {
        wp_redirect( $referrer );
        }
    exit;
    }
}

这可行,但问题是我无法弄清楚如何解析“?登录失败”。当我将此作为 PHP 问题提出时,他们说 URL 格式错误。

我的网址:www.site.com/?page_id=57?login=failed

首选网址:www.site.com/?page_id=57&login=failed

现在你会认为我可以改变'?至 '&'。当我这样做时,如果用户尝试从主页登录并失败,则会产生问题。它会创建一个 404 的 URL:“在此服务器上找不到请求的 URL /wordpress/&login=failed。”

有什么方法可以更正此功能,以便它可以与首选 URL 一起使用?这样我就可以检索登录是否失败的值,如下所示:

<?php
if(isset($_GET['login']) === true and $_GET['login'] === 'failed')
{
  get_template_part( 'login', 'failed' );
} else {
  get_template_part( 'login', 'form' );
}
?>

否则,我根本无法弄清楚如何使用该 URL。谢谢!

4

1 回答 1

1

检查?

<?php
    function inline_login_fail( $username ) {
        $referrer = $_SERVER['HTTP_REFERER'];
        if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
            if ( !strstr($referrer,'login=failed') ) { // don’t append twice
                if(!strstr($referrer, '?')){
                    wp_redirect( $referrer . '?login=failed' ); 
                } else {
                    wp_redirect( $referrer . '&login=failed' ); 
                }
            } else {
                wp_redirect( $referrer );
            }
        exit;
        }
    }
?>
于 2012-08-17T07:07:05.937 回答