<<<<<<CONTINUED FROM PREVIOUS POST
PHP Code:
  // END PO Box Ban 1/1

      
if (ACCOUNT_STATE == 'true') {
        
$check_query "SELECT count(*) AS total
                        FROM " 
TABLE_ZONES "
                        WHERE zone_country_id = :zoneCountryID"
;
        
$check_query $db->bindVars($check_query':zoneCountryID'$country_shipping'integer');
        
$check $db->Execute($check_query);
        
$entry_state_has_zones_shipping = ($check->fields['total'] > 0);
        if (
$entry_state_has_zones_shipping == true) {
          
$zone_query "SELECT distinct zone_id, zone_name, zone_code
                         FROM " 
TABLE_ZONES "
                         WHERE zone_country_id = :zoneCountryID
                         AND " 

                       ((
trim($state_shipping) != '' && $zone_id_shipping == 0) ? "(upper(zone_name) like ':zoneState%' OR upper(zone_code) like '%:zoneState%') OR " "") .
                        
"zone_id = :zoneID
                         ORDER BY zone_code ASC, zone_name"
;

          
$zone_query $db->bindVars($zone_query':zoneCountryID'$country_shipping'integer');
          
$zone_query $db->bindVars($zone_query':zoneState'strtoupper($state_shipping), 'noquotestring');
          
$zone_query $db->bindVars($zone_query':zoneID'$zone_id_shipping'integer');
          
$zone_shipping $db->Execute($zone_query);

          
//look for an exact match on zone ISO code
          
$found_exact_iso_match_shipping = ($zone->RecordCount() == 1);
          if (
$zone_shipping->RecordCount() > 1) {
            while (!
$zone_shipping->EOF && !$found_exact_iso_match_shipping) {
              if (
strtoupper($zone->fields['zone_code']) == strtoupper($state_shipping) ) {
                
$found_exact_iso_match_shipping true;
                continue;
              }
              
$zone_shipping->MoveNext();
            }
          }

          if (
$found_exact_iso_match_shipping) {
            
$zone_id_shipping $zone_shipping->fields['zone_id'];
            
$zone_name_shipping $zone_shipping->fields['zone_name'];
          } else {
            
$error true;
            
$error_state_input_shipping true;
            
$messageStack->add_session('login'ENTRY_STATE_ERROR_SELECT);
          }
        } else {
          if (
strlen($state_shipping) < ENTRY_STATE_MIN_LENGTH) {
            
$error true;
            
$error_state_input_shipping true;
            
$messageStack->add_session('login'ENTRY_STATE_ERROR);
          }
        }
      }

      if (
strlen($postcode_shipping) < ENTRY_POSTCODE_MIN_LENGTH) {
        
$error true;
        
$messageStack->add_session('login'ENTRY_POST_CODE_ERROR);
      }

      if ( (
is_numeric($country_shipping) == false) || ($country_shipping 1) ) {
        
$error true;
        
$messageStack->add_session('login'ENTRY_COUNTRY_ERROR);
      }
    }
// end shipping  

  
if ($error == true) {
    
// hook notifier class
    
$zco_notifier->notify('NOTIFY_FAILURE_DURING_CREATE_ACCOUNT');
    
  } else {
    
$sql_data_array = array('customers_firstname' => $firstname,
                            
'customers_lastname' => $lastname,
                            
'customers_email_address' => $email_address,
                            
'customers_nick' => $nick,
                            
'customers_telephone' => $telephone,
                            
'customers_fax' => $fax,
                            
'customers_newsletter' => (int)$newsletter,
                            
'customers_email_format' => $email_format,
                            
'customers_default_address_id' => 0,
                            
'customers_password' => zen_encrypt_password($password),
                            
'customers_authorization' => (int)CUSTOMERS_APPROVAL_AUTHORIZATION
    
);

    if ((
CUSTOMERS_REFERRAL_STATUS == '2' and $customers_referral != '')) $sql_data_array['customers_referral'] = $customers_referral;
    if (
ACCOUNT_GENDER == 'true'$sql_data_array['customers_gender'] = $gender;
    if (
ACCOUNT_DOB == 'true'$sql_data_array['customers_dob'] = (empty($_POST['dob']) || $dob_entered == '0001-01-01 00:00:00' zen_db_prepare_input('0001-01-01 00:00:00') : zen_date_raw($_POST['dob']));

    
zen_db_perform(TABLE_CUSTOMERS$sql_data_array);

    
$_SESSION['customer_id'] = $db->Insert_ID();

    
$zco_notifier->notify('NOTIFY_MODULE_CREATE_ACCOUNT_ADDED_CUSTOMER_RECORD'array_merge(array('customer_id' => $_SESSION['customer_id']), $sql_data_array));

    
$sql_data_array = array('customers_id' => $_SESSION['customer_id'],
                            
'entry_firstname' => $firstname,
                            
'entry_lastname' => $lastname,
                            
'entry_street_address' => $street_address,
                            
'entry_postcode' => $postcode,
                            
'entry_city' => $city,
                            
'entry_country_id' => $country);

    if (
ACCOUNT_GENDER == 'true'$sql_data_array['entry_gender'] = $gender;
    if (
ACCOUNT_COMPANY == 'true'$sql_data_array['entry_company'] = $company;
    if (
ACCOUNT_SUBURB == 'true'$sql_data_array['entry_suburb'] = $suburb;
    if (
ACCOUNT_STATE == 'true') {
      if (
$zone_id 0) {
        
$sql_data_array['entry_zone_id'] = $zone_id;
        
$sql_data_array['entry_state'] = '';
      } else {
        
$sql_data_array['entry_zone_id'] = '0';
        
$sql_data_array['entry_state'] = $state;
      }
    }

    
zen_db_perform(TABLE_ADDRESS_BOOK$sql_data_array);

    
$address_id $db->Insert_ID();

    
$zco_notifier->notify('NOTIFY_MODULE_CREATE_ACCOUNT_ADDED_ADDRESS_BOOK_RECORD'array_merge(array('address_id' => $address_id), $sql_data_array));

    
$sql "update " TABLE_CUSTOMERS "
              set customers_default_address_id = '" 
. (int)$address_id "'
              where customers_id = '" 
. (int)$_SESSION['customer_id'] . "'";

    
$db->Execute($sql);
    
// shipping address
    
if ($_GET['main_page'] != "create_account" && enable_shippingAddress()) {
      
// create shipping address
      
$sql_data_array = array(array('fieldName'=>'customers_id''value'=>$_SESSION['customer_id'], 'type'=>'integer'),
                              array(
'fieldName'=>'entry_firstname''value'=>$firstname_shipping'type'=>'string'),
                              array(
'fieldName'=>'entry_lastname','value'=>$lastname_shipping'type'=>'string'),
                              array(
'fieldName'=>'entry_street_address','value'=>$street_address_shipping'type'=>'string'),
                              array(
'fieldName'=>'entry_postcode''value'=>$postcode_shipping'type'=>'string'),
                              array(
'fieldName'=>'entry_city''value'=>$city_shipping'type'=>'string'),
                              array(
'fieldName'=>'entry_country_id''value'=>$country_shipping'type'=>'integer')
      );

      if (
ACCOUNT_GENDER == 'true'$sql_data_array[] = array('fieldName'=>'entry_gender''value'=>$gender_shipping'type'=>'enum:m|f');
      if (
ACCOUNT_COMPANY == 'true'$sql_data_array[] = array('fieldName'=>'entry_company''value'=>$company_shipping'type'=>'string');
      if (
ACCOUNT_SUBURB == 'true'$sql_data_array[] = array('fieldName'=>'entry_suburb''value'=>$suburb_shipping'type'=>'string');
      if (
ACCOUNT_STATE == 'true') {
        if (
$zone_id_shipping 0) {
          
$sql_data_array[] = array('fieldName'=>'entry_zone_id''value'=>$zone_id_shipping'type'=>'integer');
          
$sql_data_array[] = array('fieldName'=>'entry_state''value'=>'''type'=>'string');
        } else {
          
$sql_data_array[] = array('fieldName'=>'entry_zone_id''value'=>0'type'=>'integer');
          
$sql_data_array[] = array('fieldName'=>'entry_state''value'=>$state_shipping'type'=>'string');
        }
      }
      
$db->perform(TABLE_ADDRESS_BOOK$sql_data_array);
      
$_SESSION['sendto'] = $db->Insert_ID();
    } else {
      
// FEC MODIFICATION
      
$_SESSION['sendto'] = $_SESSION['cart_address_id'] = (int)$address_id;
    }
    
$_SESSION['shipping'] = ''
    
$sql "insert into " TABLE_CUSTOMERS_INFO "
                          (customers_info_id, customers_info_number_of_logons,
                           customers_info_date_account_created)
              values ('" 
. (int)$_SESSION['customer_id'] . "', '0', now())";

    
$db->Execute($sql);
    
// BEGIN newsletter_subscribe mod 1/1
// If a newsletter only account exists we update the info,
// but keep the subscription active, and give them a message that to
// change they should do so on their account page (after creation).
    
if(defined('NEWSONLY_SUBSCRIPTION_ENABLED') && (NEWSONLY_SUBSCRIPTION_ENABLED=='true')) {
      
$check_subscribers_query "select count(*) as total from " TABLE_SUBSCRIBERS "
                    where email_address = '" 
zen_db_input($email_address) . "' ";
      
$check_subscribers $db->Execute($check_subscribers_query);
      if (
$check_subscribers->fields['total'] > 0) {
        
$sql "UPDATE " TABLE_SUBSCRIBERS " SET
                customers_id = '" 
. (int)$_SESSION['customer_id'] . "',
                email_format = '" 
zen_db_input($email_format) . "',
                confirmed = '1' 
                WHERE email_address = '" 
zen_db_input($email_address) . "' ";
        
$db->Execute($sql);
        
$messageStack->add_session('login'SUBSCRIBE_MERGED_NEWSONLY_ACCT);
      } else {
        if (!empty(
$newsletter)) {
          
$sql "INSERT INTO " TABLE_SUBSCRIBERS 
                  (customers_id, email_address, email_format, confirmed, subscribed_date)
                  VALUES ('" 
. (int)$_SESSION['customer_id'] . "', '" zen_db_input($email_address) . "', '" zen_db_input($email_format) . "', '1', now())";
          
$db->Execute($sql);
        }
      }
    }
// END newsletter_subscribe mod 1/1

    // phpBB create account
    
if ($phpBB->phpBB['installed'] == true) {
      
$phpBB->phpbb_create_account($nick$password$email_address);
    }
    
// End phppBB create account

    
if (SESSION_RECREATE == 'True') {
      
zen_session_recreate();
    }

    
$_SESSION['customer_first_name'] = $firstname;
    
$_SESSION['customer_default_address_id'] = $address_id;
    
$_SESSION['customer_country_id'] = $country;
    
$_SESSION['customer_zone_id'] = $zone_id;
    
$_SESSION['customers_authorization'] = $customers_authorization;

    
// restore cart contents
    
$_SESSION['cart']->restore_contents();

    
// hook notifier class
    
$zco_notifier->notify('NOTIFY_LOGIN_SUCCESS_VIA_CREATE_ACCOUNT');

    
// build the message content
    
$name $firstname ' ' $lastname;

    if (
ACCOUNT_GENDER == 'true') {
      if (
$gender == 'm') {
        
$email_text sprintf(EMAIL_GREET_MR$lastname);
      } else {
        
$email_text sprintf(EMAIL_GREET_MS$lastname);
      }
    } else {
      
$email_text sprintf(EMAIL_GREET_NONE$firstname);
    }
    
$html_msg['EMAIL_GREETING'] = str_replace('\n','',$email_text);
    
$html_msg['EMAIL_FIRST_NAME'] = $firstname;
    
$html_msg['EMAIL_LAST_NAME']  = $lastname;

    
// initial welcome
    
$email_text .=  EMAIL_WELCOME;
    
$html_msg['EMAIL_WELCOME'] = str_replace('\n','',EMAIL_WELCOME);

    if (
NEW_SIGNUP_DISCOUNT_COUPON != '' and NEW_SIGNUP_DISCOUNT_COUPON != '0') {
      
$coupon_id NEW_SIGNUP_DISCOUNT_COUPON;
      
$coupon $db->Execute("select * from " TABLE_COUPONS " where coupon_id = '" $coupon_id "'");
      
$coupon_desc $db->Execute("select coupon_description from " TABLE_COUPONS_DESCRIPTION " where coupon_id = '" $coupon_id "' and language_id = '" $_SESSION['languages_id'] . "'");
      
$db->Execute("insert into " TABLE_COUPON_EMAIL_TRACK " (coupon_id, customer_id_sent, sent_firstname, emailed_to, date_sent) values ('" $coupon_id ."', '0', 'Admin', '" $email_address "', now() )");

      
$text_coupon_help sprintf(TEXT_COUPON_HELP_DATEzen_date_short($coupon->fields['coupon_start_date']),zen_date_short($coupon->fields['coupon_expire_date']));

      
// if on, add in Discount Coupon explanation
      //        $email_text .= EMAIL_COUPON_INCENTIVE_HEADER .
      
$email_text .= "\n" EMAIL_COUPON_INCENTIVE_HEADER .
      (!empty(
$coupon_desc->fields['coupon_description']) ? $coupon_desc->fields['coupon_description'] . "\n\n" '') . $text_coupon_help  "\n\n" .
      
strip_tags(sprintf(EMAIL_COUPON_REDEEM' ' $coupon->fields['coupon_code'])) . EMAIL_SEPARATOR;

      
$html_msg['COUPON_TEXT_VOUCHER_IS'] = EMAIL_COUPON_INCENTIVE_HEADER ;
      
$html_msg['COUPON_DESCRIPTION']     = (!empty($coupon_desc->fields['coupon_description']) ? '<strong>' $coupon_desc->fields['coupon_description'] . '</strong>' '');
      
$html_msg['COUPON_TEXT_TO_REDEEM']  = str_replace("\n"''sprintf(EMAIL_COUPON_REDEEM''));
      
$html_msg['COUPON_CODE']  = $coupon->fields['coupon_code'] . $text_coupon_help;
    } 
//endif coupon

    
if (NEW_SIGNUP_GIFT_VOUCHER_AMOUNT 0) {
      
$coupon_code zen_create_coupon_code();
      
$insert_query $db->Execute("insert into " TABLE_COUPONS " (coupon_code, coupon_type, coupon_amount, date_created) values ('" $coupon_code "', 'G', '" NEW_SIGNUP_GIFT_VOUCHER_AMOUNT "', now())");
      
$insert_id $db->Insert_ID();
      
$db->Execute("insert into " TABLE_COUPON_EMAIL_TRACK " (coupon_id, customer_id_sent, sent_firstname, emailed_to, date_sent) values ('" $insert_id ."', '0', 'Admin', '" $email_address "', now() )");

      
// if on, add in GV explanation
      
$email_text .= "\n\n" sprintf(EMAIL_GV_INCENTIVE_HEADER$currencies->format(NEW_SIGNUP_GIFT_VOUCHER_AMOUNT)) .
      
sprintf(EMAIL_GV_REDEEM$coupon_code) .
      
EMAIL_GV_LINK zen_href_link(FILENAME_GV_REDEEM'gv_no=' $coupon_code'NONSSL'false) . "\n\n" .
      
EMAIL_GV_LINK_OTHER EMAIL_SEPARATOR;
      
$html_msg['GV_WORTH'] = str_replace('\n','',sprintf(EMAIL_GV_INCENTIVE_HEADER$currencies->format(NEW_SIGNUP_GIFT_VOUCHER_AMOUNT)) );
      
$html_msg['GV_REDEEM'] = str_replace('\n','',str_replace('\n\n','<br />',sprintf(EMAIL_GV_REDEEM'<strong>' $coupon_code '</strong>')));
      
$html_msg['GV_CODE_NUM'] = $coupon_code;
      
$html_msg['GV_CODE_URL'] = str_replace('\n','',EMAIL_GV_LINK '<a href="' zen_href_link(FILENAME_GV_REDEEM'gv_no=' $coupon_code'NONSSL'false) . '">' TEXT_GV_NAME ': ' $coupon_code '</a>');
      
$html_msg['GV_LINK_OTHER'] = EMAIL_GV_LINK_OTHER;
    } 
// endif voucher

    // add in regular email welcome text
    
$email_text .= "\n\n" EMAIL_TEXT EMAIL_CONTACT EMAIL_GV_CLOSURE;

    
$html_msg['EMAIL_MESSAGE_HTML']  = str_replace('\n','',EMAIL_TEXT);
    
$html_msg['EMAIL_CONTACT_OWNER'] = str_replace('\n','',EMAIL_CONTACT);
    
$html_msg['EMAIL_CLOSURE']       = nl2br(EMAIL_GV_CLOSURE);

    
// include create-account-specific disclaimer
    
$email_text .= "\n\n" sprintf(EMAIL_DISCLAIMER_NEW_CUSTOMERSTORE_OWNER_EMAIL_ADDRESS). "\n\n";
    
$html_msg['EMAIL_DISCLAIMER'] = sprintf(EMAIL_DISCLAIMER_NEW_CUSTOMER'<a href="mailto:' STORE_OWNER_EMAIL_ADDRESS '">'STORE_OWNER_EMAIL_ADDRESS .' </a>');

    
//send welcome email
    
zen_mail($name$email_addressEMAIL_SUBJECT$email_textSTORE_NAMEEMAIL_FROM$html_msg'welcome');

    
// send additional emails
    
if (SEND_EXTRA_CREATE_ACCOUNT_EMAILS_TO_STATUS == '1' and SEND_EXTRA_CREATE_ACCOUNT_EMAILS_TO !='') {
      if (
$_SESSION['customer_id']) {
        
$account_query "select customers_firstname, customers_lastname, customers_email_address, customers_telephone, customers_fax
                            from " 
TABLE_CUSTOMERS "
                            where customers_id = '" 
. (int)$_SESSION['customer_id'] . "'";

        
$account $db->Execute($account_query);
      }

      
$extra_info=email_collect_extra_info($name,$email_address$account->fields['customers_firstname'] . ' ' $account->fields['customers_lastname'], $account->fields['customers_email_address'], $account->fields['customers_telephone'], $account->fields['customers_fax']);
      
$html_msg['EXTRA_INFO'] = $extra_info['HTML'];
      
zen_mail(''SEND_EXTRA_CREATE_ACCOUNT_EMAILS_TOSEND_EXTRA_CREATE_ACCOUNT_EMAILS_TO_SUBJECT ' ' EMAIL_SUBJECT,
      
$email_text $extra_info['TEXT'], STORE_NAMEEMAIL_FROM$html_msg'welcome_extra');
    } 
//endif send extra emails

    
zen_redirect(zen_href_link(FILENAME_CREATE_ACCOUNT_SUCCESS'''SSL'));

  } 
//endif !error
}


/*
 * Set flags for template use:
 */
  
$selected_country = (isset($_POST['zone_country_id']) && $_POST['zone_country_id'] != '') ? $country SHOW_CREATE_ACCOUNT_DEFAULT_COUNTRY;
  
$selected_country_shipping = (isset($_POST['zone_country_id_shipping']) && $_POST['zone_country_id_shipping'] != '') ? $country_shipping SHOW_CREATE_ACCOUNT_DEFAULT_COUNTRY;  
  
$flag_show_pulldown_states = ((($process == true || $entry_state_has_zones == true) && $zone_name == '') || ACCOUNT_STATE_DRAW_INITIAL_DROPDOWN == 'true' || $error_state_input) ? true false;
  
$flag_show_pulldown_states_shipping = ((($process_shipping == true || $entry_state_has_zones_shipping == true) && $zone_name_shipping == '') || ACCOUNT_STATE_DRAW_INITIAL_DROPDOWN == 'true' || $error_state_input_shipping) ? true false;
  
$state = ($flag_show_pulldown_states) ? ($state == '' '&nbsp;' $state) : $zone_name;
  
$state_shipping = ($flag_show_pulldown_states_shipping) ? ($state_shipping == '' '&nbsp;' $state_shipping) : $zone_name_shipping;
  
$state_field_label = ($flag_show_pulldown_states) ? '' ENTRY_STATE;
  
$state_field_label_shipping = ($flag_show_pulldown_states_shipping) ? '' ENTRY_STATE;

// This should be last line of the script:
$zco_notifier->notify('NOTIFY_MODULE_END_CREATE_ACCOUNT');
?> 

Im really new to all this and I shock myself sometimes with the things I manage to figure out.

This is all FULLY TESTED and WORKING please let me know if u face any issues I will try to support this to the best of my ability.