zencart会员登陆保存登陆状态

2012-07-26 20:27 来源:www.chinab4c.com 作者:zencart专家

???? zencart会员登陆保存登陆状态,这个功能是非常重要的,也是必要的。我们在zencart会员登陆前台的时候,当我们勾选了记得我。那么我们就可以直接在关闭浏览器的情况下。直接实现zencart自动登陆状态。为了实现这个功能,我们必须对zencart进行二次开发

?? 1:首先在zen cart亚 搏增加以下代码。includes/templates/template_default/templates/tpl_login_default.php

???

?? 2:其次在includes/application_top.php里面增加以下代码。

??? if(!$_SESSION['customer_id']){
?
?
??if(isset($_COOKIE['zc']['email']) && isset($_COOKIE['zc']['pwd'])){
??
??// Check if email exists
??$check_customer_query = "SELECT customers_id, customers_firstname, customers_lastname, customers_password,
??????????customers_email_address, customers_default_address_id,
??????????customers_authorization, customers_referral
????????? FROM " . TABLE_CUSTOMERS . "
????????? WHERE customers_email_address = :emailAddress";

??$check_customer_query? =$db->bindVars($check_customer_query, ':emailAddress', $_COOKIE['zc']['email'], 'string');
??$check_customer = $db->Execute($check_customer_query);

??if (!$check_customer->RecordCount()) {
???
??} elseif ($check_customer->fields['customers_authorization'] == '4') {
??
??} else {
??? // Check that password is good
??? if (!zen_validate_password($_COOKIE['zc']['pwd'], $check_customer->fields['customers_password'])) {
????
??? } else {
???if (SESSION_RECREATE == 'True') {
???? zen_session_recreate();
???}

???$check_country_query = "SELECT entry_country_id, entry_zone_id
????????? FROM " . TABLE_ADDRESS_BOOK . "
????????? WHERE customers_id = :customersID
????????? AND address_book_id = :addressBookID";

???$check_country_query = $db->bindVars($check_country_query, ':customersID', $check_customer->fields['customers_id'], 'integer');
???$check_country_query = $db->bindVars($check_country_query, ':addressBookID', $check_customer->fields['customers_default_address_id'], 'integer');
???$check_country = $db->Execute($check_country_query);

???$_SESSION['customer_id'] = $check_customer->fields['customers_id'];
???$_SESSION['customer_default_address_id'] = $check_customer->fields['customers_default_address_id'];
???$_SESSION['customers_authorization'] = $check_customer->fields['customers_authorization'];
???$_SESSION['customer_first_name'] = $check_customer->fields['customers_firstname'];
???$_SESSION['customer_last_name'] = $check_customer->fields['customers_lastname'];
???$_SESSION['customer_country_id'] = $check_country->fields['entry_country_id'];
???$_SESSION['customer_zone_id'] = $check_country->fields['entry_zone_id'];

???$sql = "UPDATE " . TABLE_CUSTOMERS_INFO . "
????? SET customers_info_date_of_last_logon = now(),
?????? customers_info_number_of_logons = customers_info_number_of_logons+1
????? WHERE customers_info_id = :customersID";

???$sql = $db->bindVars($sql, ':customersID',? $_SESSION['customer_id'], 'integer');
???$db->Execute($sql);
???$zco_notifier->notify('NOTIFY_LOGIN_SUCCESS');

???// bof: contents merge notice
???// save current cart contents count if required
???if (SHOW_SHOPPING_CART_COMBINED > 0) {
???? $zc_check_basket_before = $_SESSION['cart']->count_contents();
???}

???// bof: not require part of contents merge notice
???// restore cart contents
???$_SESSION['cart']->restore_contents();
???// eof: not require part of contents merge notice

???// check current cart contents count if required
???if (SHOW_SHOPPING_CART_COMBINED > 0 && $zc_check_basket_before > 0) {
???? $zc_check_basket_after = $_SESSION['cart']->count_contents();
???? if (($zc_check_basket_before != $zc_check_basket_after) && $_SESSION['cart']->count_contents() > 0 && SHOW_SHOPPING_CART_COMBINED > 0) {
????if (SHOW_SHOPPING_CART_COMBINED == 2) {
????? // warning only do not send to cart
????? $messageStack->add_session('header', WARNING_SHOPPING_CART_COMBINED, 'caution');
????}
????if (SHOW_SHOPPING_CART_COMBINED == 1) {
????? // show warning and send to shopping cart for review
????? $messageStack->add_session('shopping_cart', WARNING_SHOPPING_CART_COMBINED, 'caution');
????
????}
???? }
???}
???// eof: contents merge notice

???if (sizeof($_SESSION['navigation']->snapshot) > 0) {
???? //??? $back = sizeof($_SESSION['navigation']->path)-2;
???? //if (isset($_SESSION['navigation']->path[$back]['page'])) {
???? //??? if (sizeof($_SESSION['navigation']->path)-2 > 0) {
???? $origin_href = zen_href_link($_SESSION['navigation']->snapshot['page'], zen_array_to_string($_SESSION['navigation']->snapshot['get'], array(zen_session_name())), $_SESSION['navigation']->snapshot['mode']);
???? //??????????? $origin_href = zen_back_link_only(true);
???? $_SESSION['navigation']->clear_snapshot();
????
???} else {
????
???}
??? }
??}

?}

}

??? 通过这次的zencart二次开发,我们实现了zencart会员登陆保存登陆状态。

??? 来源:http://www.chinab4c.com

?