2015-10-27 191 views
1

我有一個案例,我註冊的用戶是wp_insert_user()並使用wp_signon()登錄。登記成功,但是當我使用wp_signon(),我得到錯誤:在WordPress註冊後無法登錄

'Invalid username or password. Please try again!'.

這裏是我的努力,我無法找到問題。

function wp_create_user_my($username, $password, $email = '', $fname, $lname) { 
    $first_name = wp_slash($fname); 
    $last_name = wp_slash($lname); 
    $user_login = wp_slash($username); 
    $user_email = wp_slash($email); 
    $user_pass = $password; 
    $userdata = compact('user_login', 'user_email', 'user_pass','first_name','last_name'); 
    return wp_insert_user($userdata); 
} 

這裏是signon()

$login_data['user_login'] = esc_attr($username); 
$login_data['user_password'] = esc_attr($new_password); 
$login_data['remember'] = true; 
$user_verify = wp_signon($login_data, false); 

回答

1

代碼見本:

$login_data['user_login'] = esc_attr($username); 
$login_data['user_password'] = esc_attr($new_password); 

esc_attr函數編碼<, >, &, " and '體徵/符號。如果用戶擁有其用戶名或密碼中的任何一個,它將與最初存儲/保存在數據庫中的內容不同,因爲傳遞給與數據庫存儲值進行比較的內容是任何或全部那些角色。

我建議你使用插入用戶時所使用的wp_slash功能:

$login_data['user_login'] = wp_slash($username); 
$login_data['user_password'] = wp_slash($new_password); 

這樣的話,你得到的是什麼插入到數據庫保持一致。

+0

感謝您的回覆,但仍然無法正常工作。 –

+0

嘗試在插入點(創建新用戶時)嘗試'var_dump'值,並在註冊點處查看它們是否返回相同或不同值。您可以從那裏開始排除故障。 – NaijaProgrammer

+0

我試過wp_signon()成功註冊後不久,它的工作正常。但經過一段時間後,在一個單獨的電話,它不工作。 –