我開發了一個使用PHP和MySQL的網站,它已經有一個登錄和註冊表單。 (myweb.com
)也使WordPress的網站登錄工作
我在這個網址myweb.com/blog
我想在WordPress和強迫用戶停用登錄和註冊頁面使用雷添加WordPress的吧。基本上將我的登錄與WordPress集成,以便用戶將登錄到這兩個網站。我的網站表看起來像這樣。而所有註冊用戶都存儲在這裏。而在我的數據庫密碼使用md5()
id | name | email | password
散列和WordPress的結構是這樣的,目前是空
ID | user_login | user_pass | user_nicename | user_email | user_url | user_registered | user_activation_key | user_status | display_name
我嘗試以下步驟mentioned here
,但我得到的線這個錯誤254 var_dump($user);
object(WP_Error)#620 (2) {
["errors"]=>
array(1) {
["invalid_username"]=>
array(1) {
[0]=>
string(166) "<strong>ERROR</strong>: Invalid username. <a href="http://localhost/dev/blog/wp-login.php?action=lostpassword" title="Password Lost and Found">Lost your password</a>?"
}
}
["error_data"]=>
array(0) {
}
}
也,所有的用戶信息都存儲在我的網站的members
表中,而不是在WordPress的數據庫中。
這是我的網站的登錄代碼,我最近也爲它添加了WordPress登錄。
/*
* Login
*
* $email = email of user
* $pass = user password (must already be in md5 form)
* $url = url of page they are login from
*/
function login($email = '', $pass = '', $url = '', $sticky = false)
{
global $lang, $_db, $mod, $template_style;
// Replace nasty things to stop sql injection
$email = addslashes(strtolower($email));
$email = strip_tags($email);
$email = htmlspecialchars($email, ENT_QUOTES);
//get user id
$sql = "SELECT `id`, `name`, `username`
FROM `members`
WHERE `email`='".mysql_real_escape_string($email)."'
AND `pass` = '" . mysql_real_escape_string($pass) . "'
LIMIT 0,1";
$q = $_db->query($sql);
list($uid, $name, $username) = $_db->fetch_array($q);
$login_check = $_db->num_rows($q);
if ($login_check <= '0') //check if login matches
{
echo '0'; //login failed
die;
}
/*
* wordpress login
*
* read:
* http://codex.wordpress.org/Function_Reference/wp_update_user
*/
$credentials = array();
$credentials['user_email'] = $email;
$credentials['user_password'] = $pass;
$credentials['remember'] = $sticky; // true/false
$secure_cookie = false; // true/false
$user = wp_authenticate($credentials['user_email'], $credentials['user_password']);
if (is_wp_error($user)) {
if ($user->get_error_codes() == array('empty_email', 'empty_password')) {
//$user = new WP_Error('', '');
$user = wp_update_user(array ('user_login' => $name, 'user_email' => $email, 'user_pass' => $pass));
}
}
var_dump($user);
wp_set_auth_cookie($user->ID, $credentials['remember'], $secure_cookie);
do_action('wp_login', $user->user_login, $user);
/*
set login cookies
*/
set_login_cookie($uid, $pass, $sticky);
//lock check
lock_checker($uid);
update_thisuser_online();
}
我必須一切從我members
表將其複製並填充到wp_users
或者是有沒有辦法登錄到WordPress,而無需在2個不同的表中的重複數據?我不想在兩個網站上都有2個登錄和2個註冊表單。
爲什麼我的代碼中不會有wp_authenticate()
驗證?
權限已經設置在兩個數據庫中,並且可以讀取和寫入我的站點數據庫和wordpress數據庫。只是從我的網站登錄到wordpress不起作用 – user2636556
你看過那篇博客文章我鏈接,第一個評論 - 關於密碼哈希? '$ wp_hasher =新PasswordHash(8,TRUE);' '$ password_hashed = $行[ 'user_pass'];' 這是關於用戶通WordPress的手冊: >記住,user_pass應該是純文本密碼,因爲它會被WordPress自動散列。 但是,據我所知,這是通過'wp-includes/class-phpass.php'腳本完成的。 –
無論密碼的複雜程度如何,WordPress現在都默認使用PasswordHash類來哈希密碼。 較新版本的WordPress(自版本2.5開始)不再使用MD5,除非作爲最後的手段,如果一系列更安全的哈希協議不可用。 PasswordHash首先處理嘗試最安全的方法,然後嘗試下一個最安全的方法(如果第一個方法對主機服務器不可用),等等。 –