一、转换完毕后,请先到 vB 后台更新计数器! 然后用当前目录下的 functions_login.php 覆盖 vB 目录/includes/functions_login.php。 如果版本不统一或者已作修改,请按照以下步骤编辑 vB 目录/includes/functions_login.php: 找到 ------------------------------------------------------------------------------------- if ( $bbuserinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $bbuserinfo['salt']), '') AND $bbuserinfo['password'] != md5($md5password . $bbuserinfo['salt']) AND $bbuserinfo['password'] != iif($md5password_utf, md5($md5password_utf . $bbuserinfo['salt']), '') ) { return false; } ------------------------------------------------------------------------------------- 修改为: ------------------------------------------------------------------------------------- // 检验是否为动网转换过来的用户。 if (strlen($bbuserinfo['password']) == 16) { // 检验 16 位的 MD5 是否匹配。 if ( $bbuserinfo['password'] != iif($password AND !$md5password, substr(md5($password), 8, 16), '') AND $bbuserinfo['password'] != substr($md5password, 8, 16) AND $bbuserinfo['password'] != iif($md5password_utf, substr($md5password_utf, 8, 16), '') ) { return false; } // 获取新密码。 include('./includes/functions_user.php'); $userSalt = fetch_user_salt(3); if (!empty($password) AND !isset($md5password)) { $newPassword = md5(md5($password) . $userSalt); } else if (!empty($md5password)) { $newPassword = md5($md5password . $userSalt); } else { $newPassword = md5($md5password_utf . $userSalt); } // 更新该用户的密码。 $DB_site->query(' UPDATE ' . TABLE_PREFIX . 'user SET password = "' . addslashes($newPassword) . '", salt = "' . addslashes($userSalt) . '" WHERE userid = ' . $bbuserinfo['userid'] ); } else { if ( $bbuserinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $bbuserinfo['salt']), '') AND $bbuserinfo['password'] != md5($md5password . $bbuserinfo['salt']) AND $bbuserinfo['password'] != iif($md5password_utf, md5($md5password_utf . $bbuserinfo['salt']), '') ) { return false; } } ------------------------------------------------------------------------------------- 这个是DVBBS7.0转换到Version 3.0.7 后的“检验是否为动网转换过来的用户”代码,请问我又从Version 3.0.7后升级到vBulletin 3.5.1版本,这样上面的代码就不能用了,请问如何更改includes/functions_login.php?? 上面代码在Version 3.0.7 里我试过了,好用的,可是升级后不知道如何更改了。
第二个问题,VBB是否可以实现这样的功能,因为我的论坛有很多版块,以后会更多,主要是把学校里的5大系,100多个班级全部纳入进来了,所以…… 功能详见落伍的:http://www.im286.com/forumdisplay.php?fid=52
我已经把新版的functions_login.php里的 if ($vbulletin->userinfo = $vbulletin->db->query_first("SELECT userid, usergroupid, membergroupids, username, password, salt FROM " . TABLE_PREFIX . "user WHERE username = '" . $vbulletin->db->escape_string(htmlspecialchars_uni($username)) . "'")) { if ( $vbulletin->userinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $vbulletin->userinfo['salt']), '') AND $vbulletin->userinfo['password'] != iif($md5password, md5($md5password . $vbulletin->userinfo['salt']), '') AND $vbulletin->userinfo['password'] != iif($md5password_utf, md5($md5password_utf . $vbulletin->userinfo['salt']), '') ) { $return_value = false; 全部替换成这样: // 检验是否为动网转换过来的用户。 if (strlen($vbulletin->userinfo['password']) == 16) { // 检验 16 位的 MD5 是否匹配。 if ( $vbulletin->userinfo['password'] != iif($password AND !$md5password, substr(md5($password), 8, 16), '') AND $vbulletin->userinfo['password'] != substr($md5password, 8, 16) AND $vbulletin->userinfo['password'] != iif($md5password_utf, substr($md5password_utf, 8, 16), '') ) { return false; } // 获取新密码。 include('./includes/functions_user.php'); $userSalt = fetch_user_salt(3); if (!empty($password) AND !isset($md5password)) { $newPassword = md5(md5($password) . $userSalt); } else if (!empty($md5password)) { $newPassword = md5($md5password . $userSalt); } else { $newPassword = md5($md5password_utf . $userSalt); } // 更新该用户的密码。 $DB_site->query(' UPDATE ' . TABLE_PREFIX . 'user SET password = "' . addslashes($newPassword) . '", salt = "' . addslashes($userSalt) . '" WHERE userid = ' . $vbulletin->userinfo['userid'] ); } else { if ( $vbulletin->userinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $vbulletin->userinfo['salt']), '') AND $vbulletin->userinfo['password'] != md5($md5password . $vbulletin->userinfo['salt']) AND $vbulletin->userinfo['password'] != iif($md5password_utf, md5($md5password_utf . $vbulletin->userinfo['salt']), '') ) { return false; } }
http://17cp.com/bbs/showthread.php?p=622#post622 可参照如下代码 PHP: [code] //兼容动网论坛密码验证 if (!$vbulletin->userinfo['salt'] AND (strcmp($vbulletin->userinfo['password'], iif($password AND !$md5password, substr(md5($password), 8, 16), '')) == 0 OR strcmp($vbulletin->userinfo['password'], substr($md5password, 8, 16) == 0))) { require_once(DIR . '/includes/functions_user.php'); $vbulletin->userinfo['salt'] = fetch_user_salt(3); $vbulletin->userinfo['password'] = iif($password AND !$md5password, md5(md5($password) . $vbulletin->userinfo['salt']), iif($md5password, md5($md5password . $vbulletin->userinfo['salt']), md5($md5password_utf . $vbulletin->userinfo['salt']))); $vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user SET salt = '" . addslashes(htmlspecialchars_uni($vbulletin->userinfo['salt'])) . "', password = '" . addslashes(htmlspecialchars_uni($vbulletin->userinfo['password'])) . "' WHERE username = '" . addslashes(htmlspecialchars_uni($username)) . "'"); } else if ( $vbulletin->userinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $vbulletin->userinfo['salt']), '') AND $vbulletin->userinfo['password'] != iif($md5password, md5($md5password . $vbulletin->userinfo['salt']), '') AND $vbulletin->userinfo['password'] != iif($md5password_utf, md5($md5password_utf . $vbulletin->userinfo['salt']), '') ) // 兼容动网论坛密码验证修改结束[/code]