Latest News: (loading..)


  • Content count

  • Joined

  • Last visited

  • Days Won


Jack_mcs last won the day on June 29

Jack_mcs had the most liked content!

About Jack_mcs

Profile Information

Recent Profile Visitors

224,767 profile views
  1. Ivan: 1 - The Option Types addon will let you set an attribute to type text, textarea, radio, checkbox, file (dropdown) and image. 2 - Use the KISS image thumbnailer. It creates thumbnails on the fly and its main use, at least for me, is to decrease load time.
  2. No one has ever reported this problem before and I've not seen it with View Counter so I don't know why it is happening. If you are using a version of oscommerce that lets you convert database tables, please try using the change to UTF option. That will switch the tables to InnoDB, which is not immune to this problem but less likely for it to occur. View Counter stores a lot of data so if your site is very busy, it could be that this happens during extra busy times. But either way, you can try turning off the flag option and the block country option, if it is enabled, to see if that eliminates the problem.
  3. Thanks for mentioning it. I don't keep up on the social sites so there may be others that have gone away too.
  4. Yes, Site Monitor is free.
  5. It depends on what you mean by SEO. Most times a question like this is asked, it refers to the meta tag code of the shop. If that is what you mean then, no, you don't need to install an additional meta tag addon. The only one that is current is Header Tags SEO. The code in Edge is modeled after it but there are some differences. Once installed, HTS offers more options. Whether those other options are worth the time to install it is something only you can decide. If you mean SEO in a more general sense, then you definitely need the google sitemap addon and I would suggest both All Products SEO and Sitemap SEO.
  6. It's unlikely your host did this. Sitelock is a legitimate program, though unnecessary in my opinion. There shouldn't be any reason to start over. Your files can be cleaned. If you are going to start over, install the latest Edge version. Besides being a better package for the web, it will eliminate a large of security holes in an older shop. If done correctly, you won't lose any data in the database. Though the appearance and addons will have to be redone. Once you have the shop running again, install Site Monitor. If won't prevent hackers from getting in but will let you know when they do so you will know what is needed to fix what they did. There are also some security addons that can be installed to help prevent hacking. I'll send you a PM with more details.
  7. When I mentioned the forum, I was talking about it as a stand-alone installation. So your site would be in one directory and the forum in another but in the same hosting account. If someone is able to hack into either of them, then they can follow the trail to the other one, unless they are blocked by the code. This was a common occurrence years ago. I haven't heard of it lately but if your installations are old packages, it is certainly possible. But it is all guesswork at this point since it can be near impossible to know how a site was hacked unless it is looked into right away and you have access to server logs.. If it was something like your login being obtained, there wouldn't be a way to tell even that way unless you had tracking code installed.
  8. Replace the file mentioned previously with the following. It should conform to their changed rules. But it is only for one price/language. If multiple prices are present, the code would have to be altered further for that. <?php $loc = explode(',',$_SERVER["HTTP_ACCEPT_LANGUAGE"]); $ogArray = array(); $ogArray['site_name'] = STORE_NAME; $ogArray['locale'] = str_replace('-', '_', $loc[0]); $showOG = false; $showProduct = false; $showTwitter = false; $twitterArray = array(); $db_query = tep_db_query("select groupname as storename, data as creator from headertags_social where section = 'twitter'"); $db = array(); if (tep_db_num_rows($db_query)) { $db = tep_db_fetch_array($db_query); $twitterArray[] = '<meta name="twitter:card" content="summary">'; $twitterArray[] = '<meta name="twitter:site" content="@' . $db['storename'] . '">'; $showTwitter = true; } switch (true) { case (basename($_SERVER['SCRIPT_FILENAME']) === 'index.php'): if ($category_depth == 'top') { $img = (file_exists('store_logo.png') ? tep_href_link('images/store_logo.png', '', $request_type, false, false) : ''); if (! tep_not_null($canonical_url)) { $canonical_url = GetCanonicalURL(); } $twitterArray[] = '<meta name="twitter:creator" content="@' . $db['creator'] . '">'; $twitterArray[] = '<meta name="twitter:url" content="' . tep_href_link('index.php', '', $request_type, false) . '">'; $twitterArray[] = '<meta name="twitter:title" content="' . $header_tags_array['title'] . '">'; $twitterArray[] = '<meta name="twitter:description" content="' . $header_tags_array['desc'] . '">'; $twitterArray[] = '<meta name="twitter:image" content="' . $img . '">'; $ogArray['type'] = 'website'; $ogArray['image'] = $img; $ogArray['url'] = $canonical_url; $showOG = true; } break; case (basename($_SERVER['SCRIPT_FILENAME']) === 'product_info.php'): case (basename($_SERVER['SCRIPT_FILENAME']) === 'product_reviews.php'): case (basename($_SERVER['SCRIPT_FILENAME']) === 'product_reviews_info.php'): if ($_GET['products_id'] > 0) { $og_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_quantity, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_available from products p, products_description pd where p.products_status = '1' and p.products_id = '" . (int)$_GET['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'"); if ( tep_db_num_rows($og_query) > 0 ) { $og = tep_db_fetch_array($og_query); $img = (tep_not_null($og['products_image']) ? tep_href_link('images/' . $og['products_image'], '', $request_type, false, false) : ''); $url = tep_href_link('product_info.php', 'products_id=' . $og['products_id'], $request_type, false); /**** Get the price ****/ if (($new_price = tep_get_products_special_price($og['products_id']))) { } else { $new_price = $og['products_price']; } $og_price = $currencies->display_price($new_price, tep_get_tax_rate($og['products_tax_class_id'])); $og_price = substr($og_price, 1); $twitterArray[] = '<meta name="twitter:creator" content="@' . $db['creator'] . '">'; $twitterArray[] = '<meta name="twitter:url" content="' . $url . '">'; $twitterArray[] = '<meta name="twitter:title" content="' . htmlspecialchars($og['products_name'], ENT_QUOTES) . '">'; $twitterArray[] = '<meta name="twitter:description" content="' . GetOGDescription($og['products_description']) . '">'; $twitterArray[] = '<meta name="twitter:image" content="' . $img . '">'; $twitterArray[] = '<meta name="twitter:data1" content="' . $og_price . '">'; $twitterArray[] = '<meta name="twitter:label1" content="' . HTS_OG_PRICE . '">'; $twitterArray[] = '<meta name="twitter:data2" content="' . $og['products_quantity'] . '">'; $twitterArray[] = '<meta name="twitter:label2" content="' . HTS_OG_AVAILABLE_STOCK . '">'; $ogArray['type'] = 'product'; $ogArray['title'] = htmlspecialchars($og['products_name'], ENT_QUOTES); $ogArray['description'] = GetOGDescription($og['products_description']); $ogArray['image'] = $img; $ogArray['url'] = $url; $ogArray['product:price:amount'] = $og_price; $ogArray['product:price:currency'] = $currency; $ogArray['availability'] = ($og['products_date_available'] > date('Y-m-d H:i:s') ? 'pending' : $og['products_quantity'] < 1 ? 'oos' : $og['products_quantity'] > 0 ? 'instock' : 'oos'); $showOG = true; $showProduct = true; } } break; case (defined('article_info.php') && basename($_SERVER['SCRIPT_FILENAME']) === 'article_info.php'): if ($_GET['articles_id'] > 0) { $og_query = tep_db_query("select a.articles_date_added, a.articles_last_modified, ad.articles_image, ad.articles_name, a.authors_id, ad.articles_description, ad.articles_url, au.authors_name, td.topics_name from articles a left join authors au on a.authors_id = au.authors_id left join articles_description ad on a.articles_id = ad.articles_id left join articles_to_topics a2t on a.articles_id = a2t.articles_id left join topics_description td on a2t.topics_id = td.topics_id where a.articles_status = '1' and a.articles_id = '" . (int)$_GET['articles_id'] . "' and ad.language_id = '" . (int)$languages_id . "'"); if ( tep_db_num_rows($og_query) > 0 ) { $og = tep_db_fetch_array($og_query); $img = (tep_not_null($og['articles_image']) ? tep_href_link('images/' . $og['articles_image'], '', $request_type, false, false) : ''); $url = tep_href_link('article_info.php', 'article_id=' . $og['articles_id'], $request_type, false); $twitterArray[] = '<meta name="twitter:creator" content="@' . (tep_not_null($og['authors_name']) ? $og['authors_name'] : $db['creator']) . '">'; $twitterArray[] = '<meta name="twitter:url" content="' . $url . '">'; $twitterArray[] = '<meta name="twitter:title" content="' . htmlspecialchars($og['articles_name'], ENT_QUOTES) . '">'; $twitterArray[] = '<meta name="twitter:description" content="' . GetOGDescription($og['articles_description']) . '">'; $twitterArray[] = '<meta name="twitter:image" content="' . $img . '">'; $ogArray['type'] = 'article'; $ogArray['url'] = $url; $ogArray['description'] = GetOGDescription($og['articles_description']); $ogArray['tag'] = $header_tags_array['keywords']; if (isset($og['articles_date_added'][1])) $ogArray['published_time'] = $og['articles_date_added']; if (isset($og['articles_last_modified'][1])) $ogArray['modified_time'] = $og['articles_last_modified']; if (isset($og['expiration_time'][1])) $ogArray['expiration_time'] = $og['expiration_time']; if (isset($og['authors_name'][1])) $ogArray['author'] = $og['authors_name']; if (isset($og['authors_id'][1])) $ogArray['author'] = tep_href_link('articles.php', 'authors_id=' . $og['authors_id'], $request_type, false); if (isset($og['topics_name'][1])) $ogArray['section'] = $og['topics_name']; if (isset($og['articles_image'][1])) $ogArray['image'] = $img; $showOG = true; } } break; } if ($showTwitter) { foreach ($twitterArray as $tag => $data) { echo $data . "\n"; } } if ($showOG) { foreach ($ogArray as $tag => $data) { if ($showProduct && strpos($tag, 'product:price:') !== FALSE) { echo '<meta property="' . $tag . '" content="' . $data . '" />' . "\n"; } else { echo '<meta property="og:' . $tag . '" content="' . $data . '" />' . "\n"; } } }
  9. Packages for things like forums are notorious for providing backdoors into shopping cart packages so that could be the source of the hack.
  10. Markus: The fix Phil mention is how to do it. In the includes/modules.header_tags_opengraph.php file, find this line $og_price = $currencies->display_price($new_price, tep_get_tax_rate($og['products_tax_class_id'])); and add this one below it $og_price = substr($og_price, 1);
  11. Thanks for letting me know. :)
  12. Does the test tool show that it is one of the properties you mention? The FB parser is know to be sensitive to some things, like names with space and dates in certain formats. Maybe it is something like that?
  13. I may have missed it but if how they got in has not been fixed, the hole will most likely still be there after you restore and you will have the same problem again.
  14. A new version has been uploaded with these changes: Added option Remove Orphan Orders. Added the latest Version Checker files. Corrected spelling mistake in the modules file - found by member Cary. Corrected mistake in the remove old customers section that would prevent some customers from being deleted. Fixed problems in Truncate Customers Orders. Fixed a mistake in the common file when deleting sessions. (found by member John W). Fixed several minor html coding mistakes. (found by member Demitry).
  15. Remove the following in admin/includes/functions/header_tags.php $path = str_replace("https:", "http:", $path);