Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress wp_set_auth_cookie()防止重复用户_Php_Wordpress - Fatal编程技术网

Php Wordpress wp_set_auth_cookie()防止重复用户

Php Wordpress wp_set_auth_cookie()防止重复用户,php,wordpress,Php,Wordpress,我目前正在使用Wordpress中的wp\u set\u auth\u cookie()函数使用以下代码登录用户: function auto_login() { $username = $_POST['user']; if ( !is_user_logged_in() ) { $user = get_userdatabylogin( $username ); $user_id = $user->ID;

我目前正在使用Wordpress中的
wp\u set\u auth\u cookie()
函数使用以下代码登录用户:

    function auto_login() {
        $username = $_POST['user'];
        if ( !is_user_logged_in() ) {
            $user = get_userdatabylogin( $username );
            $user_id = $user->ID;
            wp_set_current_user( $user_id, $user_login );
            wp_set_auth_cookie( $user_id );
            do_action( 'wp_login', $user_login );
        }     
        die();
    }
    add_action('wp_ajax_auto_login', 'auto_login');
    add_action('wp_ajax_nopriv_auto_login', 'auto_login');
我遇到的问题与此线程相同:

但由于这个问题没有得到充分回答,我的情况如下:

  • 用户1使用用户名1登录到PC 1

  • 用户2使用用户名2登录到PC 2

  • 用户名1显示为已登录

  • 因此,我的问题是,如何使用
    wp\u set\u auth\u cookie()
    函数登录用户,同时防止为我的所有用户显示相同的用户名

    更新:我的所有用户现在似乎都以用户1身份自动登录


    谢谢

    您正在使用一些不推荐使用的函数,并且没有正确地传递
    用户名
    -变量
    $user\u login
    未设置,您想使用
    $user->user\u login
    。也有人反对赞成

    尝试使用以下方法,请记住这不会验证密码。有关更多信息,请参阅文档

    function auto_login() {
        // make sure user is not logged in and "user" was POST'd
        $username = isset( $_POST['user'] )? $_POST['user'] : false;
        if ( ! is_user_logged_in() && $username ){
            // load the user by username
            $user = get_user_by( 'login', $username ); 
            if ( $user ) {
                // log user in using the $user object properties
                wp_set_current_user( $user->ID, $user->user_login );
                wp_set_auth_cookie( $user->ID );
                do_action( 'wp_login', $user->user_login );
            }
        }
    }
    

    请尝试改用wp_signon()。这将对用户进行身份验证。它实际上调用wp_set_auth_cookie。问题是,我正在使用ajax在我的页面完成加载后提交登录表单,但似乎在发送任何标题之前需要运行wp_signon()?所以在我的页面加载之前。。。那么,我如何修改我的代码以允许通过ajax运行wp_signon()?好吧,这可以让我登录,就像我的函数一样,但它不能解决登录用户重复/冲突的问题。。。我仍然看到wp_set_auth_cookie()的问题,导致我的所有用户都使用相同的用户帐户登录。您是“用户”使用正确用户名发布的用户吗?您可以将其写入
    错误日志()
    进行检查吗?