Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Getting this error, can someome help me


Guest

Recommended Posts

I am getting the following error and I can not figure out what is wrong, can someone help me

 

Warning: Cannot modify header information - headers already sent by (output started at /home/harbors/public_html/catalog/includes/languages/english.php:345) in /home/harbors/public_html/catalog/includes/functions/general.php on line 28

 

 

This is the code and everything looks alright to me can someone double check for me

 

if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url

$url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL

}

}

header('Location: ' . $url); (THis is line 28 )

 

tep_exit();

}

Link to comment
Share on other sites

This is not on my line 28:

 

header('Location: ' . $url); (THis is line 28 )

 

I have a blank area at line 28!

 

 

 

 

/M

Link to comment
Share on other sites

It look like this:

 

 

// Redirect to another page or site

 function tep_redirect($url) {

   if ( (ENABLE_SSL == true) && (getenv('HTTPS') == 'on') ) { // We are loading an SSL page

     if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url

       $url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL

     }

   }



   header('Location: ' . $url);



   tep_exit();

 }

 

I don?t know if this will help you?

 

 

 

/M

Link to comment
Share on other sites

It look like this:

 

 

// Redirect to another page or site

 function tep_redirect($url) {

   if ( (ENABLE_SSL == true) && (getenv('HTTPS') == 'on') ) { // We are loading an SSL page

     if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url

       $url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL

     }

   }



   header('Location: ' . $url);







   tep_exit();

 }

 

I don?t know if this will help you?

 

 

 

/M

 

 

Merf

Thanks for the reply and the code, but I still can not get rid of the error. I am beginning to wonder if the error is actually in the general.php file. Does anyone know if I can get the entire code for the general.php file and just replace my existing code and see if that works?

 

I would appreciate any help I am pulling my hair out here trying to figure this out

Link to comment
Share on other sites

Here is my code....

 

 

<?php

 

/*

 

 $Id: general.php,v 1.212 2003/02/17 07:55:54 hpdl Exp $

 

 

 

 osCommerce, Open Source E-Commerce Solutions

 

 http://www.oscommerce.com

 

 

 

 Copyright (c) 2003 osCommerce

 

 

 

 Released under the GNU General Public License

 

*/

 

 

 

////

 

// Stop from parsing any further PHP code

 

 function tep_exit() {

 

  tep_session_close();

 

  exit();

 

 }

 

 

 

////

 

// Redirect to another page or site

 

 function tep_redirect($url) {

 

   if ( (ENABLE_SSL == true) && (getenv('HTTPS') == 'on') ) { // We are loading an SSL page

 

     if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url

 

       $url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL

 

     }

 

   }

 

 

 

   header('Location: ' . $url);

 

 

 

   tep_exit();

 

 }

 

 

 

////

 

// Error message wrapper

 

// When optional parameters are provided, it closes the application

 

// (ie, halts the current application execution task)

 

 function tep_error_message($error_message, $close_application = false, $close_application_error = '') {

 

   echo $error_message;

 

 

 

   if ($close_application == true) {

 

     die($close_application_error);

 

   }

 

 }

 

 

 

////

 

// Return a random row from a database query

 

 function tep_random_select($query) {

 

   $random_product = '';

 

   $random_query = tep_db_query($query);

 

   $num_rows = tep_db_num_rows($random_query);

 

   if ($num_rows > 0) {

 

     $random_row = tep_rand(0, ($num_rows - 1));

 

     tep_db_data_seek($random_query, $random_row);

 

     $random_product = tep_db_fetch_array($random_query);

 

   }

 

 

 

   return $random_product;

 

 }

 

 

 

////

 

// Return a product's name

 

// TABLES: products

 

 function tep_get_products_name($product_id, $language = '') {

 

   global $languages_id;

 

 

 

   if (empty($language)) $language = $languages_id;

 

 

 

   $product_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . $product_id . "' and language_id = '" . $language . "'");

 

   $product = tep_db_fetch_array($product_query);

 

 

 

   return $product['products_name'];

 

 }

 

 

 

////

 

// Return a product's special price (returns nothing if there is no offer)

 

// TABLES: products

 

 function tep_get_products_special_price($product_id) {

 

   $product_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . $product_id . "' and status");

 

   $product = tep_db_fetch_array($product_query);

 

 

 

   return $product['specials_new_products_price'];

 

 }

 

 

 

////

 

// Return a product's stock

 

// TABLES: products

 

 function tep_get_products_stock($products_id) {

 

   $products_id = tep_get_prid($products_id);

 

   $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . $products_id . "'");

 

   $stock_values = tep_db_fetch_array($stock_query);

 

 

 

   return $stock_values['products_quantity'];

 

 }

 

 

 

////

 

// Check if the required stock is available

 

// If insufficent stock is available return an out of stock message

 

 function tep_check_stock($products_id, $products_quantity) {

 

   $stock_left = tep_get_products_stock($products_id) - $products_quantity;

 

   $out_of_stock = '';

 

 

 

   if ($stock_left < 0) {

 

     $out_of_stock = '<span class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '</span>';

 

   }

 

 

 

   return $out_of_stock;

 

 }

 

 

 

////

 

// Break a word in a string if it is longer than a specified length ($len)

 

 function tep_break_string($string, $len, $break_char = '-') {

 

   $l = 0;

 

   $output = '';

 

   for ($i=0, $n=strlen($string); $i<$n; $i++) {

 

     $char = substr($string, $i, 1);

 

     if ($char != ' ') {

 

       $l++;

 

     } else {

 

       $l = 0;

 

     }

 

     if ($l > $len) {

 

       $l = 1;

 

       $output .= $break_char;

 

     }

 

     $output .= $char;

 

   }

 

 

 

   return $output;

 

 }

 

 

 

////

 

// Return all HTTP GET variables, except those passed as a parameter

 

 function tep_get_all_get_params($exclude_array = '') {

 

   global $HTTP_GET_VARS;

 

 

 

   if (!is_array($exclude_array)) $exclude_array = array();

 

 

 

   $get_url = '';

 

   if (is_array($HTTP_GET_VARS) && (sizeof($HTTP_GET_VARS) > 0)) {

 

     reset($HTTP_GET_VARS);

 

     while (list($key, $value) = each($HTTP_GET_VARS)) {

 

       if ( (strlen($value) > 0) && ($key != tep_session_name()) && ($key != 'error') && (!in_array($key, $exclude_array)) && ($key != 'x') && ($key != 'y') ) {

 

         $get_url .= $key . '=' . rawurlencode(stripslashes($value)) . '&';

 

       }

 

     }

 

   }

 

 

 

   return $get_url;

 

 }

 

 

 

////

 

// Returns an array with countries

 

// TABLES: countries

 

 function tep_get_countries($countries_id = '', $with_iso_codes = false) {

 

   $countries_array = array();

 

   if (tep_not_null($countries_id)) {

 

     if ($with_iso_codes == true) {

 

       $countries = tep_db_query("select countries_name, countries_iso_code_2, countries_iso_code_3 from " . TABLE_COUNTRIES . " where countries_id = '" . $countries_id . "' order by countries_name");

 

       $countries_values = tep_db_fetch_array($countries);

 

       $countries_array = array('countries_name' => $countries_values['countries_name'],

 

                                'countries_iso_code_2' => $countries_values['countries_iso_code_2'],

 

                                'countries_iso_code_3' => $countries_values['countries_iso_code_3']);

 

     } else {

 

       $countries = tep_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . $countries_id . "'");

 

       $countries_values = tep_db_fetch_array($countries);

 

       $countries_array = array('countries_name' => $countries_values['countries_name']);

 

     }

 

   } else {

 

     $countries = tep_db_query("select countries_id, countries_name from " . TABLE_COUNTRIES . " order by countries_name");

 

     while ($countries_values = tep_db_fetch_array($countries)) {

 

       $countries_array[] = array('countries_id' => $countries_values['countries_id'],

 

                                  'countries_name' => $countries_values['countries_name']);

 

     }

 

   }

 

 

 

   return $countries_array;

 

 }

 

 

 

////

 

// Alias function to tep_get_countries, which also returns the countries iso codes

 

 function tep_get_countries_with_iso_codes($countries_id) {

 

   return tep_get_countries($countries_id, true);

 

 }

 

 

 

////

 

// Generate a path to categories

 

 function tep_get_path($current_category_id = '') {

 

   global $cPath_array;

 

 

 

   if (tep_not_null($current_category_id)) {

 

     $cp_size = sizeof($cPath_array);

 

     if ($cp_size == 0) {

 

       $cPath_new = $current_category_id;

 

     } else {

 

       $cPath_new = '';

 

       $last_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . $cPath_array[($cp_size-1)] . "'");

 

       $last_category = tep_db_fetch_array($last_category_query);

 

 

 

       $current_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . $current_category_id . "'");

 

       $current_category = tep_db_fetch_array($current_category_query);

 

 

 

       if ($last_category['parent_id'] == $current_category['parent_id']) {

 

         for ($i=0; $i<($cp_size-1); $i++) {

 

           $cPath_new .= '_' . $cPath_array[$i];

 

         }

 

       } else {

 

         for ($i=0; $i<$cp_size; $i++) {

 

           $cPath_new .= '_' . $cPath_array[$i];

 

         }

 

       }

 

       $cPath_new .= '_' . $current_category_id;

 

 

 

       if (substr($cPath_new, 0, 1) == '_') {

 

         $cPath_new = substr($cPath_new, 1);

 

       }

 

     }

 

   } else {

 

     $cPath_new = implode('_', $cPath_array);

 

   }

 

 

 

   return 'cPath=' . $cPath_new;

 

 }

 

 

 

////

 

// Returns the clients browser

 

 function tep_browser_detect($component) {

 

   global $HTTP_USER_AGENT;

 

 

 

   return stristr($HTTP_USER_AGENT, $component);

 

 }

 

 

 

////

 

// Alias function to tep_get_countries()

 

 function tep_get_country_name($country_id) {

 

   $country_array = tep_get_countries($country_id);

 

 

 

   return $country_array['countries_name'];

 

 }

 

 

 

////

 

// Returns the zone (State/Province) name

 

// TABLES: zones

 

 function tep_get_zone_name($country_id, $zone_id, $default_zone) {

 

   $zone_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . $country_id . "' and zone_id = '" . $zone_id . "'");

 

   if (tep_db_num_rows($zone_query)) {

 

     $zone = tep_db_fetch_array($zone_query);

 

     return $zone['zone_name'];

 

   } else {

 

     return $default_zone;

 

   }

 

 }

 

 

 

////

 

// Returns the zone (State/Province) code

 

// TABLES: zones

 

 function tep_get_zone_code($country_id, $zone_id, $default_zone) {

 

   $zone_query = tep_db_query("select zone_code from " . TABLE_ZONES . " where zone_country_id = '" . $country_id . "' and zone_id = '" . $zone_id . "'");

 

   if (tep_db_num_rows($zone_query)) {

 

     $zone = tep_db_fetch_array($zone_query);

 

     return $zone['zone_code'];

 

   } else {

 

     return $default_zone;

 

   }

 

 }

 

 

 

////

 

// Wrapper function for round() for php3 compatibility

 

 function tep_round($value, $precision) {

 

   if (PHP_VERSION < 4) {

 

     $exp = pow(10, $precision);

 

     return round($value * $exp) / $exp;

 

   } else {

 

     return round($value, $precision);

 

   }

 

 }

 

 

 

////

 

// Returns the tax rate for a zone / class

 

// TABLES: tax_rates, zones_to_geo_zones

 

 function tep_get_tax_rate($class_id, $country_id = -1, $zone_id = -1) {

 

   global $customer_zone_id, $customer_country_id;

 

 

 

   if ( ($country_id == -1) && ($zone_id == -1) ) {

 

     if (!tep_session_is_registered('customer_id')) {

 

       $country_id = STORE_COUNTRY;

 

       $zone_id = STORE_ZONE;

 

     } else {

 

       $country_id = $customer_country_id;

 

       $zone_id = $customer_zone_id;

 

     }

 

   }

 

 

 

   $tax_query = tep_db_query("select sum(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za on (tr.tax_zone_id = za.geo_zone_id) left join " . TABLE_GEO_ZONES . " tz on (tz.geo_zone_id = tr.tax_zone_id) where (za.zone_country_id is null or za.zone_country_id = '0' or za.zone_country_id = '" . $country_id . "') and (za.zone_id is null or za.zone_id = '0' or za.zone_id = '" . $zone_id . "') and tr.tax_class_id = '" . $class_id . "' group by tr.tax_priority");

 

   if (tep_db_num_rows($tax_query)) {

 

     $tax_multiplier = 0;

 

     while ($tax = tep_db_fetch_array($tax_query)) {

 

       $tax_multiplier += $tax['tax_rate'];

 

     }

 

     return $tax_multiplier;

 

   } else {

 

     return 0;

 

   }

 

 }

 

 

 

////

 

// Return the tax description for a zone / class

 

// TABLES: tax_rates;

 

 function tep_get_tax_description($class_id, $country_id, $zone_id) {

 

   $tax_query = tep_db_query("select tax_description from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za on (tr.tax_zone_id = za.geo_zone_id) left join " . TABLE_GEO_ZONES . " tz on (tz.geo_zone_id = tr.tax_zone_id) where (za.zone_country_id is null or za.zone_country_id = '0' or za.zone_country_id = '" . $country_id . "') and (za.zone_id is null or za.zone_id = '0' or za.zone_id = '" . $zone_id . "') and tr.tax_class_id = '" . $class_id . "' order by tr.tax_priority");

 

   if (tep_db_num_rows($tax_query)) {

 

     $tax_description = '';

 

     while ($tax = tep_db_fetch_array($tax_query)) {

 

       $tax_description .= $tax['tax_description'] . ' + ';

 

     }

 

     $tax_description = substr($tax_description, 0, -3);

 

 

 

     return $tax_description;

 

   } else {

 

     return TEXT_UNKNOWN_TAX_RATE;

 

   }

 

 }

 

 

 

////

 

// Add tax to a products price

 

 function tep_add_tax($price, $tax) {

 

   global $currencies;

 

 

 

   if ( (DISPLAY_PRICE_WITH_TAX == 'true') && ($tax > 0) ) {

 

     return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']) + tep_calculate_tax($price, $tax);

 

   } else {

 

     return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);

 

   }

 

 }

 

 

 

// Calculates Tax rounding the result

 

 function tep_calculate_tax($price, $tax) {

 

   global $currencies;

 

 

 

   return tep_round($price * $tax / 100, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);

 

 }

 

 

 

////

 

// Return the number of products in a category

 

// TABLES: products, products_to_categories, categories

 

 function tep_count_products_in_category($category_id, $include_inactive = false) {

 

   $products_count = 0;

 

   if ($include_inactive == true) {

 

     $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p2c.categories_id = '" . $category_id . "'");

 

   } else {

 

     $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p.products_status = '1' and p2c.categories_id = '" . $category_id . "'");

 

   }

 

   $products = tep_db_fetch_array($products_query);

 

   $products_count += $products['total'];

 

 

 

   $child_categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . $category_id . "'");

 

   if (tep_db_num_rows($child_categories_query)) {

 

     while ($child_categories = tep_db_fetch_array($child_categories_query)) {

 

       $products_count += tep_count_products_in_category($child_categories['categories_id'], $include_inactive);

 

     }

 

   }

 

 

 

   return $products_count;

 

 }

 

 

 

////

 

// Return true if the category has subcategories

 

// TABLES: categories

 

 function tep_has_category_subcategories($category_id) {

 

   $child_category_query = tep_db_query("select count(*) as count from " . TABLE_CATEGORIES . " where parent_id = '" . $category_id . "'");

 

   $child_category = tep_db_fetch_array($child_category_query);

 

 

 

   if ($child_category['count'] > 0) {

 

     return true;

 

   } else {

 

     return false;

 

   }

 

 }

 

 

 

////

 

// Returns the address_format_id for the given country

 

// TABLES: countries;

 

 function tep_get_address_format_id($country_id) {

 

   $address_format_query = tep_db_query("select address_format_id as format_id from " . TABLE_COUNTRIES . " where countries_id = '" . $country_id . "'");

 

   if (tep_db_num_rows($address_format_query)) {

 

     $address_format = tep_db_fetch_array($address_format_query);

 

     return $address_format['format_id'];

 

   } else {

 

     return '1';

 

   }

 

 }

 

 

 

////

 

// Return a formatted address

 

// TABLES: address_format

 

 function tep_address_format($address_format_id, $address, $html, $boln, $eoln) {

 

   $address_format_query = tep_db_query("select address_format as format from " . TABLE_ADDRESS_FORMAT . " where address_format_id = '" . $address_format_id . "'");

 

   $address_format = tep_db_fetch_array($address_format_query);

 

 

 

   $company = addslashes($address['company']);

 

   $firstname = addslashes($address['firstname']);

 

   $lastname = addslashes($address['lastname']);

 

   $street = addslashes($address['street_address']);

 

   $suburb = addslashes($address['suburb']);

 

   $city = addslashes($address['city']);

 

   $state = addslashes($address['state']);

 

   $country_id = $address['country_id'];

 

   $zone_id = $address['zone_id'];

 

   $postcode = addslashes($address['postcode']);

 

   $zip = $postcode;

 

   $country = tep_get_country_name($country_id);

 

   $state = tep_get_zone_code($country_id, $zone_id, $state);

 

 

 

   if ($html) {

 

// HTML Mode

 

     $HR = '<hr>';

 

     $hr = '<hr>';

 

     if ( ($boln == '') && ($eoln == "n") ) { // Values not specified, use rational defaults

 

       $CR = '<br>';

 

       $cr = '<br>';

 

       $eoln = $cr;

 

     } else { // Use values supplied

 

       $CR = $eoln . $boln;

 

       $cr = $CR;

 

     }

 

   } else {

 

// Text Mode

 

     $CR = $eoln;

 

     $cr = $CR;

 

     $HR = '----------------------------------------';

 

     $hr = '----------------------------------------';

 

   }

 

 

 

   $statecomma = '';

 

   $streets = $street;

 

   if ($suburb != '') $streets = $street . $cr . $suburb;

 

   if ($firstname == '') $firstname = addslashes($address['name']);

 

   if ($country == '') $country = addslashes($address['country']);

 

   if ($state != '') $statecomma = $state . ', ';

 

 

 

   $fmt = $address_format['format'];

 

   eval("$address = "$fmt";");

 

   $address = stripslashes($address);

 

 

 

   if ( (ACCOUNT_COMPANY == 'true') && (tep_not_null($company)) ) {

 

     $address = $company . $cr . $address;

 

   }

 

 

 

   return $boln . $address . $eoln;

 

 }

 

 

 

////

 

// Return a formatted address

 

// TABLES: customers, address_book

 

 function tep_address_label($customers_id, $address_id = 1, $html = false, $boln = '', $eoln = "n") {

 

   $address_query = tep_db_query("select entry_firstname as firstname, entry_lastname as lastname, entry_company as company, entry_street_address as street_address, entry_suburb as suburb, entry_city as city, entry_postcode as postcode, entry_state as state, entry_zone_id as zone_id, entry_country_id as country_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . $customers_id . "' and address_book_id = '" . $address_id . "'");

 

   $address = tep_db_fetch_array($address_query);

 

 

 

   $format_id = tep_get_address_format_id($address['country_id']);

 

 

 

   return tep_address_format($format_id, $address, $html, $boln, $eoln);

 

 }

 

 

 

////

 

// Return a formatted address

 

// TABLES: address_book, address_format

 

 function tep_address_summary($customers_id, $address_id) {

 

   $customers_id = tep_db_prepare_input($customers_id);

 

   $address_id = tep_db_prepare_input($address_id);

 

 

 

   $address_query = tep_db_query("select ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_state, ab.entry_country_id, ab.entry_zone_id, c.countries_name, c.address_format_id from " . TABLE_ADDRESS_BOOK . " ab, " . TABLE_COUNTRIES . " c where ab.address_book_id = '" . tep_db_input($address_id) . "' and ab.customers_id = '" . tep_db_input($customers_id) . "' and ab.entry_country_id = c.countries_id");

 

   $address = tep_db_fetch_array($address_query);

 

 

 

   $street_address = $address['entry_street_address'];

 

   $suburb = $address['entry_suburb'];

 

   $postcode = $address['entry_postcode'];

 

   $city = $address['entry_city'];

 

   $state = tep_get_zone_code($address['entry_country_id'], $address['entry_zone_id'], $address['entry_state']);

 

   $country = $address['countries_name'];

 

 

 

   $address_format_query = tep_db_query("select address_summary from " . TABLE_ADDRESS_FORMAT . " where address_format_id = '" . $address['address_format_id'] . "'");

 

   $address_format = tep_db_fetch_array($address_format_query);

 

 

 

//    eval("$address = "{$address_format['address_summary']}";");

 

   $address_summary = $address_format['address_summary'];

 

   eval("$address = "$address_summary";");

 

 

 

   return $address;

 

 }

 

 

 

 function tep_row_number_format($number) {

 

   if ( ($number < 10) && (substr($number, 0, 1) != '0') ) $number = '0' . $number;

 

 

 

   return $number;

 

 }

 

 

 

 function tep_get_categories($categories_array = '', $parent_id = '0', $indent = '') {

 

   global $languages_id;

 

 

 

   $parent_id = tep_db_prepare_input($parent_id);

 

 

 

   if (!is_array($categories_array)) $categories_array = array();

 

 

 

   $categories_query = tep_db_query("select c.categories_id, cd.categories_name from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where parent_id = '" . tep_db_input($parent_id) . "' and c.categories_id = cd.categories_id and cd.language_id = '" . $languages_id . "' order by sort_order, cd.categories_name");

 

   while ($categories = tep_db_fetch_array($categories_query)) {

 

     $categories_array[] = array('id' => $categories['categories_id'],

 

                                 'text' => $indent . $categories['categories_name']);

 

 

 

     if ($categories['categories_id'] != $parent_id) {

 

       $categories_array = tep_get_categories($categories_array, $categories['categories_id'], $indent . '  ');

 

     }

 

   }

 

 

 

   return $categories_array;

 

 }

 

 

 

 function tep_get_manufacturers($manufacturers_array = '') {

 

   if (!is_array($manufacturers_array)) $manufacturers_array = array();

 

 

 

   $manufacturers_query = tep_db_query("select manufacturers_id, manufacturers_name from " . TABLE_MANUFACTURERS . " order by manufacturers_name");

 

   while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {

 

     $manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'], 'text' => $manufacturers['manufacturers_name']);

 

   }

 

 

 

   return $manufacturers_array;

 

 }

 

 

 

////

 

// Return all subcategory IDs

 

// TABLES: categories

 

 function tep_get_subcategories(&$subcategories_array, $parent_id = 0) {

 

   $subcategories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . $parent_id . "'");

 

   while ($subcategories = tep_db_fetch_array($subcategories_query)) {

 

     $subcategories_array[sizeof($subcategories_array)] = $subcategories['categories_id'];

 

     if ($subcategories['categories_id'] != $parent_id) {

 

       tep_get_subcategories($subcategories_array, $subcategories['categories_id']);

 

     }

 

   }

 

 }

 

 

 

// Output a raw date string in the selected locale date format

 

// $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS

 

 function tep_date_long($raw_date) {

 

   if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false;

 

 

 

   $year = (int)substr($raw_date, 0, 4);

 

   $month = (int)substr($raw_date, 5, 2);

 

   $day = (int)substr($raw_date, 8, 2);

 

   $hour = (int)substr($raw_date, 11, 2);

 

   $minute = (int)substr($raw_date, 14, 2);

 

   $second = (int)substr($raw_date, 17, 2);

 

 

 

   return strftime(DATE_FORMAT_LONG, mktime($hour,$minute,$second,$month,$day,$year));

 

 }

 

 

 

////

 

// Output a raw date string in the selected locale date format

 

// $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS

 

// NOTE: Includes a workaround for dates before 01/01/1970 that fail on windows servers

 

 function tep_date_short($raw_date) {

 

   if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false;

 

 

 

   $year = substr($raw_date, 0, 4);

 

   $month = (int)substr($raw_date, 5, 2);

 

   $day = (int)substr($raw_date, 8, 2);

 

   $hour = (int)substr($raw_date, 11, 2);

 

   $minute = (int)substr($raw_date, 14, 2);

 

   $second = (int)substr($raw_date, 17, 2);

 

 

 

   if (@date('Y', mktime($hour, $minute, $second, $month, $day, $year)) == $year) {

 

     return date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, $year));

 

   } else {

 

     return ereg_replace('2037' . '$', $year, date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, 2037)));

 

   }

 

 }

 

 

 

////

 

// Parse search string into indivual objects

 

 function tep_parse_search_string($search_str = '', &$objects) {

 

   $search_str = trim(strtolower($search_str));

 

 

 

// Break up $search_str on whitespace; quoted string will be reconstructed later

 

   $pieces = split('[[:space:]]+', $search_str);

 

   $objects = array();

 

   $tmpstring = '';

 

   $flag = '';

 

 

 

   for ($k=0; $k<count($pieces); $k++) {

 

     while (substr($pieces[$k], 0, 1) == '(') {

 

       $objects[] = '(';

 

       if (strlen($pieces[$k]) > 1) {

 

         $pieces[$k] = substr($pieces[$k], 1);

 

       } else {

 

         $pieces[$k] = '';

 

       }

 

     }

 

 

 

     $post_objects = array();

 

 

 

     while (substr($pieces[$k], -1) == ')')  {

 

       $post_objects[] = ')';

 

       if (strlen($pieces[$k]) > 1) {

 

         $pieces[$k] = substr($pieces[$k], 0, -1);

 

       } else {

 

         $pieces[$k] = '';

 

       }

 

     }

 

 

 

// Check individual words

 

 

 

     if ( (substr($pieces[$k], -1) != '"') && (substr($pieces[$k], 0, 1) != '"') ) {

 

       $objects[] = trim($pieces[$k]);

 

 

 

       for ($j=0; $j<count($post_objects); $j++) {

 

         $objects[] = $post_objects[$j];

 

       }

 

     } else {

 

/* This means that the $piece is either the beginning or the end of a string.

 

  So, we'll slurp up the $pieces and stick them together until we get to the

 

  end of the string or run out of pieces.

 

*/

 

 

 

// Add this word to the $tmpstring, starting the $tmpstring

 

       $tmpstring = trim(ereg_replace('"', ' ', $pieces[$k]));

 

 

 

// Check for one possible exception to the rule. That there is a single quoted word.

 

       if (substr($pieces[$k], -1 ) == '"') {

 

// Turn the flag off for future iterations

 

         $flag = 'off';

 

 

 

         $objects[] = trim($pieces[$k]);

 

 

 

         for ($j=0; $j<count($post_objects); $j++) {

 

           $objects[] = $post_objects[$j];

 

         }

 

 

 

         unset($tmpstring);

 

 

 

// Stop looking for the end of the string and move onto the next word.

 

         continue;

 

       }

 

 

 

// Otherwise, turn on the flag to indicate no quotes have been found attached to this word in the string.

 

       $flag = 'on';

 

 

 

// Move on to the next word

 

       $k++;

 

 

 

// Keep reading until the end of the string as long as the $flag is on

 

 

 

       while ( ($flag == 'on') && ($k < count($pieces)) ) {

 

         while (substr($pieces[$k], -1) == ')') {

 

           $post_objects[] = ')';

 

           if (strlen($pieces[$k]) > 1) {

 

             $pieces[$k] = substr($pieces[$k], 0, -1);

 

           } else {

 

             $pieces[$k] = '';

 

           }

 

         }

 

 

 

// If the word doesn't end in double quotes, append it to the $tmpstring.

 

         if (substr($pieces[$k], -1) != '"') {

 

// Tack this word onto the current string entity

 

           $tmpstring .= ' ' . $pieces[$k];

 

 

 

// Move on to the next word

 

           $k++;

 

           continue;

 

         } else {

 

/* If the $piece ends in double quotes, strip the double quotes, tack the

 

  $piece onto the tail of the string, push the $tmpstring onto the $haves,

 

  kill the $tmpstring, turn the $flag "off", and return.

 

*/

 

           $tmpstring .= ' ' . trim(ereg_replace('"', ' ', $pieces[$k]));

 

 

 

// Push the $tmpstring onto the array of stuff to search for

 

           $objects[] = trim($tmpstring);

 

 

 

           for ($j=0; $j<count($post_objects); $j++) {

 

             $objects[] = $post_objects[$j];

 

           }

 

 

 

           unset($tmpstring);

 

 

 

// Turn off the flag to exit the loop

 

           $flag = 'off';

 

         }

 

       }

 

     }

 

   }

 

 

 

// add default logical operators if needed

 

   $temp = array();

 

   for($i=0; $i<(count($objects)-1); $i++) {

 

     $temp[sizeof($temp)] = $objects[$i];

 

 

 

     if ( ($objects[$i] != 'and') &&

 

          ($objects[$i] != 'or') &&

 

          ($objects[$i] != '(') &&

 

          ($objects[$i] != ')') &&

 

          ($objects[$i+1] != 'and') &&

 

          ($objects[$i+1] != 'or') &&

 

          ($objects[$i+1] != '(') &&

 

          ($objects[$i+1] != ')') ) {

 

       $temp[sizeof($temp)] = ADVANCED_SEARCH_DEFAULT_OPERATOR;

 

     }

 

   }

 

   $temp[sizeof($temp)] = $objects[$i];

 

   $objects = $temp;

 

 

 

   $keyword_count = 0;

 

   $operator_count = 0;

 

   $balance = 0;

 

   for($i=0; $i<count($objects); $i++) {

 

     if ($objects[$i] == '(') $balance --;

 

     if ($objects[$i] == ')') $balance ++;

 

     if ( ($objects[$i] == 'and') || ($objects[$i] == 'or') ) {

 

       $operator_count ++;

 

     } elseif ( ($objects[$i]) && ($objects[$i] != '(') && ($objects[$i] != ')') ) {

 

       $keyword_count ++;

 

     }

 

   }

 

 

 

   if ( ($operator_count < $keyword_count) && ($balance == 0) ) {

 

     return true;

 

   } else {

 

     return false;

 

   }

 

 }

 

 

 

////

 

// Check date

 

 function tep_checkdate($date_to_check, $format_string, &$date_array) {

 

   $separator_idx = -1;

 

 

 

   $separators = array('-', ' ', '/', '.');

 

   $month_abbr = array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');

 

   $no_of_days = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

 

 

 

   $format_string = strtolower($format_string);

 

 

 

   if (strlen($date_to_check) != strlen($format_string)) {

 

     return false;

 

   }

 

 

 

   $size = sizeof($separators);

 

   for ($i=0; $i<$size; $i++) {

 

     $pos_separator = strpos($date_to_check, $separators[$i]);

 

     if ($pos_separator != false) {

 

       $date_separator_idx = $i;

 

       break;

 

     }

 

   }

 

 

 

   for ($i=0; $i<$size; $i++) {

 

     $pos_separator = strpos($format_string, $separators[$i]);

 

     if ($pos_separator != false) {

 

       $format_separator_idx = $i;

 

       break;

 

     }

 

   }

 

 

 

   if ($date_separator_idx != $format_separator_idx) {

 

     return false;

 

   }

 

 

 

   if ($date_separator_idx != -1) {

 

     $format_string_array = explode( $separators[$date_separator_idx], $format_string );

 

     if (sizeof($format_string_array) != 3) {

 

       return false;

 

     }

 

 

 

     $date_to_check_array = explode( $separators[$date_separator_idx], $date_to_check );

 

     if (sizeof($date_to_check_array) != 3) {

 

       return false;

 

     }

 

 

 

     $size = sizeof($format_string_array);

 

     for ($i=0; $i<$size; $i++) {

 

       if ($format_string_array[$i] == 'mm' || $format_string_array[$i] == 'mmm') $month = $date_to_check_array[$i];

 

       if ($format_string_array[$i] == 'dd') $day = $date_to_check_array[$i];

 

       if ( ($format_string_array[$i] == 'yyyy') || ($format_string_array[$i] == 'aaaa') ) $year = $date_to_check_array[$i];

 

     }

 

   } else {

 

     if (strlen($format_string) == 8 || strlen($format_string) == 9) {

 

       $pos_month = strpos($format_string, 'mmm');

 

       if ($pos_month != false) {

 

         $month = substr( $date_to_check, $pos_month, 3 );

 

         $size = sizeof($month_abbr);

 

         for ($i=0; $i<$size; $i++) {

 

           if ($month == $month_abbr[$i]) {

 

             $month = $i;

 

             break;

 

           }

 

         }

 

       } else {

 

         $month = substr($date_to_check, strpos($format_string, 'mm'), 2);

 

       }

 

     } else {

 

       return false;

 

     }

 

 

 

     $day = substr($date_to_check, strpos($format_string, 'dd'), 2);

 

     $year = substr($date_to_check, strpos($format_string, 'yyyy'), 4);

 

   }

 

 

 

   if (strlen($year) != 4) {

 

     return false;

 

   }

 

 

 

   if (!settype($year, 'integer') || !settype($month, 'integer') || !settype($day, 'integer')) {

 

     return false;

 

   }

 

 

 

   if ($month > 12 || $month < 1) {

 

     return false;

 

   }

 

 

 

   if ($day < 1) {

 

     return false;

 

   }

 

 

 

   if (tep_is_leap_year($year)) {

 

     $no_of_days[1] = 29;

 

   }

 

 

 

   if ($day > $no_of_days[$month - 1]) {

 

     return false;

 

   }

 

 

 

   $date_array = array($year, $month, $day);

 

 

 

   return true;

 

 }

 

 

 

////

 

// Check if year is a leap year

 

 function tep_is_leap_year($year) {

 

   if ($year % 100 == 0) {

 

     if ($year % 400 == 0) return true;

 

   } else {

 

     if (($year % 4) == 0) return true;

 

   }

 

 

 

   return false;

 

 }

 

 

 

////

 

// Return table heading with sorting capabilities

 

 function tep_create_sort_heading($sortby, $colnum, $heading) {

 

   global $PHP_SELF;

 

 

 

   $sort_prefix = '';

 

   $sort_suffix = '';

 

 

 

   if ($sortby) {

 

     $sort_prefix = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('page', 'info', 'sort')) . 'page=1&sort=' . $colnum . ($sortby == $colnum . 'a' ? 'd' : 'a')) . '" title="' . TEXT_SORT_PRODUCTS . ($sortby == $colnum . 'd' || substr($sortby, 0, 1) != $colnum ? TEXT_ASCENDINGLY : TEXT_DESCENDINGLY) . TEXT_BY . $heading . '">';

 

     $sort_suffix = (substr($sortby, 0, 1) == $colnum ? (substr($sortby, 1, 1) == 'a' ? '+' : '-') : '') . '</a>';

 

   }

 

 

 

   return $sort_prefix . $heading . $sort_suffix;

 

 }

 

 

 

////

 

// Recursively go through the categories and retreive all parent categories IDs

 

// TABLES: categories

 

 function tep_get_parent_categories(&$categories, $categories_id) {

 

   $parent_categories_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . $categories_id . "'");

 

   while ($parent_categories = tep_db_fetch_array($parent_categories_query)) {

 

     if ($parent_categories['parent_id'] == 0) return true;

 

     $categories[sizeof($categories)] = $parent_categories['parent_id'];

 

     if ($parent_categories['parent_id'] != $categories_id) {

 

       tep_get_parent_categories($categories, $parent_categories['parent_id']);

 

     }

 

   }

 

 }

 

 

 

////

 

// Construct a category path to the product

 

// TABLES: products_to_categories

 

 function tep_get_product_path($products_id) {

 

   $cPath = '';

 

 

 

   $cat_count_sql = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . $products_id . "'");

 

   $cat_count_data = tep_db_fetch_array($cat_count_sql);

 

 

 

   if ($cat_count_data['count'] == 1) {

 

     $categories = array();

 

 

 

     $cat_id_sql = tep_db_query("select categories_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . $products_id . "'");

 

     $cat_id_data = tep_db_fetch_array($cat_id_sql);

 

     tep_get_parent_categories($categories, $cat_id_data['categories_id']);

 

 

 

     $size = sizeof($categories)-1;

 

     for ($i = $size; $i >= 0; $i--) {

 

       if ($cPath != '') $cPath .= '_';

 

       $cPath .= $categories[$i];

 

     }

 

     if ($cPath != '') $cPath .= '_';

 

     $cPath .= $cat_id_data['categories_id'];

 

   }

 

 

 

   return $cPath;

 

 }

 

 

 

////

 

// Return a product ID with attributes

 

 function tep_get_uprid($prid, $params) {

 

   $uprid = $prid;

 

   if ( (is_array($params)) && (!strstr($prid, '{')) ) {

 

     while (list($option, $value) = each($params)) {

 

       $uprid = $uprid . '{' . $option . '}' . $value;

 

     }

 

   }

 

 

 

   return $uprid;

 

 }

 

 

 

////

 

// Return a product ID from a product ID with attributes

 

 function tep_get_prid($uprid) {

 

   $pieces = split('[{]', $uprid, 2);

 

 

 

   return $pieces[0];

 

 }

 

 

 

////

 

// Return a customer greeting

 

 function tep_customer_greeting() {

 

   global $customer_id, $customer_first_name;

 

 

 

   if (tep_session_is_registered('customer_first_name') && tep_session_is_registered('customer_id')) {

 

     $greeting_string = sprintf(TEXT_GREETING_PERSONAL, $customer_first_name, tep_href_link(FILENAME_PRODUCTS_NEW));

 

   } else {

 

     $greeting_string = sprintf(TEXT_GREETING_GUEST, tep_href_link(FILENAME_LOGIN, '', 'SSL'), tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'));

 

   }

 

 

 

   return $greeting_string;

 

 }

 

 

 

////

 

//! Send email (text/html) using MIME

 

// This is the central mail function. The SMTP Server should be configured

 

// correct in php.ini

 

// Parameters:

 

// $to_name           The name of the recipient, e.g. "Jan Wildeboer"

 

// $to_email_address  The eMail address of the recipient,

 

//                    e.g. [email protected]

 

// $email_subject     The subject of the eMail

 

// $email_text        The text of the eMail, may contain HTML entities

 

// $from_email_name   The name of the sender, e.g. Shop Administration

 

// $from_email_adress The eMail address of the sender,

 

//                    e.g. [email protected]

 

 

 

 function tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {

 

   if (SEND_EMAILS != 'true') return false;

 

 

 

   // Instantiate a new mail object

 

   $message = new email(array('X-Mailer: osCommerce Mailer'));

 

 

 

   // Build the text version

 

   $text = strip_tags($email_text);

 

   if (EMAIL_USE_HTML == 'true') {

 

     $message->add_html($email_text, $text);

 

   } else {

 

     $message->add_text($text);

 

   }

 

 

 

   // Send message

 

   $message->build_message();

 

   $message->send($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject);

 

 }

 

 

 

////

 

// Check if product has attributes

 

 function tep_has_product_attributes($products_id) {

 

   $attributes_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . $products_id . "'");

 

   $attributes = tep_db_fetch_array($attributes_query);

 

 

 

   if ($attributes['count'] > 0) {

 

     return true;

 

   } else {

 

     return false;

 

   }

 

 }

 

 

 

////

 

// Get the number of times a word/character is present in a string

 

 function tep_word_count($string, $needle) {

 

   $temp_array = split($needle, $string);

 

 

 

   return sizeof($temp_array);

 

 }

 

 

 

 function tep_count_modules($modules = '') {

 

   $count = 0;

 

 

 

   if (empty($modules)) return $count;

 

 

 

   $modules_array = split(';', $modules);

 

 

 

   for ($i=0, $n=sizeof($modules_array); $i<$n; $i++) {

 

     $class = substr($modules_array[$i], 0, strrpos($modules_array[$i], '.'));

 

 

 

     if (is_object($GLOBALS[$class])) {

 

       if ($GLOBALS[$class]->enabled) {

 

         $count++;

 

       }

 

     }

 

   }

 

 

 

   return $count;

 

 }

 

 

 

 function tep_count_payment_modules() {

 

   return tep_count_modules(MODULE_PAYMENT_INSTALLED);

 

 }

 

 

 

 function tep_count_shipping_modules() {

 

   return tep_count_modules(MODULE_SHIPPING_INSTALLED);

 

 }

 

 

 

 function tep_create_random_value($length, $type = 'mixed') {

 

   if ( ($type != 'mixed') && ($type != 'chars') && ($type != 'digits')) return false;

 

 

 

   $rand_value = '';

 

   while (strlen($rand_value) < $length) {

 

     if ($type == 'digits') {

 

       $char = tep_rand(0,9);

 

     } else {

 

       $char = chr(tep_rand(0,255));

 

     }

 

     if ($type == 'mixed') {

 

       if (eregi('^[a-z0-9]$', $char)) $rand_value .= $char;

 

     } elseif ($type == 'chars') {

 

       if (eregi('^[a-z]$', $char)) $rand_value .= $char;

 

     } elseif ($type == 'digits') {

 

       if (ereg('^[0-9]$', $char)) $rand_value .= $char;

 

     }

 

   }

 

 

 

   return $rand_value;

 

 }

 

 

 

 function tep_output_warning($warning) {

 

   new errorBox(array(array('text' => tep_image(DIR_WS_ICONS . 'warning.gif', ICON_WARNING) . ' ' . $warning)));

 

 }

 

 

 

 function tep_array_to_string($array, $exclude = '', $equals = '=', $separator = '&') {

 

   if (!is_array($exclude)) $exclude = array();

 

 

 

   $get_string = '';

 

   if (sizeof($array) > 0) {

 

     while (list($key, $value) = each($array)) {

 

       if ( (!in_array($key, $exclude)) && ($key != 'x') && ($key != 'y') ) {

 

         $get_string .= $key . $equals . $value . $separator;

 

       }

 

     }

 

     $remove_chars = strlen($separator);

 

     $get_string = substr($get_string, 0, -$remove_chars);

 

   }

 

 

 

   return $get_string;

 

 }

 

 

 

 function tep_not_null($value) {

 

   if (is_array($value)) {

 

     if (sizeof($value) > 0) {

 

       return true;

 

     } else {

 

       return false;

 

     }

 

   } else {

 

     if (($value != '') && ($value != 'NULL') && (strlen(trim($value)) > 0)) {

 

       return true;

 

     } else {

 

       return false;

 

 

Link to comment
Share on other sites

Did you even read the FAQ entry?

 

You have whitespace at the beginning or the end of english.php. That's what that error means. What exactly are you using to edit the file?

 

 

Yes I did read the FAQ and I have checked for white space, I have found none. I even replaced my code with the code merf supplied and I still receive the same error message

Warning: Cannot modify header information - headers already sent by (output started at /home/harbors/public_html/catalog/includes/languages/english.php:343) in /home/harbors/public_html/catalog/includes/functions/general.php on line 29

Does this error message mean the error is in general.php or english.php

 

Sorry to keep asking these questions but I am at my wits end trying to figure this simple error out.

Link to comment
Share on other sites

Again...what are you using to edit your files?

 

I am using notepad

 

 

Is it possible that the error is in some other file besides /home/harbors/public_html/catalog/includes/languages/english.php:343) in /home/harbors/public_html/catalog/includes/functions/general.php on line 29

Link to comment
Share on other sites

  • 4 weeks later...

Mike,

I am having a very similar problem, even though email works on the admin side, so I'm sure my problem is somewhere in the code.

In your case I would try looking around line 343 in your languages/english.php file and trace the error from there, looking for whitespace, etc. to the end of the file. You may also want to check the files that get included from the languages/english.php file as well...

 

I also use notepad, but have several other editors to compare against and I haven't found this elusive little bugger yet either.

 

Anyway, hope this helps point you in the right direction...

 

Regards,

Obewanz

Use The Force - it smashes more bugs :lol:

The GraphicZoo

check profile for web address

Link to comment
Share on other sites

I'm having the same problem.

I get the following message and cannot login from english page. I can login from other language page so db is working.

 

---

Warning: Cannot modify header information - headers already sent by (output started at /home/ag/public_html/osCommerce/includes/languages/english.php:339) in /home/ag/public_html/osCommerce/login.php on line 43

 

Warning: Cannot modify header information - headers already sent by (output started at /home/ag/public_html/osCommerce/includes/languages/english.php:339) in /home/ag/public_html/osCommerce/includes/functions/general.php on line 23

---

 

I did check english.php, login.php and general.php (identical to the CVS) and they have not white spaces.

 

In fact stops at 336 of english.php so there are no line no. 339. There are no include files referring from english.php either.

What else should I look or do I have to re-build :? after 2months working on it :cry:

 

AG

Link to comment
Share on other sites

maybe this helps in debugging:

 

DEBUG MODE ENABLED in: General.php

includes/languages/german.php

includes/application_top.php

includes/configure.php

includes/functions/database.php

includes/functions/html_output.php

includes/classes/shopping_cart.php

includes/classes/navigation_history.php

includes/functions/compatibility.php

includes/functions/sessions.php

includes/classes/currencies.php

includes/classes/mime.php

includes/classes/email.php

includes/functions/whos_online.php

includes/functions/password_funcs.php

includes/functions/validations.php

includes/classes/split_page_results.php

includes/classes/boxes.php

includes/functions/banner.php

includes/functions/specials.php

includes/classes/breadcrumb.php

default.php

includes/languages/german/default.php

 

... from then on the headers are sent and the html page starts... so the bastard whitespace (or errormessage or something else) is somewhere in one of the files above or files included by one of the files mentioned above (note: list not complete as i took it from my "shop in changing" where i have replaced some files with cvs versions that don't yet debug-output any lines with filenames)

 

newlines after ?> are a great way to spoil headers...

suggestion: use a good editor like editplus and enable display of newlines!

 

# in application_top:

##############################################

# KEEP IN MIND THAT APPLICATION_TOP IS CALLED BY TOP LEVEL CODE... SO THE ORDER WILL BE DIFFERENT!

##############################################

define('DEBUG_FILENAMES', 	 true);	# print filename of every PHP file as it's included

define('DEBUG_KEEPHEADERS', 	 true);	# stores headers in buffer to avoid session header errors

define('DEBUG_SHOWHEADERS', 	 true);	# print the conserved headers after loading application_top

##############################################

define('headtrace',"");

global $headtrace;



 if (DEBUG_FILENAMES == true) {

  $thisfilename = "<small><font color=#FF00CC><b>application_top.php</b></small></font><br>"; 

  if (DEBUG_KEEPHEADERS == true) $headtrace .= $thisfilename;

  else print $thisfilename;

 }



...

...

...





# last line before ?> in application_top:

if ((strlen($headtrace) > 0 ) && (DEBUG_SHOWHEADERS == true)) print $headtrace;



--snip--



# in header.php and all other .php files loaded before header.php is called:

 if (DEBUG_FILENAMES == true) {

  $thisfilename = "<small><font color=#FF00CC><b>includes/header.php</b></small></font><br>"; 

  if (DEBUG_KEEPHEADERS == true) $headtrace .= $thisfilename;

  else print $thisfilename;

 }



# Adapt the filename for every file where you include this code (sorry, but looking at all php globals 

# I didn't see any single method how i can obtain the file that contains the current line...

Link to comment
Share on other sites

Emmtee :D

 

The codes above looks very helpful.

Could you tell me what I should do for future use?

Shall I just paste it in the application_top.php and where?

And do what after that? to create the list of the files?

 

I'm curious.

 

AG

Link to comment
Share on other sites

that's just snipplets and the linecomments should tell you what to do with them.

if you don't understand them, then you probably don't want to add them to your own shop :)

 

what i forgot: this line is required in addition to the other at application_top's bottom:

 

define('DEBUG_KEEPHEADERS', false);

 

... because if you forget to turn off storing of output, no included filenames will be printed for the the pagecontent

 

keep in mind that adding the debug statement to every single file will require changes to over 200 files - over 200 chances to make some mistake :)

 

that's why i included the final output - to reduce the range of files where the error can be in... without you having to add the code first :)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...