Page 1 of 2 12 LastLast
Results 1 to 10 of 15
  1. #1
    Join Date
    Mar 2006
    Posts
    44
    Plugin Contributions
    0

    Default using a forum with zen cart?

    I am looking for some information on how the phpBB forum stuff works with the zen-cart. I can't find any documentation on it.

    Does it allow members of a phpBB forum that already exsist, login to the zen-cart without having to register again? What are the specific features that the forum linking does??

    I know you can create a user to go with the forum when you checkout, but can it grab users that already exist in the forum to use to login to the zen cart as well?

    If anyone has any documentation on this or what exactly happens, that would be great. You could direct me. Thanks!

  2. #2
    Join Date
    Jan 2004
    Posts
    66,444
    Plugin Contributions
    279

    Default Re: using a forum with zen cart?

    Quote Originally Posted by magicfun
    I know you can create a user to go with the forum when you checkout, but can it grab users that already exist in the forum to use to login to the zen cart as well?
    No, it doesn't have any linkage to retrieve existing users.

    It CAN:
    - allow new signups to choose a nickname
    - keep passwords in sync when pwd is changed from Zen Cart
    - keep email address in sync when email address is changed from Zen Cart
    .

    Zen Cart - putting the dream of business ownership within reach of anyone!
    Donate to: DrByte directly or to the Zen Cart team as a whole

    Remember: Any code suggestions you see here are merely suggestions. You assume full responsibility for your use of any such suggestions, including any impact ANY alterations you make to your site may have on your PCI compliance.
    Furthermore, any advice you see here about PCI matters is merely an opinion, and should not be relied upon as "official". Official PCI information should be obtained from the PCI Security Council directly or from one of their authorized Assessors.

  3. #3
    Join Date
    Jun 2006
    Posts
    179
    Plugin Contributions
    0

    Default Re: using a forum with zen cart?

    Ok, but how to do that? I have the shop already and have now installed phpBB2. How can i make so only my registered customer can use the forum???

  4. #4
    Join Date
    Mar 2006
    Posts
    44
    Plugin Contributions
    0

    Default Re: using a forum with zen cart?

    I am wondering how to do this as well...I want so if my customers buy something from the store, it automatically lets them use the username and pass they created for the store, to let them login to the forum as well. This goes vice versa as well. Somehow the zen-cart needs to be connected and share users with the phpbb.

    Anyone know how to do this?

  5. #5
    Join Date
    Feb 2007
    Posts
    14
    Plugin Contributions
    0

    Default Re: using a forum with zen cart?

    Same here.....

    On installation of zen it asked if I had a forum... well I didnt!

    I have now installed one and then went to Config>mystore>enable phpbb.... true

    ok.....


    Then I went and created an account on zen and its not showing on the phpbb.

    Also.... no where one the zen cart can I see a link to the phpbb or in admin a way to create a link to it..

    I'm perplexed and cant find the solution by searching in here
    Using zencart 1.3.7
    Image Litebox

  6. #6

    Default Re: using a forum with zen cart?

    I have done this with osCommerce and will probably be modifying the login module of Zen Cart to do the same thing. If anyone has any ideas, suggestions, or experience with this please let me know. Also, if anyone knows just how different the login modules are from osCommerce, that would be great as well...

  7. #7

    Default Re: using a forum with zen cart?

    Here's my first-blush look at the code and approach:

    Here is the file in zen cart that makes the magic happen:

    ...\includes\modules\pages\header_php.php

    The specific code snippet is:

    Code:
    if (isset($_GET['action']) && ($_GET['action'] == 'process')) {
      $email_address = zen_db_prepare_input($_POST['email_address']);
      $password = zen_db_prepare_input($_POST['password']);
    
      /* Privacy-policy-read does not need to be checked during "login"
      if (DISPLAY_PRIVACY_CONDITIONS == 'true') {
      if (!isset($_POST['privacy_conditions']) || ($_POST['privacy_conditions'] != '1')) {
      $error = true;
      $messageStack->add('create_account', ERROR_PRIVACY_STATEMENT_NOT_ACCEPTED, 'error');
      }
      }
      */
    
    
      // Check if email exists
      $check_customer_query = "SELECT customers_id, customers_firstname, customers_password,
                                        customers_email_address, customers_default_address_id,
                                        customers_authorization, customers_referral
                               FROM " . TABLE_CUSTOMERS . "
                               WHERE customers_email_address = :email";
    
      $check_customer_query  =$db->bindVars($check_customer_query, ':email', $email_address, 'string');
      $check_customer = $db->Execute($check_customer_query);
    
      if (!$check_customer->RecordCount()) {
        $error = true;
      } else {
        // Check that password is good
        if (!zen_validate_password($password, $check_customer->fields['customers_password'])) {
          $error = true;
        } 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 = :adressBookID";
    
          $check_country_query = $db->bindVars($check_country_query, ':customersID', $check_customer->fields['customers_id'], 'integer');
          $check_country_query = $db->bindVars($check_country_query, ':adressBookID', $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_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');
    
          // restore cart contents
          $_SESSION['cart']->restore_contents();
          /*
          if ($_SESSION['cart']->count_contents() > 0) {
          zen_redirect(zen_href_link(FILENAME_CHECKOUT_SHIPPING));
          }
          */
          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();
            zen_redirect($origin_href);
          } else {
            zen_redirect(zen_href_link(FILENAME_DEFAULT));
          }
        }
      }
    }
    previously I made the following tweak to osCommerce in the login.php file:

    Code:
    // Check if email exists
        $check_customer_query = tep_db_query("select user_id, user_password from phpbb_users where username = '" . $phpbb_username . "'");
        if (!tep_db_num_rows($check_customer_query)) {
          $error = true;
        } else {
          $phpbb_check_customer = tep_db_fetch_array($check_customer_query);
    
    // Check that password is good
          if (! md5($password) == $phpbb_check_customer['user_password']) {
            $error = true;
          } else {
    
    ## Check to see if customer has logged in to osCommerce before
    
          $Qcheck = tep_db_query("select customers_info_number_of_logons from " . TABLE_CUSTOMERS_INFO . " where customers_info_id = '" . $phpbb_check_customer['user_id'] . "'");
    
          if (tep_db_num_rows($Qcheck) > 0) {
            tep_db_query("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 = '" . (int)$phpbb_check_customer['user_id'] . "'");
        
    ## update query needs to be written to freshen the osc_customer table each time a user logs in.
    
            $Qphpbb_users = tep_db_query("select user_firstname, user_lastname, user_email, user_address1, user_address2, user_city, user_state, user_zip, user_homephone, user_chronicleemail from phpbb_users where user_id = '" . $phpbb_check_customer['user_id'] . "'");
            $phpbb_users_array = tep_db_fetch_array($Qphpbb_users);
    
        $Qdefault_address = tep_db_query("select customers_default_address_id from " . TABLE_CUSTOMERS . " where customers_id = '" . $phpbb_check_customer['user_id'] . "'");
        $default_address = tep_db_fetch_array($Qdefault_address);
    
            $sql_data_array = array('customers_firstname' => $phpbb_users_array['user_firstname'],
                                    'customers_lastname' => $phpbb_users_array['user_lastname'],
                                    'customers_email_address' => $phpbb_users_array['user_email'],
                                    'customers_telephone' => $phpbb_users_array['user_homephone'],
                                    'customers_newsletter' => $phpbb_users_array['user_chronicleemail'],
                                    );
            tep_db_perform(TABLE_CUSTOMERS, $sql_data_array, 'update', "customers_id ='" . $phpbb_check_customer['user_id'] . "'");
            
        
        $sql_data_array = array('entry_firstname' => $phpbb_users_array['user_firstname'],
                                    'entry_lastname' => $phpbb_users_array['user_lastname'],
                                    'entry_street_address' => $phpbb_users_array['user_address1'] . " " .  $phpbb_users_array['user_address2'],
                                    'entry_postcode' => $phpbb_users_array['user_zip'],
                                    'entry_city' => $phpbb_users_array['user_city'],
                    'entry_state' => $phpbb_users_array['user_state'],
                       );
            tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array, 'update', "address_book_id = '" . $default_address['customers_default_address_id'] . "' and customers_id ='" . $phpbb_check_customer['user_id'] . "'");
                   
          } else {
            
            tep_db_query("insert into " . TABLE_CUSTOMERS_INFO . " (customers_info_id, customers_info_date_of_last_logon, customers_info_number_of_logons, customers_info_date_account_created) values (" . $phpbb_check_customer['user_id'] . " , now(), 1, now())");
            
    ## Query phpBB database to get info and populate osc_customers table.
    
            $Qphpbb_users = tep_db_query("select user_firstname, user_lastname, user_email, user_address1, user_address2, user_city, user_state, user_zip, user_homephone, user_chronicleemail from phpbb_users where user_id = '" . $phpbb_check_customer['user_id'] . "'");
            $phpbb_users_array = tep_db_fetch_array($Qphpbb_users);
    
            $sql_data_array = array('customers_id' => $phpbb_check_customer['user_id'],
                                'customers_firstname' => $phpbb_users_array['user_firstname'],
                                    'customers_lastname' => $phpbb_users_array['user_lastname'],
                                    'customers_email_address' => $phpbb_users_array['user_email'],
                                    'customers_telephone' => $phpbb_users_array['user_homephone'],
                                    'customers_newsletter' => $phpbb_users_array['user_chronicleemail'],
                                    );
        tep_db_perform(TABLE_CUSTOMERS, $sql_data_array);
    
            $sql_data_array = array('customers_id' => $phpbb_check_customer['user_id'],
                                    'entry_firstname' => $phpbb_users_array['user_firstname'],
                                    'entry_lastname' => $phpbb_users_array['user_lastname'],
                                    'entry_street_address' => $phpbb_users_array['user_address1'] . " " .  $phpbb_users_array['user_address2'],
                                    'entry_postcode' => $phpbb_users_array['user_zip'],
                                    'entry_city' => $phpbb_users_array['user_city'],
                    'entry_state' => $phpbb_users_array['user_state'],
                                    'entry_country_id' => STORE_COUNTRY,
                       );
        tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);
        
        $address_id = tep_db_insert_id();
        
        tep_db_query("update " . TABLE_CUSTOMERS . " set customers_default_address_id = '" . (int)$address_id . "' where customers_id = '" . $phpbb_check_customer['user_id'] . "'");    
    
            if (SESSION_RECREATE == 'True') {
              tep_session_recreate();
              }
            }
        
    ## Now begin normal login and session stuff
        
        $check_customer_query = tep_db_query("select customers_firstname, customers_email_address, customers_default_address_id from " . TABLE_CUSTOMERS . " where customers_id = '" . $phpbb_check_customer['user_id'] . "'");
        if (!tep_db_num_rows($check_customer_query)) {
          $error = true;
        } else {
          $check_customer = tep_db_fetch_array($check_customer_query);
        }   
        
        $check_country_query = tep_db_query("select entry_country_id, entry_zone_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . $phpbb_check_customer['user_id'] . "' and address_book_id = '" . (int)$check_customer['customers_default_address_id'] . "'");
            $check_country = tep_db_fetch_array($check_country_query);
    
            $customer_id = $phpbb_check_customer['user_id'];
            $customer_default_address_id = $check_customer['customers_default_address_id'];
            $customer_first_name = $check_customer['customers_firstname'];
            $customer_country_id = $check_country['entry_country_id'];
            $customer_zone_id = $check_country['entry_zone_id'];
            tep_session_register('customer_id');
            tep_session_register('customer_default_address_id');
            tep_session_register('customer_first_name');
            tep_session_register('customer_country_id');
            tep_session_register('customer_zone_id');
    Notice some of the similarities, it seems as though the zen team has embedded the login process into a separate file and further embedded it into an if->then->else statement. Tweaking the database queries to read the phpbb_user table shouldn't be too difficult... Perhaps it should be moved to a separate "Bridge" file that could contain bridges to other software packages as well...

  8. #8

    Default Re: using a forum with zen cart?

    *bump*

    Hello?

  9. #9

    Default Re: using a forum with zen cart?

    No interest then eh? Is there somewhere else I should look for help?

  10. #10
    Join Date
    Jan 2004
    Posts
    66,444
    Plugin Contributions
    279

    Default Re: using a forum with zen cart?

    If someone is logging in via a "Login" link (ie: URL contains main_page=login ) then the /includes/modules/pages/login/header_php.php file handles the login logic of validating the email address and password and logging the customer in.

    If they are using "create_account" (ie: URL contains main_page=create_account or if they've filled in the new-account fields on the bottom half of the login page), then there is a handling stub in /includes/modules/pages/create_account/header_php.php and a processing module in /includes/modules/create_account.php


    Your custom code appears to assume that a lot of customer data is collected in the phpbb database. My recollection is that phpbb only asks for username and password ... which really isn't adequate for the information required by the shopping cart system. However, if you've modified your phpbb setup to collect that information, then I suppose you've already considered that. Otherwise, you'll have to work a way to collect any missing information -- perhaps redirecting them to My Account if their data has just been transfered might be one approach?
    .

    Zen Cart - putting the dream of business ownership within reach of anyone!
    Donate to: DrByte directly or to the Zen Cart team as a whole

    Remember: Any code suggestions you see here are merely suggestions. You assume full responsibility for your use of any such suggestions, including any impact ANY alterations you make to your site may have on your PCI compliance.
    Furthermore, any advice you see here about PCI matters is merely an opinion, and should not be relied upon as "official". Official PCI information should be obtained from the PCI Security Council directly or from one of their authorized Assessors.

 

 
Page 1 of 2 12 LastLast

Similar Threads

  1. Using Linkpoint/YourPay API module with Zen Cart Zen Cart 1.3.0.1
    By mars22 in forum Built-in Shipping and Payment Modules
    Replies: 4
    Last Post: 23 Oct 2010, 11:57 AM
  2. Using FrontPageSlideShoe with Zen-Cart?
    By wdkstudio in forum General Questions
    Replies: 6
    Last Post: 6 Sep 2009, 02:54 AM
  3. Intergrating a forum social media with Zen Cart
    By wearethecure in forum General Questions
    Replies: 0
    Last Post: 1 May 2009, 10:02 PM
  4. How to integrate zen cart with phpBB, SMF or other forum open source software?
    By sunzhoujian in forum Templates, Stylesheets, Page Layout
    Replies: 5
    Last Post: 7 Jun 2008, 04:23 PM
  5. using non-zen cart templates with zen cart
    By ssbeats in forum General Questions
    Replies: 2
    Last Post: 26 Jun 2007, 09:16 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg