ECSHOP中实现ajax弹窗登录功能
在上篇文章给大家介绍了使用openSpeDiv方法实现Ecshop登录弹窗框效果,大家点击参考下
下面介绍如何实现AJAX弹窗登录。
在ECSHOP中的user.PHP中有处理用户登录的请求。
/* 处理 ajax 的登录请求 */ elseif ($action == 'signin') { include_once('includes/cls_json.php'); $json = new JSON; $username = !empty($_POST['username']) ? json_str_iconv(trim($_POST['username'])) : ''; $password = !empty($_POST['password']) ? trim($_POST['password']) : ''; $captcha = !empty($_POST['captcha']) ? json_str_iconv(trim($_POST['captcha'])) : ''; $result = array('error' => 0, 'content' => ''); $captcha = intval($_CFG['captcha']); if (($captcha & CAPTCHA_LOGIN) && (!($captcha & CAPTCHA_LOGIN_FAIL) || (($captcha & CAPTCHA_LOGIN_FAIL) && $_SESSION['login_fail'] > 2)) && gd_version() > 0) { if (empty($captcha)) { $result['error'] = 1; $result['content'] = $_LANG['invalid_captcha']; die($json->encode($result)); } /* 检查验证码 */ include_once('includes/cls_captcha.php'); $validator = new captcha(); $validator->session_word = 'captcha_login'; if (!$validator->check_word($_POST['captcha'])) { $result['error'] = 1; $result['content'] = $_LANG['invalid_captcha']; die($json->encode($result)); } } if ($user->login($username, $password)) { update_user_info(); //更新用户信息 recalculate_price(); // 重新计算购物车中的商品价格 $smarty->assign('user_info', get_user_info()); $ucdata = empty($user->ucdata)? "" : $user->ucdata; $result['ucdata'] = $ucdata; $result['content'] = $smarty->fetch('library/member_info.lbi'); } else { $_SESSION['login_fail']++; if ($_SESSION['login_fail'] > 2) { $smarty->assign('enabled_captcha', 1); $result['html'] = $smarty->fetch('library/member_info.lbi'); } $result['error'] = 1; $result['content'] = $_LANG['login_failure']; } die($json->encode($result)); }
把上面这段代码修改一下,删掉需要验证码的部分
改成
/* 处理 ajax弹窗登录请求 */ elseif ($action == 'ajax_login') { include_once('includes/cls_json.php'); $json = new JSON; $username = !empty($_POST['username']) ? json_str_iconv(trim($_POST['username'])) : ''; $password = !empty($_POST['password']) ? trim($_POST['password']) : ''; $result = array('error' => 0, 'content' => ''); $captcha = intval($_CFG['captcha']); if ($user->login($username, $password)) { update_user_info(); //更新用户信息 recalculate_price(); // 重新计算购物车中的商品价格 $smarty->assign('user_info', get_user_info()); $ucdata = empty($user->ucdata)? "" : $user->ucdata; $result['ucdata'] = $ucdata; $result['content'] = $smarty->fetch('library/member_info.lbi'); } else { $result['error'] = 1; $result['content'] = $_LANG['login_failure']; } die($json->encode($result)); }
将
// 不需要登录的操作或自己验证是否登录(如ajax处理)的act $not_login_arr = array('login','act_login','register','act_register','act_edit_password','get_password','send_pwd_email','password', 'signin', 'add_tag', 'collect', 'return_to_cart', 'logout', 'email_list', 'validate_email', 'send_hash_mail', 'order_query', 'is_registered', 'check_email','clear_history','qpassword_name', 'get_passwd_question', 'check_answer');
改成
// 不需要登录的操作或自己验证是否登录(如ajax处理)的act $not_login_arr = array('ajax_login','login','act_login','register','act_register','act_edit_password','get_password','send_pwd_email','password', 'signin', 'add_tag', 'collect', 'return_to_cart', 'logout', 'email_list', 'validate_email', 'send_hash_mail', 'order_query', 'is_registered', 'check_email','clear_history','qpassword_name', 'get_passwd_question', 'check_answer');
common.js文件下,
在openLginDiv()方法里,将newDiv.innerHTML的HTML代码修改下,在登录框标签里加个ajaxLoginSubmit()方法。
//生成层内内容 newDiv.innerHTML = '<form id="ajax_loginForm">用户名:<br><input type="text" name="username" id="ajax_username"/>密码:<br><input type="password" name="password" id="ajax_password"/><br><br><button type="button" onclick="ajaxLoginSubmit()">登录</button> <button type="button" onclick="closeLoginForm()">关闭</button></form>';
再自己写两个方法即可
function ajaxLoginSubmit(){ var username = document.getElementById('ajax_username').value; var password = document.getElementById('ajax_password').value; Ajax.call('user.php?act=ajax_login','username='+username+'&password='+password,ajaxLoginResponse,'POST','JSON'); } function ajaxLoginResponse(result){ if(result.error == 0){ alert('登录成功'); }else{ alert('登录失败'); } return false; }
相关推荐
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
时光如瑾雨微凉 2020-07-19
83510998 2020-07-18
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05