2017-08-28 65 views
0

我正在使用自定义登录表单,这里是代码。成功登录后重定向到/门户页面,但在门户页面用户登录状态为false。is_user_logged_in()在wp_signon后返回false

$email = $_REQUEST['login_email']; 
     $password = $_REQUEST['login_password']; 

     $args = array(
      'orderby'  => 'login', 
      'order'  => 'ASC', 
      'fields'  => 'all' 
      ); 
     $count=0; 
     $all_users = get_users($args); 
     $login_data['user_password'] = $password; 
     $login_data['user_login'] = $email; 
     $login_data['remember'] = true; 
     $user_verify = wp_signon($login_data, true); 

     $userID = $user_verify->ID; 

     do_action('wp_login', $email); 
     wp_set_current_user($userID, $email); 
     wp_set_auth_cookie($userID, true, false); 


     if (is_wp_error($user_verify)){ 
      $loginerror = true; 
      $errors['login_error']=__("Error in login",'domain'); 
     } 
     else{ 
      $loginSuccess = true; 
      $_SESSION['login_email']=$email; // Initializing Session 
      if(empty($previous_location)) 
      { 

       wp_safe_redirect(home_url('/portal/')); 
      } 
      else{ 
       wp_safe_redirect($previous_location); 
      } 
      exit(); 
     } 

/portal页时,我var_dump(is_user_logged_in())返回false。这里发生了什么?我做了什么?

+0

我将我的网站托管在yourdomain.com/folder – Ninja

+0

当您在wp-config.php中将WP_DEBUG设置为true时,是否会收到任何错误,警告信息 – tousif

+0

完全没有。我没有错误。这是用cookie来实现的吗?在wp_sigon之后,我得到了用户详细信息,并且'is_user_logged_in()'在该页面中也是true,但是当我移动到其他页面的网站时,则is_user_logged_in()返回false – Ninja

回答

0

我有同样的经历。原来我的自定义注册机制是错误的。我使用$wpdb对象和插入方法添加了具有自定义sql查询的新用户。

不知何故,这种方法与后者wp_signon的用法相冲突。如果您还写有自定义注册机制,请尝试回到wp_insert_user方法,然后使用$wpdb->update更新自定义列或任何内容。