ECSHOP中实现ajax弹窗登录功能
在上篇文章给大家介绍了使用openSpeDiv方法实现Ecshop登录弹窗框效果,大家点击参考下
下面介绍如何实现AJAX弹窗登录。
在ECSHOP中的user.PHP中有处理用户登录的请求。
/*处理ajax的登录请求*/ elseif($action=='signin') { include_once('includes/cls_json.php'); $json=newJSON; $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=newcaptcha(); $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=newJSON; $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='用户名: 密码: 登录 关闭';
再自己写两个方法即可
functionajaxLoginSubmit(){ varusername=document.getElementById('ajax_username').value; varpassword=document.getElementById('ajax_password').value; Ajax.call('user.php?act=ajax_login','username='+username+'&password='+password,ajaxLoginResponse,'POST','JSON'); } functionajaxLoginResponse(result){ if(result.error==0){ alert('登录成功'); }else{ alert('登录失败'); } returnfalse; }
以上所述是小编给大家介绍的ECSHOP中实现ajax弹窗登录功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!