Maison > interface Web > js tutoriel > le corps du texte

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

亚连
Libérer: 2018-05-22 15:59:28
original
2736 Les gens l'ont consulté

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)); 
}
Copier après la connexion

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)); 
}
Copier après la connexion

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;);
Copier après la connexion

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;);
Copier après la connexion

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;;
Copier après la connexion

É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; 
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!