>  기사  >  웹 프론트엔드  >  ECSHOP에 ajax 팝업창 로그인 기능 구현

ECSHOP에 ajax 팝업창 로그인 기능 구현

亚连
亚连원래의
2018-05-22 15:59:282739검색

이 글에서는 주로 ecshop에서 ajax 팝업 로그인 기능을 구현하는 방법을 소개합니다. 코드가 간단하고 이해하기 쉽고, 매우 좋으며, 필요한 친구들이 참고할 수 있습니다.

전편에서 기사에서는 openSpep 메소드를 사용하여 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 파일의 openLginp() 메소드에서 newp.innerHTML의 HTML 코드를 수정하고 로그인 상자 라벨에 ajaxLoginSubmit() 메소드를 추가합니다.

//生成层内内容 
 newp.innerHTML = &#39;<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>&#39;;

직접 두 가지 방법을 더 작성해 보세요

function ajaxLoginSubmit(){ 
 var username = document.getElementById(&#39;ajax_username&#39;).value; 
 var password = document.getElementById(&#39;ajax_password&#39;).value; 
 Ajax.call(&#39;user.php?act=ajax_login&#39;,&#39;username=&#39;+username+&#39;&password=&#39;+password,ajaxLoginResponse,&#39;POST&#39;,&#39;JSON&#39;); 
} 
function ajaxLoginResponse(result){ 
 if(result.error == 0){ 
  alert(&#39;登录成功&#39;); 
 }else{ 
  alert(&#39;登录失败&#39;); 
 } 
 return false; 
}

위 내용은 제가 모두를 위해 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

AJAX에 대한 인터뷰 질문(답변 포함)


AJAX 사용 방법에 대한 자세한 분석(코드 붙여넣기)


anti-

ajax에 기반한 PHP 푸시 구현 메시지ajax 상세 실시간 푸시 단계 설명

위 내용은 ECSHOP에 ajax 팝업창 로그인 기능 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.