在整合 ucenter 的时候通信成功,但是网站注册时出现不管用什么号码注册都显示用户名已存在,下面 ECSHOP 开发中心的技术和大家分享如何解决这样的问题。
首先整合过 uc,那么他是用 $user->check_user($username) 来验证会员是否 ecshop 注册过,是否存在, 如果没有整合好 uc,必然报错误。
其次,在本身的注册程序中,需要 js/user.js 里面的函数来支持。比如 is_registered 函数,他是通过 Ajax.call('user.php?act=is_registered', 'username=' + username, registed_callback , 'GET', 'TEXT', true, true); 给 user.php?act=is_registered 传递 username 过去, 供 php 做验证的,而且返回结果通过 js/user.js 下面的 registed_callback 函数来显示处理结果的。
php 验证的结果是返回 false/true
elseif ($action == 'is_registered')
{
include_once(ROOT_PATH . 'includes/lib_passport.php');
$username = trim($_GET['username']);
$username = json_str_iconv($username);
if ($user->check_user($username) || admin_registered($username))
{
echo 'false';
}
else
{
echo 'true';
}
}
而 registed_callback 函数只是处理返回的 false/true 结果来显示该用户是否注册。
function registed_callback(result)
{
if (result == "true")
{
document.getElementByIdx_x('username_notice').innerHTML = msg_can_rg;
document.forms['formUser'].elements['Submit'].disabled = '';
}
else
{
document.getElementByIdx_x('username_notice').innerHTML = msg_un_registered;
document.forms['formUser'].elements['Submit'].disabled = 'disabled';
}
}
还有,如果是自定义的注册动作,那么必然要将注册的 $action 放在文件前面的数组中。$not_login_arr,$ui_arr 中去。不然会报错, 永远返回 false. 就是注册不成功。
正文完