Maison  >  Article  >  interface Web  >  Implémentation de la fonction de connexion par fenêtre contextuelle ajax dans ECSHOP

Implémentation de la fonction de connexion par fenêtre contextuelle ajax dans ECSHOP

亚连
亚连original
2018-05-22 15:59:282727parcourir

Cet article vous présente principalement l'implémentation de la fonction de connexion contextuelle ajax dans ecshop. Le code est simple et facile à comprendre, très bon et a une valeur de référence. Les amis qui en ont besoin peuvent s'y référer

<.>Présenté dans l'article précédent Afin d'utiliser la méthode openSpep pour obtenir l'effet de fenêtre contextuelle de connexion Ecshop, veuillez cliquer pour référence

Ce qui suit présentera comment implémenter la connexion par fenêtre contextuelle AJAX .

Le user.PHP dans ECSHOP gère les demandes de connexion des utilisateurs.

/* 处理 ajax 的登录请求 */ 
elseif ($action == &#39;signin&#39;) 
{ 
 include_once(&#39;includes/cls_json.php&#39;); 
 $json = new JSON; 
 $username = !empty($_POST[&#39;username&#39;]) ? json_str_iconv(trim($_POST[&#39;username&#39;])) : &#39;&#39;; 
 $password = !empty($_POST[&#39;password&#39;]) ? trim($_POST[&#39;password&#39;]) : &#39;&#39;; 
 $captcha = !empty($_POST[&#39;captcha&#39;]) ? json_str_iconv(trim($_POST[&#39;captcha&#39;])) : &#39;&#39;; 
 $result = array(&#39;error&#39; => 0, &#39;content&#39; => &#39;&#39;); 
 $captcha = intval($_CFG[&#39;captcha&#39;]); 
 if (($captcha & CAPTCHA_LOGIN) && (!($captcha & CAPTCHA_LOGIN_FAIL) || (($captcha & CAPTCHA_LOGIN_FAIL) && $_SESSION[&#39;login_fail&#39;] > 2)) && gd_version() > 0) 
 { 
  if (empty($captcha)) 
  { 
   $result[&#39;error&#39;] = 1; 
   $result[&#39;content&#39;] = $_LANG[&#39;invalid_captcha&#39;]; 
   die($json->encode($result)); 
  } 
  /* 检查验证码 */ 
  include_once(&#39;includes/cls_captcha.php&#39;); 
  $validator = new captcha(); 
  $validator->session_word = &#39;captcha_login&#39;; 
  if (!$validator->check_word($_POST[&#39;captcha&#39;])) 
  { 
   $result[&#39;error&#39;] = 1; 
   $result[&#39;content&#39;] = $_LANG[&#39;invalid_captcha&#39;]; 
   die($json->encode($result)); 
  } 
 } 
 if ($user->login($username, $password)) 
 { 
  update_user_info(); //更新用户信息 
  recalculate_price(); // 重新计算购物车中的商品价格 
  $smarty->assign(&#39;user_info&#39;, get_user_info()); 
  $ucdata = empty($user->ucdata)? "" : $user->ucdata; 
  $result[&#39;ucdata&#39;] = $ucdata; 
  $result[&#39;content&#39;] = $smarty->fetch(&#39;library/member_info.lbi&#39;); 
 } 
 else 
 { 
  $_SESSION[&#39;login_fail&#39;]++; 
  if ($_SESSION[&#39;login_fail&#39;] > 2) 
  { 
   $smarty->assign(&#39;enabled_captcha&#39;, 1); 
   $result[&#39;html&#39;] = $smarty->fetch(&#39;library/member_info.lbi&#39;); 
  } 
  $result[&#39;error&#39;] = 1; 
  $result[&#39;content&#39;] = $_LANG[&#39;login_failure&#39;]; 
 } 
 die($json->encode($result)); 
}

Modifiez le code ci-dessus, supprimez la partie qui nécessite un code de vérification

et remplacez-le par

/* 处理 ajax弹窗登录请求 */ 
elseif ($action == &#39;ajax_login&#39;) 
{ 
 include_once(&#39;includes/cls_json.php&#39;); 
 $json = new JSON; 
 $username = !empty($_POST[&#39;username&#39;]) ? json_str_iconv(trim($_POST[&#39;username&#39;])) : &#39;&#39;; 
 $password = !empty($_POST[&#39;password&#39;]) ? trim($_POST[&#39;password&#39;]) : &#39;&#39;; 
 $result = array(&#39;error&#39; => 0, &#39;content&#39; => &#39;&#39;); 
 $captcha = intval($_CFG[&#39;captcha&#39;]); 
 if ($user->login($username, $password)) 
 { 
  update_user_info(); //更新用户信息 
  recalculate_price(); // 重新计算购物车中的商品价格 
  $smarty->assign(&#39;user_info&#39;, get_user_info()); 
  $ucdata = empty($user->ucdata)? "" : $user->ucdata; 
  $result[&#39;ucdata&#39;] = $ucdata; 
  $result[&#39;content&#39;] = $smarty->fetch(&#39;library/member_info.lbi&#39;); 
 } 
 else 
 { 
  $result[&#39;error&#39;] = 1; 
  $result[&#39;content&#39;] = $_LANG[&#39;login_failure&#39;]; 
 } 
 die($json->encode($result)); 
}

Changer

// 不需要登录的操作或自己验证是否登录(如ajax处理)的act 
$not_login_arr = 
array(&#39;login&#39;,&#39;act_login&#39;,&#39;register&#39;,&#39;act_register&#39;,&#39;act_edit_password&#39;,&#39;get_password&#39;,&#39;send_pwd_email&#39;,&#39;password&#39;, &#39;signin&#39;, &#39;add_tag&#39;, &#39;collect&#39;, &#39;return_to_cart&#39;, &#39;logout&#39;, &#39;email_list&#39;, &#39;validate_email&#39;, &#39;send_hash_mail&#39;, &#39;order_query&#39;, &#39;is_registered&#39;, &#39;check_email&#39;,&#39;clear_history&#39;,&#39;qpassword_name&#39;, &#39;get_passwd_question&#39;, &#39;check_answer&#39;);

en

// 不需要登录的操作或自己验证是否登录(如ajax处理)的act 
$not_login_arr = 
array(&#39;ajax_login&#39;,&#39;login&#39;,&#39;act_login&#39;,&#39;register&#39;,&#39;act_register&#39;,&#39;act_edit_password&#39;,&#39;get_password&#39;,&#39;send_pwd_email&#39;,&#39;password&#39;, &#39;signin&#39;, &#39;add_tag&#39;, &#39;collect&#39;, &#39;return_to_cart&#39;, &#39;logout&#39;, &#39;email_list&#39;, &#39;validate_email&#39;, &#39;send_hash_mail&#39;, &#39;order_query&#39;, &#39;is_registered&#39;, &#39;check_email&#39;,&#39;clear_history&#39;,&#39;qpassword_name&#39;, &#39;get_passwd_question&#39;, &#39;check_answer&#39;);

Sous le fichier common.js,

dans la méthode openLginp(), modifiez le code HTML de newp.innerHTML et ajoutez une méthode ajaxLoginSubmit() à l'étiquette de la boîte de connexion.

//生成层内内容 
 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;;

Écrivez simplement deux méthodes vous-même

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; 
}

Ce qui précède est ce que j'ai compilé pour tout le monde, j'espère que cela sera utile à tout le monde à l'avenir.

Articles connexes :

Questions d'entretien sur AJAX (avec réponses)

Une analyse détaillée de l'utilisation d'AJAX pour votre méthode (code collé)

PHP basé sur anti-ajax push pour implémenter les étapes de push de message en temps réel explication détaillée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn