ECSHOP中實現(xiàn)ajax彈窗登錄功能
在上篇文章給大家介紹了使用openSpeDiv方法實現(xiàn)Ecshop登錄彈窗框效果,大家點擊參考下
下面介紹如何實現(xiàn)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代碼修改下,在登錄框標(biāo)簽里加個ajaxLoginSubmit()方法。
//生成層內(nèi)內(nèi)容 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()">關(guān)閉</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;
}
以上所述是小編給大家介紹的ECSHOP中實現(xiàn)ajax彈窗登錄功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
通過Ajax請求動態(tài)填充頁面數(shù)據(jù)的實例
今天小編就為大家分享一篇通過Ajax請求動態(tài)填充頁面數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
發(fā)布三個ajax相關(guān)的函數(shù),包括無刷新提交表單等
發(fā)布三個ajax相關(guān)的函數(shù),包括無刷新提交表單等...2006-08-08
基于iframe實現(xiàn)ajax跨域請求 獲取網(wǎng)頁中ajax數(shù)據(jù)
這篇文章主要介紹了基于iframe實現(xiàn)ajax跨域請求,并獲取網(wǎng)頁中ajax數(shù)據(jù),如何利用網(wǎng)頁ajax請求暴露出來的接口去抓取網(wǎng)頁數(shù)據(jù)?需要的朋友可以參考下2016-01-01

