我开发了一个使用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首先处理尝试最安全的方法,然后尝试下一个最安全的方法(如果第一个方法对主机服务器不可用),等等。 –