<?xml version="1.0" ?> 
<?xml-stylesheet type='text/xsl' href='rss.xslt' version='1.0'?>
<!--  RSS generation by 'A blog for web developers about all things ecommerce.' on Thu, 29 Jul 2010 21:11:59 GMT   --> 
<rss version="0.92">
	<channel>
		<title>A blog for web developers about all things ecommerce.</title> 
		<link>http://blog.cartweaver.com/</link> 
		<description>A blog for web developers about all things ecommerce.</description> 
		<webMaster>lawrence@cartweaver.com</webMaster> 
		<language>en-us</language> 

		<item>
			<title>MasterCard Mulit Payment Mandate - Update</title>
			<description><![CDATA[<p>Just a quick update on the progress of this issue:</p><p>This storm cloud may have passed. I'm waiting for the official word from my Authorize Net sources but things are looking up for now.</p><p>I can't say more than this for now, and this being as fluid a situation as it is, things could "cloud up" again, but it's looking good. I'll post more as soon as I can! <br /></p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=91</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=91</guid>
			<pubDate>Thu, 10 Jun 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>MasterCard Partial Payment Requirements shake things up!</title>
			<description><![CDATA[<h2><img src="images/BlogPostImages/AuthNet-MasterCard.jpg" alt="MasterCard-Authorize Net" width="211" height="145" align="right" />MasterCard/Discover New Partial Authorization Rule</h2>
<p>Authorize Net, one of the web's largest online payment gateways sent out an email to all their merchants that as of <em>May 1 2010</em> Master Card and Discover were going to go live with a new processing rule that would require virtually ALL  merchants to allow partial payments and multiple payment transactions. (There are a some exceptions, but few fit the profile) Yes you read that date right. This notice went out right about the time the rule was to go into effect, and the rule states that if the merchant was found to not be in compliance they would be hit with a penalty!</p>
<p>The first thought that jumped to mind was "What the !$#!@$!@!" - Fortunately even MasterCard realized you can't announce a new rule that will fundamentally change the way EVERY shopping cart website on the web processes credit cards and realistically expect this quick of a response. So Authorize Net got an extension for their merchants that pushes the deadline out to <strong>June 30th 2011</strong>. It appears that  other gateway provides are getting such extensions as well. Best check with your gateway provider to see what they say on this.</p>
<p><strong>So what does it mean?</strong><br />A quick Google search on the topic brings up a lot of hits, but  clicking on the results just takes you to a lot sites and blogs that just regurgitate the word for word content of the email notice which can be read <a href="http://community.developer.authorize.net/t5/News-and-Announcements/New-MasterCard-Discover-Processing-Requirements/m-p/2634">here</a>. Not a lot of helpful "what do I do" content to be found.</p><p><strong>What's it really mean?</strong><br />I'm not going to go into detail repeating the same thing that is available in the email or on on the Auth Net site, that can  be found here:</p>
<ul>
  <li><a href="http://community.developer.authorize.net/t5/News-and-Announcements/New-MasterCard-Discover-Processing-Requirements/m-p/2634" target="_blank">New MasterCard/Discover Processing Requirements</a></li>
  <li><a href="http://www.authorize.net/support/pafaqs/" target="_blank">MasterCard/Discover Partial Authorization FAQs</a></li>
  <li><a href="http://www.authorize.net/support/AIM_apiupdates.pdf" target="_blank">http://www.authorize.net/support/AIM_apiupdates.pdf</a>.</li>
</ul>
<p><em>I'd recommend reading over these thoroughly!</em></p>
<p>Fortunately over the years we have developed a very good relationship with Authorize Net, we refer a lot of business their way, So I had a direct line to call. Talking to my contact at Authorize Net led to two conclusions;</p>
<ol>
  <li>They were on it and trying to be as responsive as they could</li>
  <li>And that they had almost as many questions as I did</li>
</ol>
<p>So we arranged a conference call with one of the lead techs working on the updates to their API to discuss what all this really meant from a technical standpoint. The call cleared up a lot of questions, but it also raised a number of concerns that still needed to be addressed. My contact at Authorize Net called me back the next day to ask if I would be involved in another conference call, this time with  ten or twelve other eCommerce community leaders and  if prior to the call I would email my primary concerns and questions so they could be covered during the call. So we had a "LiveMeeting" presentation and conference call with lead Authorize Net API techs and a number of eCommerce developers around the country.</p>
<h2>So the big question: How's this impact my eCommerce web site?</h2>
<p>It's is pretty simple to visualize. Assuming you are using Authorize Net or a similar real-time payment gateway, the way your web site works now is like this</p>
<h2>Current Process</h2>
<p><img src="images/BlogPostImages/PaymentPathNow.jpg" width="569" height="129" alt="Current Payment Process" /></p>
<p>The payment is submitted to the payment gateway, if there's sufficient funds available on the card  the payment is competed and the transaction is complete. If there are insufficient funds the transaction is terminated. In other words a single payment attempt is made and it will pass or fail. If it fails due to insufficient funds the user must start over.</p>
<h2>New Payment Process</h2>
<p><img src="images/BlogPostImages/PaymentPathNew.jpg" width="569" height="137" alt="New payment process" /></p>
<p>If the card submitted has funds available, but not enough to complete the full transaction, the available funds will be captured and the cart must allow the customer try  with another card to pay the balance due.</p>
<ul>
  <li>Merchants must accept multiple payments for individual orders</li>
  <li>Number of payments not known in advance</li>
  <li>Payment software must recognize multiple payments</li>
</ul>
<p>While this is easy to visualize it's not an easy technical change! As you can see, this is a fundamental shift in he way virtually EVERY shopping cart site on the web will have to behave! This is going to take some pretty extensive programing to adapt the flow of the cart checkout process to allow for multiple attempts, and to clean up the mess of partial payments if a user decides to bail out in the middle of the process.</p>
<p><strong>So, can we just opt out and do things the way we are now?</strong></p>
<p> Well from a technical standpoint, yes. To prevent sites all over the web from breaking, "non compliant" sites will continue to work just as they do now. </p>
<p><strong>Good, no problem then right? Wrong!</strong></p>
<p><em>MasterCard will penalize merchants whose sites are found to be non compliant!</em> How much is the penalty? No body is telling! Everyone just points to someone else. But some of the figures being passed around range from significant to bloody outrageous! To the point where the immediate reaction is "how can that even be legal!" I'm still digging to see if I can get somebody to give me a straight answer and will report as soon as I do, but suffice it to say that MasterCard & Discover are serious about this and they aren't going to make it easy to ignore. They are going to force you into one of three choices. Comply, No longer accept Discover or MasterCard, or shut down.</p>
<p><strong>What about just not taking MasterCard or Discover anymore?</strong> Well some may choose to do this, but the hand writing is on the wall! Even though they are not being required to do so Authorize Net is preemptively building this functionality into their system for Visa and AmEx as well. They are pretty much expecting them to follow suit.</p>
<p><strong>Why don't we hear more from all the gateway providers about this?</strong> Don't worry, you will. <a href="https://www.x.com/docs/DOC-2021" target="_blank">PayPal</a> is already hard at this and making information available to developers. All other gateways will fall into line. Many of them are likely waiting to see what Authorize Net does, since many of them offer Auth Net emulation and their APIs work pretty much the same.</p>
<h2>So, what next?</h2>
<p>Fortunately we have some time. We are working closely with Authorize Net and will be releasing updates to users of current the version of Cartweaver for Authorize Net, and depending on what paths some of the other gateways take, we will release other updates as we can. We will stay on top of the changes and keep you informed.</p>
<p>To stay updated on how this progresses check back here or follow us on <strong><a href="http://www.facebook.com/pages/Cartweaver/252364203438?ref=mf" target="_blank">Facebook</a></strong> and <strong><a href="https://twitter.com/Cartweaver" target="_blank">Twitter</a></strong>. We will release up to the minute information there.</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=90</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=90</guid>
			<pubDate>Sat, 29 May 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Cartweaver 3 is Adobe Dreamweaver CS5 Ready!</title>
			<description><![CDATA[<p><img src="images/CS5-Ready-boxshot.png" alt="Dreamweaver CS5" width="105" height="165" hspace="15" align="right" />Adobe has released Dreamweaver CS5 and it looks to be quite the upgrade! I'm pleased to say that Cartweaver 3, ASP, PHP and ColdFusion have been fully tested and are Dreamweaver CS5 ready!</p>
<p>If you are currently using an older version of Dreamweaver, especially anything pre CS3 you should definitely <a href="http://www.adobe.com/products/dreamweaver/" target="_blank">download</a> the CS5 trial and give it a good looking over. If you've been holing off upgrading CS5 will make you glad you did. This is the upgrade you've been looking for - and no, this is not an Adobe advertisement - I'm just pretty jazzed about the improvements in this version and don't mind giving credit where credit is due.</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=89</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=89</guid>
			<pubDate>Wed, 28 Apr 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Adding your Cartweaver database to MySQL</title>
			<description><![CDATA[<p>Although the ColdFusion and ASP versions of Cartweaver ship with an Access database we have never made any secret out of the fact that it's <strong>far better to use a for-real database</strong> server such as MySQL or MS SQL Server for your ecommerce database.</p>
<p>This may cause new users some confusion because these databases are not a file that you can upload. Usually your host creates the database for you but it's empty. Now what?</p>
<p>To demonstrate how to add your Cartweaver database tables and fields to your database, we will use MySQL as the our example since it is the most common database for many and the only one supported by the Mac and Cartweaver PHP. The process is similar for SQL Server.</p>
<ul>
  <li>First go to the Cartweaver customers page and log in. This will give you access to the Customer's Free Downloads page. Once there, download the MySQL database creation script. <br />
    <br />
  </li>
  <li>Once you have it downloaded un-zip it and look for Cartweaver3_MySQL-Creator.sql<br />
    <br />
    </li>
  <li>Open this file in a text editor such as note pad - Do Not use Word as it will add characters that will corrupt the script. Use only a simple text editor.<br />
    <br />
  </li>
  <li>Now that you have your script ready, open your MySQL database in your MySQL administrator, in this example we will use phpMyAdmin since this is the one many hosts provide.</li>
  </ul>
<p><strong>Now that you are here - just follow the example in this video.</strong><br />
</p>
<p align="center">
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/1B3B9U1kj4s&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1B3B9U1kj4s&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>
</p>
<p><strong><br />
  Yes it is THAT simple.</strong></p>
<p>The process may vary depending on what admin you are using, and whether you are using MySQL or SQL Server, but the principle and the basic steps are the same.</p>
<p><em><strong>As an add note:</strong></em> I highly recommend <a href="http://www.navicat.com/" target="_blank">Navicat</a> (the commercial version) as your MySQL Administration tool. It is far and away the best, easiest MySQL admin out there and well worth the money! - No I'm not affiliated with Navicat in any way nor do I get any kind of commission. I recommend it so highly because I've tried a LOT of admin tools and haven't found any better. Definitely worth a look.</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=88</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=88</guid>
			<pubDate>Wed, 17 Mar 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Duplicating online and local data source for an easy workflow!</title>
			<description><![CDATA[<p>There are some things you can do when developing and testing locally that can ease your work-flow when it comes time to move your site to the online server, here's one of them that I was surprised to learn a lot of developers weren't using.</p>
<p><strong>Mirroring your database / data source set up</strong></p>
<p>Although Cartweaver CF supports Access database, it is always our recommendation that you move to a true database server such as MySQL or SQL Server. The advantages of speed, security, and stability are undeniable and well worth the additional set up and learning curve if you are not yet familiar with a these DBS'. Since both the ColdFusion and PHP versions of Cartweaver support MySQL I'll use it as the example here, although the principle apples equally to SQL Server.</p>
<p><strong>Same user, both places.</strong></p>
<p>It's a pretty simple procedure that will save you a lot of headaches. I was surprised to find that many developers will keep different sets of data source files, one for local work and one for the server. The reason for this is they have different log on and permissions locally. This can really lead to confusion and potentially an emergency if the local files are unintentionally uploaded to the server thus overwriting the server settings and breaking your site.<img src="images/BlogPostImages/Navicat-makeUser.jpg" alt="Create a user" width="200" height="143" hspace="25" vspace="25" align="right" /></p>
<p><strong>So here's a simple tip. </strong></p>
<p>Using your Database admin - I'll use Navicat (my absolute favorite database admin tool) in this example - set up your local development database. Give this database the exact same name as you or your host used when setting up your database on the server. </p>
<p>Then in the user admin, create a new user and assign the exact same username and password you will be using on your host server. Finally when you set up your data source name (DSN) use the exact same DSN you have on the server... When I say exact, this includes CASE as well, due to the fact that many hosted MySQL servers are on Unix / Linux boxes and are therefore case sensitive. For ease of set up, go ahead and give the local user full permissions to the database for this application, the permissions don't have to mirror the server exactly.</p>
<p>Now, when setting up your local data source direct your DSN to this database using the username and password you just created. Now when moving files back and forth between your host server and your local development environment you wont have to worry about maintaining two data source set ups, since they are both identical it wont matter where the files are.</p>
<p>If you haven't been using this set up already, by all means start today, I hope you find this as big of a time saver as I did when I first discovered it.</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=87</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=87</guid>
			<pubDate>Fri, 26 Feb 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>IE6 The wicked 6 is dead - Goodbye, and good riddance!</title>
			<description><![CDATA[<p><img src="images/BlogPostImages/IE6.jpg" alt="IE6 is dead." width="125" height="152" hspace="20" vspace="0" align="right" />
One universal thorn in the side of developers the world over in adopting AJAX, jQuery (and other cool JavaScript frameworks) and more complex CSS, not to mention looking ahead to HTML 5 is the abomination called IE6. This Microsoft non-standards-compliant train wreck of a browser has been the unwelcome guest that has just refused to leave the party.Dumbing down our sites and applications to support for this blemish on the web has been the bain of the web developers/designers existance for far too long.</p>
<h3>At last! Let's have a good Ol' Irish wake and party it's passing!</h3>
<p>Recently Google announced that it will no longer support or worry about compatibility with IE6. This follows on the heels of Microsoft announcing the same.</p>
<p>The cool thing here is, the biggest block of &quot;hangers on&quot; to IE 6 has been large corperate and government IT departments, and them not allowing users on their networks to update. </p>
<p>NOW with  two of the largest players in the market saying &quot;IE6 is dead and we are moving on&quot; the playing field has officially shifted in our favor. With major business and employers being pushed forward there's no reason to not tell users to update as well.</p>
<p>If one of our clients says &quot;my site looks funny&quot; and we find they still have IE6 we can, with authority, tell them they need to update their browser and back this up by saying even Google and Microsoft have abandoned all support for IE6 and for this reason we no longer developed with it in mind. The update is free, there are many choices, just do it. All said with a reassuring head nod and smile of course.</p>
<p><a href="http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html" target="_blank">Google's formal announcement</a></p>
<p>OH YEAH!  What a glorious time this is. All together now...</p>
<p><em>&lt;Munchkin voice&gt; Ding done the 6 is dead, the wicked 6 is   dead!!!&lt;/Munchkin voice&gt;</em></p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=86</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=86</guid>
			<pubDate>Sat, 06 Feb 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Dang! My session timed out!</title>
			<description><![CDATA[<h3>A Heartbeat script may be the end of your session time-out frustrations.</h3>
<p>We have all been there. Updating a web form and after working on it for quite a while the phone rings or somebody need our attention. You go back to you web form and finish it, then submit it only to find that your log in session has expired and you lose all your work!!! (insert explicative here).</p>
<h4>&quot;I can hear your heartbeat&quot;</h4>
<p>There is a way around this with AJAX / jQuery. There are several variations available of what has become to be known as a &quot;Heartbeat&quot; script. The purpose of this script is to Asynchronously ping or poll the server at given intervals to keep your session on the server alive. Here are a few exasmples:</p>
<ul>
<li><a href="http://www.jasons-toolbox.com/JHeartbeat/" target="_blank">http://www.jasons-toolbox.com/JHeartbeat/</a></li>
<li><a href="http://www.ajtrichards.co.uk/jquery-hearbeat/" target="_blank">    http://www.ajtrichards.co.uk/jquery-hearbeat/</a></li>
<li><a href="http://www.ajaxpatterns.org/Heartbeat">http://www.ajaxpatterns.org/Heartbeat</a><br />
</li>
</ul>
<p>There are numerous others that you can find by doing a quick Google search on &quot;Heartbeat jQuery Script&quot; </p>
<p>Some of the scripts you will find use the jQuery framework, others do not, but all follow the same idea and that is to simply interact occasionally with the server in the background to let the server know you are still there. This can save a lot of frustration for our clients and ourselves - c'mon admit it... Even though you constantly tell your clients to remember to update frequently to save their work you forget from time to time and get caught by this as well! </p> 
<h4>The cure-all?</h4>
<p>Is this little script the cure-all that we have been looking for? Quite possibly, but as with any JavaScript function you'll need to test it with your application to be certain it doesn't conflict with anything else you have going on. It's pretty easy to implement, and worth the time however, so you might want to give it a try.</p>
]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=85</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=85</guid>
			<pubDate>Thu, 04 Feb 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>FWIW - My take on the new Apple iPad</title>
			<description><![CDATA[<h3><img src="images/BlogPostImages/iPad.png" alt="iPad" width="307" height="196" align="right" />iPad, from a developer's perspective</h3>
<p>When I watched Steve Jobs introduce the Apple iPad on Wednesday, my first reaction was, this is cool, but it really didn't move me. Like the MacBook Air, it impressed me as innovative and kind of &quot;wiz-bang&quot; but it doesn't have the horse power to replace my laptop nor does it have the communications ability of my smart phone, it just didn't seem to fit.</p>
  <h3>&quot;Walk a mile in my shoes.&quot;</h3>
  <p>Then it struck me, I am looking at this from a developer's perspective. Face it were are not a mainstream lot. So I stepped out of my own perspective for a bit and tried to wrap my head around this new device from a run-of-the-mill user's stand point. NOW I get it! For the way the vast majority of my more &quot;normal&quot; family and friends use computers, this  device is absolutely brilliant!</p>
  <p>For example, my daughter went to Japan for three months and took my old MacBook with her. While this is a pretty easy traveling companion, the iPad would do everything she ever uses the MacBook for, and it would do it lighter, faster, better, and cheaper! I realized that Apple once again &quot;Got It&quot; - maybe even before the rest of us even knew what &quot;it&quot; was. I'd be willing to bet that 60% of the consumer market uses their computers for no more than what the iPad does, and the iPad does it in a new and more human friendly way. I feel a &quot;I've got to have one of these&quot; feelings coming over me!</p>
  <h3>What about our clients?</h3>
  <p>Then I took a moment and thought about our clients. So many of our clients have smaller &quot;mom-n-pop&quot; ecommerce sites for whom selling on the web is as much a part of their lives as it is a business. With an inexpensive, easy to use, access to the web anywhere, device like this in their hands, administering their web site, checking orders, adding new products and emailing customers just got a whole lot easier and more portable! And affordable! Our clients could literally be on a beach on Maui, or camping in the mountains of Colorado and with the G3 version of the iPad be connected and able to run their store and keep tabs on their business. For small one or two person businesses this spells freedom.</p>
  <h3>Social media on steroids.</h3>
  <p>Now that Social Media is becoming such a significant element in how we communicate and promote our business, the iPad's larger interface, compared to smart phones, will open things up and make staying current and connected much more friendly and therefore easier than in the cramped confines of even the best iPhone or Blackberry Storm or Droid. As we all know, when you make something you should be doing easier, you're more likely to actually do it.</p>
  <h3>A new category of computing &amp; communications.</h3>
  <p>Like the iPod, and the iPhone, I think Apple has done it again. They managed to see just a little further over the horizon that the rest of us and identified a huge, primed and ready market, and got their first! </p>
  <p>There's two things I'm resolved to buy now... an iPad, and more Apple stock. I'm 100% confident that these will both be expenditures that I'll be very pleased with.</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=84</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=84</guid>
			<pubDate>Fri, 29 Jan 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Don&apos;t go public with your site before you&apos;re ready!</title>
			<description><![CDATA[<p><strong>Clients like to see what we are up to, right?</strong></p>
  <p>As web developers we need share our progress with our clients as we wok on their new sites, but we only want to share our work with them or a select group users. </p>
  <p>That being said you'd be amazed how often the ever busy Google bots crawl their way to one of these staging sites and then, as they were designed to do, index it and then share it with the world!</p>
  <p>What brought this thought to mind was, I have a Google Alert set up for the term &quot;Cartweaver&quot; as well as several eCommerce related search terms  and frequently I'll get an alert that directs me to a site that is obviously the basic, initial install of Cartweaver. <br />
    What is no doubt happening here is a developer is putting this up as a test case for themselves or a client so see - I seriously doubt that they intended for Google to find and index their site at this time however.</p>
  <p><strong>So, how do you share your progress with your clients, yet protect it from Google and other uninvited &quot;guests&quot;?</strong></p>
<p>The best solution here is to set the folder on the server that contains your site  to be protected and to require a username and password to allow access. If you have a dedicated server this is no problem, and some hosts will set this up for you... but not all. So what do you do if you want to test things on your host server, and allow you client to check progress, but keep the site private and block access for everyone else until you are ready to go live?</p>
  <p><strong>A simple User Authentication Method with a &quot;Security Index Page&quot;</strong></p>
  <p>Here's a simple set up you can use.  You can create a placeholder / log in page and name it as your index page. This page will serve to as you temporary home page. This page will force users to log in to view the rest of the site. During development of your site, just name your home page &quot;home.cfm&quot; (or PHP or ASP) - When you are ready to go live you can eliminate the &quot;security&quot; index page and rename your &quot;home&quot; page to &quot;index&quot;. If you do this in Dreamweaver's file view Dreamweaver will even update the links to the home file to index for you so you won't have to worry about doing this manually.</p>
  <p>Now what you do is add a log in form to the security index page that will allow users to log in. If the log in is correct they will be automatically taken to the home page and be allowed to browse the site, if not the will be bounced back to the security index page. </p>
  <p>What if they are not logged in and manually enter a url for one of the interior pages? Won't they be abe to see the site then?  </p>
  <p><strong>We can prevent this with a simple validation / relocation script.</strong></p>
  <p>We will set a default log in session variable and if a log in is correct this default will be replaced  by expected &quot;logged in&quot; value. To prevent access to any pages other than  the security index page for anyone not properly logged in we will place code that checks the logged in variable value. If the user is correctly logged in we do nothing and allow access to the requested page, if the value is incorrect we will automatically redirect the user back to the security index page. For ColdFusion we would include this code in the Application.cfm or Application.cfc file, depending on which you are using. For PHP or ASP you will need to include this code at the very top of each page on your site.  </p>
  <p>Doing this will effectively hide your site-in-progress from prying eyes or Google bots, until you are ready for them to see it, but makes your work in progress easy to see for your clients.  </p>
  <p><strong>Download the example files here:</strong> </p>
  <ul>
    <li><a href="downloads/TempSiteProtector_CF.zip">ColdFusion</a></li>
    <li><a href="downloads/TempSiteProtector_PHP.zip">PHP</a></li>
    <li><a href="downloads/TempSiteProtector_ASP.zip">ASP</a></li>
  </ul>
  <p>Once the site is ready to go live, we delete the index page and rename the home page to index, as mentioned above. Then we delete the included checking code from the site. For Coldfusion, you select the include from you Application file, for PHP you can do a quick search and replace to eliminate the include code. </p>
  <p><em>A note to remember:</em><br />
    It is better if you can secure the site on the server at the folder permissions level, but if this option is not reasonably available to you, this method will do the trick!</p>
  <p>Hope you find this helpful!</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=83</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=83</guid>
			<pubDate>Tue, 19 Jan 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Continuing participation in Adobe Community Professionals</title>
			<description><![CDATA[<p class="UIIntentionalStory_Message"><span class="blogitem">I'm very pleased to have been selected to continue my participation in the Adobe Community Professionals program! </span></p><p class="UIIntentionalStory_Message"><span class="blogitem">This program affords me the opportunity to give back to a community that has been such a large part of my career! It also gives me a chance to stay on the inside track of where Adobe and the web development industry as a whole is headed. </span></p><p class="UIIntentionalStory_Message"><span class="blogitem">A BIG thank you to Adobe for asking me back - it's an honor and a privilege to be part of such a dynamic community!  Find the list of ACPs here - <a target="_blank" href="http://tinyurl.com/yh47gp8">http://tinyurl.com/yh47gp8</a></span></p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=82</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=82</guid>
			<pubDate>Mon, 18 Jan 2010 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Mystery of the missing order...</title>
			<description><![CDATA[<p>
    I received a tech support email the other day that raised a topic I thought would be worth covering here. The email, stated that there was a transaction that was showing on the users payment gateway, but not in the store database... How could this happen?</p>
  <p><strong>First let's look at what happens in a normal purchase transaction.</strong></p>
  <p>When the customer clicks the final checkout button the credit card and customer data is passed off via SSL encryption to the payment gateway (note, we are only discussing real-time gateways here like Authorize Net, Link Point or the like) The gateway verifies the information and validates the transaction, or not, depending on the response from the card issuing bank, then reports the results, either success or failed, back to the cart application. The cart then processes the transaction based upon the gateway response. </p>
  <ul>
    <li>Success - the order is added to the database and a confirmation page is displayed.</li>
    <li>Failed - a &quot;Transaction failed&quot; page is displayed and the customer is given the option to try again.</li>
  </ul>
<p>Simple enough, but what would cause a successful transaction to be recorded at the gateway, but not in the store database? </p>
  <p>What can cause this is something interrupting the response from the gateway, a glitch in the connection or a dropped packet transfer.  </p>
  <p><strong>What can you do?</strong></p>
  <p>Unfortunately there is nothing in the code or the app that can prevent a connection glitch on the web.  As long as you are reaching out to a remote service, and then requiring a response back from that remote service, there's always a chance that something will prevent the return response from getting through. Fortunately this is a very rare occurrence, but it does happen... Things are better now than they were a few or a couple of years ago, by a long shot! But still not perfect, and this can happen.</p>
  <p>Now what if it's happening frequently?  Well the first thing to keep in mind - it is not the code or the application.  The app works the same way for every transaction. It sends the data off, receives the return data, and acts accordingly based on the response. So the missing order issue  is happening to you frequently then you need to see what the possible cause that may be within your control could be.  First thing to look at is your host's system. If you are on  a host with overloaded servers or with internal connection issues, this could definitely cause this problem.  You see, when browsing from page to page on a web site, if the hosts system is a little glitchy or over stressed, drops in page requests can go pretty much unnoticed, but if this &quot;drop&quot; occurs mid transaction, then you have problems! There's no way to reinitiate the entire transaction - the app has already transferred the data to the gateway, all it can do now is wait for the response. There are a number of things that can cause this - many of them are beyond your control since they happen out on the web - but you do have control, or influence at least on what happens on your server - either by working with your host or seeking out a more reliable host.</p>
  <p>The main thing to remember here is this problem is a connection / communication issue, not an application code issue. This can happen every once in a while, simply because the web is not a perfect network. But if it's happening with any frequency, you need to see what you can do to assure more reliable connections between your site and your gateway. </p>
  <p>I hope this conversation will help clear the fog around this issue for you and help you make your system as reliable as present web technology will allow.
  </p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=81</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=81</guid>
			<pubDate>Tue, 22 Dec 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>True Life Story - Lazy SKUs</title>
			<description><![CDATA[<div>Sometimes as web developers we run into situations where we must do our  level best to save the client from themselves. This happens often enough where  I thought it would be a good idea to share some of out tech support experiences.  I believe what we share will be helpful to many developers in their day to day  dealings with clients.</div> <div>&nbsp;</div> <div>Case in point.&nbsp;&nbsp; A feature of Cartweaver and many shopping cart  applications is to track product the same way a physical store would, by  Products and SKUs. Products being the manufacturers item such as a &quot;Nike Polo  Shirt&quot; the the SKUs are id numbers assigned to all the individual variations of  that item such as &quot;Blue, XL&quot; or Red, Small&quot; and so forth. It is the SKU that  caries the price and is counted for inventory.</div> <div>&nbsp;</div> <div>Ok, pretty basic stuff for a merchant that runs a bricks and mortar store.  But you would be amazed at how many merchants setting up an online store think  that they can just skip this and do it an easier way. Admittedly entering all  those individual SKUs can be daunting if you have a hundred products with ten to  fifteen SKUs each! But doing it right is vital. Physical store merchants  understand this, but those new to online sales can be pretty insistent on  wanting to go for the short cut.</div> <div>&nbsp;</div> <div>Here's a transcript of a support thread on the topic...</div> <div>&nbsp;</div> <div>=========================</div> <div>Q-post:</div> <div>I am trying to avoid using multiple skus for one product with multiple  options.</div> <div>&nbsp;</div> <div>A-Post</div> <div>Hi, sounds like you are wanting to bypass the functionality of skus and  replace it with that exact same functionality... why not use the skus and  options as they are?</div> <div>&nbsp;</div> <div>Q-post</div> <div>Yeah that's what I am doing. My client&nbsp;is trying to keep it simple with one  sku and multiple options w/ pricing (simple for them)</div> <div>Thanks.</div> <div>&nbsp;</div> <div>A-post</div> <div>A point to talk over with your client is that they should look at inventory  and sales online exactly like they would in a bricks and mortar store,&nbsp; When  they reorder from their suppliers they order by the SKU.&nbsp; They don't call a  supplier and just say I want a mix of various shirts and just charge me the same  for all of them and don't worry about having an actual count of each or have any  way of looking back and see which ones sold and which ones didn't.&nbsp; You know it  just sounds silly when it's put that way, but many new to ecommerce will dive  into this sort of mistake because they think they are making things easier, that  is until a year from now they want to do some sort of record checking... Then  it's that stupid web developer screwed this all up... Why didn't we get a  developer that knew what he was doing!</div> <div>&nbsp;</div> <div>This is one of those areas the we must help save the client from  themselves.&nbsp; It's well worth it in the long run.</div> <div>&nbsp;</div> <div>======================&nbsp; End post</div> <div>&nbsp;</div> <div>I feel this developer's pain. We all know that clients can get a thought  into their head and once they are convinced it's a good idea that are many times  really ready to go toe to toe over it. </div> <div>It's a tough one, bus as I stated in my response, giving in may be just  delaying the battle. Doing all you can, up front to do it right will ultimately  pay off. The important thing is to think these situations out in advance, so  when the client tries to run down one of these rat holes, you have sound  reasonable explanations ready to save them from themselves.</div> <div>&nbsp;</div> <div>Hope this helps!</div>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=80</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=80</guid>
			<pubDate>Sun, 13 Dec 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Check out my article on Practical Ecommerce</title>
			<description><![CDATA[<p><span class="blogitem">I just finished an article for <a target="_blank" href="http://www.practicalecommerce.com/articles/1383-Social-Media-Marketing-Four-Steps-for-Getting-Started">PracticalEcommerce.com</a> about taking the initial steps toward having a social media strategy to promote your ecommerce site.</span></p><p><span class="blogitem"> One of the points I make is to respect the community etiquette and don&rsquo;t jump in and start selling. Doing this will make you about as welcome as an Amway salesman at a family reunion! Social media is a powerful direct -to-consumer communications tool but their are boundaries you should respect.</span></p><p><span class="blogitem">Take a look at the article and listen to the interview and let me know what you think.</span></p><p>&nbsp;</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=79</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=79</guid>
			<pubDate>Tue, 24 Nov 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Removing items from cart that are sold (ColdFusion)</title>
			<description><![CDATA[<p>One of the frequent questions I get doing support for Cartweaver is "How do I make sure that all the items in a customer's cart are still available?" What happens is that a customer will place an item in the cart, and then leave the site. Another customer comes along and buys the product. The first customer comes back and tries to purchase the item, but cannot. Unfortunately, the customer doesn't find out until the order information is entered. </p>
<p>The following modification for the ColdFusion version will remove items from the cart that are no longer available, and show the customer a message that an item has been removed from the cart because it is no longer available. </p>
<p>Now, in CWIncFunctions.cfm, add the following section of code at line 399, right after this line:</p>
<p class="code"> <cfset Cart.Products = ArrayNew(1) /> <br />
</p>
<p>Add the following code:</p>
<p class="code"><cfif application.allowbackorders EQ 0><br />
  <cfquery name="checkStock" datasource="#request.dsn#" username="#request.dsnusername#" password="#request.dsnpassword#"><br />
  SELECT c.cart_sku_ID, c.cart_sku_qty, s.SKU_Stock, c.cart_Line_ID<br />
  FROM tbl_cart c<br />
  INNER JOIN tbl_skus s<br />
  ON c.cart_sku_ID = s.SKU_ID<br />
  WHERE c.cart_custcart_ID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#Arguments.CartID#" /><br />
  AND s.SKU_Stock < c.cart_sku_qty<br />
  </cfquery><br />
  <cfif checkStock.recordCount GT 0><br />
  <cfset request.FieldError = "An item or items in your cart are no longer available or had quantities adjusted" /><br />
  <cfloop query="checkStock"><br />
    <cfif checkStock.SKU_Stock LTE 0><br />
      <cfquery  datasource="#request.dsn#" username="#request.dsnusername#" password="#request.dsnpassword#"><br />
      DELETE FROM tbl_cart <br />
      WHERE cart_Line_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#checkStock.cart_Line_ID#" /><br />
      </cfquery><br />
    <cfelse><br />
      <cfquery  datasource="#request.dsn#" username="#request.dsnusername#" password="#request.dsnpassword#"><br />
      UPDATE tbl_cart SET cart_sku_qty = <cfqueryparam cfsqltype="cf_sql_integer" value="#checkStock.SKU_Stock#" /><br />
      WHERE cart_Line_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#checkStock.cart_Line_ID#" /><br />
      </cfquery><br />
    </cfif><br />
  </cfloop><br />
  </cfif><br />
</cfif></p>
<p>Now, when a user comes back to view his cart, any items that are no longer available are removed from the cart and a message is displayed to the customer, and items that have smaller quantities available than were available at the time of the cart creation have their values adjusted. This only affects carts where Allow Backorders is unchecked in the Cartweaver admin. </p>
<p><strong>Update: 10/4/2009</strong> Thanks to Alex in the CW support newsgroup for pointing out that the method does not consider quantities in the cart greater than available quantities. It was written for one situation, but I have now adjusted the code to work with all situations where a quantity is no longer available for a given item</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=78</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=78</guid>
			<pubDate>Sat, 03 Oct 2009 15:22:04 GMT</pubDate>
		</item>
		<item>
			<title>Removing items from cart that are sold (PHP)</title>
			<description><![CDATA[<p>One of the frequent questions I get doing support for Cartweaver is &quot;How do I make sure that all the items in a customer's cart are still available?&quot; What happens is that a customer will place an item in the cart, and then leave the site. Another customer comes along and buys the product. The first customer comes back and tries to purchase the item, but cannot. Unfortunately, the customer doesn't find out until the order information is entered. </p>
<p>The following modification for the PHP version will remove items from the cart that are no longer available, and show the customer a message that an item has been removed from the cart because it is no longer available. </p>
<p>In CWIncFunctions.php, add the following section of code at line 470, right after this line:</p>
<p class="code"> $Cart[&quot;Products&quot;] = array();</p>
<p>Add the following code:</p>
<p class="code"> if(!$cartweaver-&gt;settings-&gt;allowBackOrders) {<br />
&nbsp;&nbsp;$query_rsCWCheckStock = sprintf(&quot;SELECT <br />
&nbsp;&nbsp;s.SKU_Stock, <br />
&nbsp;&nbsp;c.cart_Line_ID<br />
&nbsp;&nbsp;FROM tbl_cart c<br />
&nbsp;&nbsp;INNER JOIN tbl_skus s<br />
&nbsp;&nbsp;ON c.cart_sku_ID = s.SKU_ID<br />
&nbsp;&nbsp;WHERE c.cart_custcart_ID = '%s'<br />
&nbsp;&nbsp;AND s.SKU_Stock &lt; c.cart_sku_qty&quot;,$cartID);<br />
&nbsp;&nbsp;$rsCWCheckStock = $cartweaver-&gt;db-&gt;executeQuery($query_rsCWCheckStock, &quot;rsCWCheckStock&quot;);<br />
&nbsp;&nbsp;$rsCWCheckStock_recordCount = $cartweaver-&gt;db-&gt;recordCount;<br />
&nbsp;&nbsp;$row_rsCWCheckStock = $cartweaver-&gt;db-&gt;db_fetch_assoc($rsCWCheckStock); <br />
&nbsp;&nbsp;if($rsCWCheckStock_recordCount &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;$cartweaver-&gt;setCWError(&quot;Item Sold&quot;, &quot;An item or items in your cart are no longer available or had quantities adjusted&quot;); <br />
&nbsp;&nbsp;&nbsp;&nbsp;do {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($row_rsCWCheckStock[&quot;SKU_Stock&quot;] &lt;= &quot;0&quot;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query_rsCW = sprintf(&quot;DELETE FROM tbl_cart <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE cart_Line_ID = %d&quot;,$row_rsCWCheckStock[&quot;cart_Line_ID&quot;]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rsCW = $cartweaver-&gt;db-&gt;executeQuery($query_rsCW, &quot;rsCW&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query_rsCW = sprintf(&quot;UPDATE tbl_cart SET cart_sku_qty = %d<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE cart_Line_ID = %d&quot;,$row_rsCWCheckStock[&quot;SKU_Stock&quot;], $row_rsCWCheckStock[&quot;cart_Line_ID&quot;]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rsCW = $cartweaver-&gt;db-&gt;executeQuery($query_rsCW, &quot;rsCW&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;} while ($row_rsCWCheckStock = $cartweaver-&gt;db-&gt;db_fetch_assoc($rsCWCheckStock));<br />
&nbsp;&nbsp;}<br />
}
</p>
<p>Now, when a user comes back to view his cart, any items that are no longer available are removed from the cart and a message is displayed to the customer. This only affects carts where Allow Backorders is unchecked in the Cartweaver admin.</p>
<p><strong>Update: 10/4/2009</strong> Thanks to Alex in the CW support newsgroup for pointing out that the method does not consider quantities in the cart greater than available quantities. It was written for one situation for a customer, but I have now adjusted the code to work with all situations where a quantity is no longer available for a given item.]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=77</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=77</guid>
			<pubDate>Sat, 03 Oct 2009 14:13:18 GMT</pubDate>
		</item>
		<item>
			<title>3 Steps Towards a Successful Cart</title>
			<description><![CDATA[Most web developers have their own methods to organize themselves. <br /><br />These steps aim top give a basic workflow for those of you that don't know where to get started when facing a blank screen.<br /><br />I usually use a simple 3 step approach to all my projects:<br /><br />Step 1: Plan<br />Step 2: Develop<br />Step 3: Test, test, TEST !<br /><br />(note: this is just *my* method. I am quite sure each reader has their own set of &quot;rules&quot;. <br /><br />General overview:<br /><br /><strong>Step 1: </strong>Plan<br /><br />A lot of developers neglect to give this step the proper importance. I' think it is the most important part of the entire project. <br />Not having a good initial plan will add a lot of extra work to any project in the long run. <br /><br />Why is it so important ?&nbsp; Becuase the plan, will guide you in *what*&nbsp; you need to develop, and will force you to know the exact details before you start the actual coding work. <br />Attempting to develop a shopping cart without previous planning is like attempting to build a house without a blueprint. <br /><br />A few good reasons why you should plan ahead:<br /><br />i. It is a lot easier changing things around on a paper than it is to actually change code.<br />ii. By having all the details before hand it is a lot less probable that you get stumped whilst developing your cat. <br />iii. Any problems/questions can be solved at the very beginning, instead of having to interrupt development. <br />iv. By getting your client's approval on your plan, you ensure that you won't have any unpleasant &quot;surprise&quot; features whilst finishing your project.<br /> <br /> A very important aspect of planning, is making sure you have all your tools ready, and, that you have a local development environment setup. <br /> <br /><br /><br /><strong>Step 2</strong>: Develop<br /><br />If you have done a good job in the initial planning stage, the development part should be a lot easier to handle. <br /><br />Your plan will act as a map, helping you focus on the actual development, without having to worry about possible setbacks.<br />Whilst developing, I recommend you do daily backups of your entire work folder. By doing this you can rest assured you don't loose any work, or accidentally overwrite any files. There is no such thing as &quot;too many backups&quot; !<br /><br />A lot more can be said about the actual development. In future entries, I will be focusing in detail in the actual development process.<br /><br /><br /><br /><strong>Step 3:</strong> Test, test, TEST !<br /><br />Once you have finished your project, be sure to test it thoroughly. You can't trust it to just work because it's supposed to.<br />You should try all existing site functions to make sure each works as expected. <br /><br />Never assume the user won't click somewhere!&nbsp; If there is something not working, chances are, users will try just that. <br /><br />Sometimes, I find it quite hard to test my own sites, since I know how to use it. I usually ask someone else with basic knowledge to try it.&nbsp; A lot of times, I just ask my mom; she's 60, and has no advanced knowledge of any kind. She knows the basics of sending email, browsing the web, and using Word.&nbsp; Having a &quot;non-tech&quot; person test your site is an excellent way of making sure your site is user friendly. <br /><br />A lot of times, we feel we have so much work to do, we don't take the proper time to test our work. I regret each of those occasions. Even if on a tight schedule, I test all of it. <br />This doesn't mean that all I do is bug free. But, at least i know that if there is a bug, it won't be an obvious one.<br /><br /><br />Over the next few weeks, I'll be focusing in detail in each of these steps, and giving some extra tips for advanced users.&nbsp; Next week, you'll get an in-depth guide on how to tackle Step 1, and how to setup your local staging server.<br /><br />Please, do post your opinions !<p>&nbsp;</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=76</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=76</guid>
			<pubDate>Mon, 28 Sep 2009 16:13:07 GMT</pubDate>
		</item>
		<item>
			<title>PHP 5.3 deprecated functions -- Cartweaver PHP 3.1.16 released</title>
			<description><![CDATA[<p>PHP 5.3.0 has been released, and contains many changes from previous PHP releases. Because of this, we have updated the Cartweaver code to work with this release, and will also allow the code to work on PHP 6.0 as well.</p><p>The full list of release notes can be found at <a href="http://us2.php.net/migration53">http://us2.php.net/migration53</a>.</p><p>The main reason for the updated code is the fact that the following functions are now all deprecated in PHP and will throw E_DEPRECATED error messages when used (E_DEPRECATED is a new error message level). The functions are removed in PHP 6:</p><p><strong>Deprecated functions:</strong> </p><blockquote dir="ltr" style="margin-right: 0px"><p>call_user_method() (use call_user_func() instead) <br />call_user_method_array() (use call_user_func_array() instead) <br />define_syslog_variables() <br />dl() <br />ereg() (use preg_match() instead) <br />ereg_replace() (use preg_replace() instead) <br />eregi() (use preg_match() with the 'i' modifier instead) <br />eregi_replace() (use preg_replace() with the 'i' modifier instead) <br />set_magic_quotes_runtime() and its alias, magic_quotes_runtime() <br />session_register() (use the $_SESSION superglobal instead) <br />session_unregister() (use the $_SESSION superglobal instead) <br />session_is_registered() (use the $_SESSION superglobal instead) <br />set_socket_blocking() (use stream_set_blocking() instead) <br />split() (use preg_split() instead) <br />spliti() (use preg_split() with the 'i' modifier instead) <br />sql_regcase() <br />mysql_db_query() (use mysql_select_db() and mysql_query() instead) <br />mysql_escape_string() (use mysql_real_escape_string() instead) <br />Passing locale category names as strings is now deprecated. Use the LC_* family of constants instead. <br />The is_dst parameter to mktime(). Use the new timezone handling functions instead. </p></blockquote><p>The functions previously used by Cartweaver are ereg(), ereg_replace(), session_unregister(), and split().</p><p>There is also a new PHP site devoted to Windows installations at <a href="http://windows.php.net/">http://windows.php.net/</a></p><p>If anyone has a Cartweaver version pre-3.1.16, you will want to download the latest version and apply the fixes/changes. To download Cartweaver, go to <a href="http://www.cartweaver.com/customers">http://www.cartweaver.com/customers</a> and login as a customer. You should see your downloads. If you have not updated a Cartweaver installation, the easiest way is to simply replace the files in the /cw3 folder. If you have made changes to any of the files in your site, the UpdateNotesCW3PHP.htm file details each change to each file showing line numbers and code before/after. I've found Beyond Compare (<a href="http://www.scootersoftware.com/">http://www.scootersoftware.com/</a>) to be a valuable tool for making line-by-line file changes, or comparing directories.<br /></p>
<p><strong>Update: 2009-09-08 6:47pm</strong> One thing I noticed on the PHP site is that the Windows ISAPI version of PHP is not supported any more. Hopefully the bugs have been addressed in the CGI versions, as previous versions of PHP were crash-prone when using the old CGI version. Supposedly the new FastCGI version is better.</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=75</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=75</guid>
			<pubDate>Wed, 09 Sep 2009 03:47:28 GMT</pubDate>
		</item>
		<item>
			<title>Off To CFUnited!</title>
			<description><![CDATA[<p>I'm pleased to say I'm headed for CFUnited!&nbsp; I'm going to Seattle today to spend the night so I can be at the Airport bright and early for my flight. </p><p>&nbsp;Keep an eye on my this blog as I will post anything  new or cool we hear about at the conference.<br /><br />Also, be sure to follow me  on twitter and.or Facebook. I'll be posting there frequently.<br /><br /><a href="http://twitter.com/LawrenceCramer">http://twitter.com/LawrenceCramer</a><br /><a href="http://www.facebook.com/home.php?ref=logo#/lawrence.cramer?ref=name">http://www.facebook.com/home.php?ref=logo#/lawrence.cramer?ref=name</a><br /></p><p>&nbsp;I hope to see as many of you there as possible, if you are there be sure to attend my session on &quot;Real World eCommerce&quot;&nbsp; at 2:00 on Tuesday&nbsp; <br /></p><p>Cheers!</p><p><br /></p><p>&nbsp;</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=74</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=74</guid>
			<pubDate>Mon, 10 Aug 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>ColdFusion 9 and CF Builder Public Betas... What they mean to you.</title>
			<description><![CDATA[<p>The new ColdFusion 9 Public Beta gives a clear picture of where Adobe intends to take ColdFusion, not only as an easy-to-learn web development language, but as a key component in an entire development platform!<br />
  <br />
As for CF itself, some very cool new features have been added. Here's a couple articles worth a look-see:</p>
<p><br />
  Some very good <a href="http://labs.adobe.com/technologies/coldfusion9/videos/" target="_blank">videos on Adobe Labs</a><br />
  <a href="http://www.adobe.com/devnet/coldfusion/articles/coldfusion9_whatsnew.html" target="_blank">Ben Forta's Article</a><br />
  <a href="http://www.horwith.com/index.cfm/2009/7/14/CF9-feature-review" target="_blank">Simon Horwith's Blog</a><br />
  <br />
  Finally, a bit more in-depth take a look at <a href="http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSf01dbd23413dda0e-70d18ba71212f29e7cb-8000.html" target="_parent">Adobe's Live Docs</a><br />
  <br />
  One of really interesting aspects of the new betas is CF Builder (formally code named Bolt) For the first time since the Allaire days, pre Macromedia/Adobe ColdFusion will have a dedicated development environment for the hard core coder. This will open up some doors to serious development that were hard to get through using the hodgepodge of Open Source tools or Dreamweaver which is admittedly tilted more toward the visual designer/developer.<br />
  <br />
  So all in all, the next generation of CF is a big leap and there's no doubt that it will have a big impact on the way many of us do things. I would highly recommend all CF developers, or those wanting to learn more about ColdFusion go to <a href="http://labs.adobe.com/technologies/coldfusion9/" target="_blank">Adobe Lab</a>s and download the beta and give it a try!
</p>
<p>You should also give <a href="http://labs.adobe.com/technologies/coldfusionbuilder/" target="_blank">CF Builder</a> a try as well... A word of caution here, CF Builder is built on the Eclipse platform, which means if follows a significantly different workflow that Dreamweaver and there is a fairly significant learning curve involved to get your head around the way &quot;Projects&quot; - This is how CF Builder refers to &quot;sites&quot; as Dreamweaver calls them. Is it worth the effort? This is actually a fairly easy question to answer. If you develop ColdFusion based web sites, but most of your time is spent in Dreamweaver's design view, probably not. It you spend the majority of your time working with ColdFusion in Dreamweaver's code view, the most definitely yes. So depending how you currently work CF Builder may be the greatest thing to happen to the way you work in a long time, or a non issue. It'll be up to each individual to decide.</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=73</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=73</guid>
			<pubDate>Tue, 14 Jul 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>My take on Windows 7... For what it&apos;s worth.</title>
			<description><![CDATA[  <p>Microsoft is showing a little different attitude these days. They have been extremely open with Windows 7, making beta copies really easy for just about anyone to get their hands on. They have been, and this is really a shift, very attentive and responsive to the &quot;community at large&quot; during the beta. And now it seems they are going to be releasing the shipping version on time or even a LITTLE EARLY! This is a monumental shift!!! Finally, just to punctuate the whole thing, they have recently announced some substantial discounts for early adopters! See article at <a href="http://www.informationweek.com/news/windows/operatingsystems/showArticle.jhtml?articleID=218101425" target="_blank">Information Week</a>.</p>
  <p>It looks like Microsoft is working overtime to drum up business and may be a little worried, you think?</p>
<p><strong><em>I say it's about time!  </em></strong></p>
<p>For tooooooo long Microsoft has used it's monolithic market share as a reason to cram its over bloated, under tested, security hole ridden software on its nearly captive customer base... Then, finally they loaded that last straw onto the poor camel's back - Vista.  The user community revolted by simply staying put with Windows XP. Basically staging an &quot;upgrade strike&quot;.   At the same time,  larger numbers than ever before decided to make the switch to the Mac. Finally with an eroding customer base and upgrade sales flat lining Microsoft had themselves an &quot;oofdah! moment and stared smelling the coffee burning... In the OS department anyway.</p>
  <p>Have they truly seen the light?   Sadly it would appear, No.  Their approach to .Net or nothing, to non standards based HTML rendering in Outlook their refusal to work with competitors on industry standards joint initiatives, still shows them for what they are... A cranial-up-rectal bully that just doesn't get or care how to play well with others.  </p>
  <p>For now, out of all this, at least I may get a reasonable price on a finally stable OS to run Open Office, ColdFusion, PHP, CS4, MySQL... you know, all my anything-but-Microsoft apps on.. And for that at least I'm grateful. </p>
  <p>I hope, selfishly I'll admit, that Windows 7 is all it is supposed to be, and what Vista should have been. But at the same time I hope it doesn't do too well. I'd like to see Microsoft sweat some more. I'd like to see them realize that a web standards compliant Outlook would actually be the RIGHT long term choice! That Internet Explorer should actually support WC3 (World Wide Web Consortium) standards. Maybe, if Apple continues to erode their base and they continue to lose market share Microsoft will actually see the light. They, and the rest of us will be the better for it.</p>
  <p>I'll admit, we have to give Microsoft credit... In the early days they took   us to places that few could have imagined, but for a long time now they have   turned to the dark side where power and control are far more important to them   than progress and innovation or even quality.  I don't want to see them go down, I just want to   see them be a productive part of the development community, to be a force for   progress rather than an obstacle.
  </p>
  <p>Let's hope they will take the lesson learned in the OS department and move the rest of their efforts in the same direction.</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=72</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=72</guid>
			<pubDate>Fri, 26 Jun 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Customer Contact plugin hints</title>
			<description><![CDATA[Our new <a href="http://www.cartweaver.com/store/detail/?id=cwPICustContact" target="_self" title="Cartweaver Customer Contact Plugin">Customer Contact eNewsletter plugin</a> allows you to send emails to customers and other contacts in your Cartweaver database. Sending email through a browser is a little different than using a service, if you have not done it before -- the execution time will vary depending on the speed of your server and number of emails you are creating. A list of 1000 emails might take 1-3 minutes to complete, and bigger lists can take proportionally longer. I used to send to lists of 50,000-100,000 for a large company, and the browser would be open for up to an hour. Sending personalized email can be a slow process.<br /><br />As with anything, it's probably a good idea to test with smaller lists first, or lists consisting of your own email address, however there are a few things you can do if you are timing out or having other difficulties with larger lists: <br /><br /><strong>For PHP: </strong><br /><br />1. make sure you have a valid file and/or email address in the CWError.php file. This can help track down problems<br />&nbsp;<br />2. make sure that your php.ini setting for max_execution_time is set high enough for the large list. By default the maximum is 30 seconds, which can get you through a small list, but to send 1000 messages your maximum might need to be 100-200 seconds or more. Your page will take the full time to complete. <br />&nbsp;<br />3. Make sure web server timeouts are large enough. Consult your web server documentation about page request timeouts.<br />&nbsp;<br /><strong>For ColdFusion:</strong><br /><br />1. Make sure the ColdFusion setting for page execution is large enough, if it is enabled, or put a &lt;cfsetting&gt; tag in your cwcc_SendEmails.cfm file. This article talks about ColdFusion timeouts:<br /><a href="http://kb2.adobe.com/cps/194/tn_19438.html">http://kb2.adobe.com/cps/194/tn_19438.html</a><br /><br />2. Make sure web server timeouts are large enough. Consult your web server documentation about page request timeouts.<br /><br />]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=70</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=70</guid>
			<pubDate>Fri, 26 Jun 2009 00:10:46 GMT</pubDate>
		</item>
		<item>
			<title>Early Bird pricing for CFUnited ends Soon</title>
			<description><![CDATA[<p>Early Bird pricing for CFUnited ends next Tuesday, June 30th! If you  plan on attending what promises to be THE CF Developer's conference of  2009, might as well get your tickets at a discounted price.  </p>
  <p>During  the week of March 16 - 20, 2009, Authorize.Net will be deprecating all  legacy support for the SSL 2.0 protocol. Changes have recently been  made to the Payment Card Industry Data Security Standard (PCI DSS)  which have made the use of SSL 2.0 a PCI DSS violation.<br />
    <br />
    Due to this change, it is critical that you update any applications or  integrations that may be using the SSL 2.0 protocol to support the more  current SSL 3.0/TLS 1.0 protocols. Failure to upgrade your applications  or integrations may result in a lost ability to successfully process  transactions via the Authorize.Net Payment Gateway.... <em>contact Authorize.net for the  rest.</em></p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=69</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=69</guid>
			<pubDate>Thu, 25 Jun 2009 07:20:00 GMT</pubDate>
		</item>
		<item>
			<title>Don&apos;t Under Bid Your Projects</title>
			<description><![CDATA[<p>A few words of advice if you are new to developing shopping cart web sites. Just because you found an affordable ecommerce app that is easy to integrate - such as Cartweaver - doesn't mean you should be doing shopping cart sites for cheap! Sure Cartweaver provides a real leg up and makes things so much quicker and easier, but a fully dynamic, database driven, ecommerce site still has complexities and many times unforeseen complications, that have nothing to do with Cartweaver itself. There can be host issues. Issues with the payment Gateways. Merchant accounts, you know, all the elements involved in an dynamic, professional, ecommerce site. Then there's the client who springs that infamous &quot;could you just...[ fill in blank here ]&quot; feature request or change orders on you. The point is, when you are creating an ecommerce site for a client you are stepping into a more complex role than just a web designer. You also end up being a consultant. Be sure you charge accordingly! The end result is both you and your clients will take your job more seriously, and you'll make more money. Both of those are good things!
<br /><br />
Hope you find this helpful.<br />
  </p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=71</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=71</guid>
			<pubDate>Thu, 25 Jun 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>As soon as I know, you&apos;ll know!</title>
			<description><![CDATA[<p>As I posted here eirlier, I'll be speaking at this year's <a href="http://www.cfunited.com" target="_blank">CFUnited</a>. While I'm  there I'll also be posting videos to facebook and tweeting the goings  on and new goodies that Adobe is rumored to be announcing at this years  event. While CFUnited is pretty ColdFusion focused, it is rumored that  Adobe will be spilling the beans on a number of things that will effect  much more than just the CF crowd. If you'd like to be &quot;in the know&quot; as  these events happen, then &quot;Friend me up&quot; on facebook and twitter!!!</p>
<p><a href="http://www.facebook.com/home.php?ref=logo#/profile.php?id=1387444335&amp;ref=nf" target="_blank">Facebook</a>   -   <a href="http://twitter.com/LawrenceCramer" target="_blank">Twitter</a></p>
<p>I  look forward to being a real &quot;blabber mouth&quot; at the event and sharing  as much info as time, technology and bandwidth will allow.</p>
<p>I figure once Adobe says it at CFUnited... It's public and ok to share!</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=67</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=67</guid>
			<pubDate>Fri, 12 Jun 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>Cartweaver 3 PHP Extension Update (3.1.14)</title>
			<description><![CDATA[<p>Hello, I'm Angela Buraglia and I'm the Extension Developer for Cartweaver. This is my first entry for the Cartweaver Blog! </p>
<p>Recently we had a handful of reports from customers who could not install Cartweaver3PHP.mxp into Dreamweaver CS3 or CS4 using Windows XP or Vista. These customers would usually get either a Runtime Error or a simple error message that read "Parameter incorrect." I know; that's a pretty unhelpful error message, isn't it?</p>

<p>It's a not typical that we run into an issue that can't be resolved quickly. In fact the extension portion of Cartweaver has been stable for quite a long time now. <em>Any</em> issue is rare occasion at this point, but for it to be an issue that takes more than a few days to figure out is practically unheard of.</p>

<p>At the end of March, one of the first people to report the issue to us was actually someone in Quality Assurance at Adobe who was testing the extension in order to approve it to be on the Dreamweaver Exchange. He sent us great news; ASP & ColdFusion were approved, but the PHP version wouldn't install. Along with that he sent us the Extension Manager crash report XML file.</p>

<p>This was the first I'd seen one of their crash report files. Nothing in it looked out of sorts to me and I kept scrolling through the file hoping to find some clue so that I could reproduce the issue. The one tag that could have helped was empty: &lt;reproSteps&gt;&lt;/reproSteps&gt;

<p>All of us here at Cartweaver tried to reproduce the issue, but none of us could. Over the next couple months we got similar reports from a few more customers. With each report, we tried to duplicate the issue on a system with the same configuration (for example Windows Vista with CS3, or XP with CS4) but it just wasn't duplicate for us. We of course suggested the customer try all the standard techniques for troubleshooting a Dreamweaver extension issue, but even uninstalling Dreamweaver and wiping out settings didn't do the trick.</p>
<p>Why was this happening to just a few customers? It drove me crazy; I had to find the answer. We probably could have just said sorry to the few people who had the problem and issued refunds, but that's not our style at Cartweaver; we'd rather do everything possible to make things better. I wasn't going to just give up; somehow I'd figure out what was causing the issue and fix it!</p>

<p>Long story (at <a href="http://dwmommy.com/?day=6/5/2009#blog649">my personal blog</a>) made short, it came down to a single file with a bad file date that prevented the MXP from installing on some systems. It took a lot longer to figure out the problem than any of us would have liked, but this was really obscure. I can't tell you how relieved I was when I got the 
news that it worked for a couple of our customers who had been experiencing the issue; finally!
</p>

<p>My thanks to our customers who volunteered to help us find a solution to the issue. Your patience and helpfulness are very appreciated; thank you so much!</p>
<p>Since you're probably reading this because you own Cartweaver 3 PHP, there's one important thing you should know: If you're using Cartweaver 3 PHP 3.1.13 and it is working fine for you, you don't need the 3.1.14 update. (No changes were made to PHP files, so if you have 3.1.13 working just fine you don't need this update.)</p>
]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=66</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=66</guid>
			<pubDate>Fri, 05 Jun 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>New CW article at Community MX</title>
			<description><![CDATA[<p>I started a series at Community MX about modifying and enhancing the Cartweaver admin using the configuration options and custom coding. The first article is about adding a <a title="Cartweaver PHP Low Stock Warning" href="http://www.communitymx.com/content/article.cfm?cid=B6908">low-stock warning to your admin home page</a>.</p>
<p>Some other past Community MX articles about Cartweaver are:</p>
<blockquote>
<p><a href="http://www.communitymx.com/abstract.cfm?cid=52740">Integrating Cartweaver with a Page Design</a></p><p><a href="http://www.communitymx.com/abstract.cfm?cid=A4BB0">Showing Results and Details on One Page Using AJAX</a></p><p><a href="http://www.communitymx.com/abstract.cfm?cid=F9EAC">Using JumpStarts with Cartweaver, Featuring Minneapolis </a></p>
</blockquote>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=65</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=65</guid>
			<pubDate>Fri, 05 Jun 2009 01:21:33 GMT</pubDate>
		</item>
		<item>
			<title>Make Add to Cart buttons (php)</title>
			<description><![CDATA[<p>I get a lot of questions about making an Add to Cart button for Cartweaver. This is not something that is available out of the box, but easily implemented. Cartweaver doesn't work like Paypal, where you need static add to cart buttons to make the cart work. CW is self-contained and database driven, where all products are stored in the database. However, an add to cart button is easily added. I have been using them for years on my own site <a title="Tom Muck's web site" href="http://www.tom-muck.com/extensions" target="_blank">www.tom-muck.com/extensions</a>. The following can be added to the ProductForm.php file in the Cartweaver admin, right before the closing &lt;/div&gt; tag on the Page 1 div. Find this code:</p><p class="code">&nbsp;&lt;/div&gt;<br />&nbsp;&lt;div id=&quot;page2&quot;&gt;</p><p>add this:</p><p class="code">&lt;p&gt;&lt;a href=&quot;AddToCartButtons.php?prodId=&lt;?php echo($row_rsCWGetProduct[&quot;product_ID&quot;]);?&gt;&quot; target=&quot;_blank&quot;&gt;Make Add To Cart Buttons&lt;/a&gt;&lt;/p&gt;<br />&nbsp;&lt;/div&gt;<br />&nbsp;&lt;div id=&quot;page2&quot;&gt;</p><p>Now, create a new page in the /cw3/admin folder called AddToCartButtons.php and put this code on it:</p><p class="code">&lt;?php<br />include(&quot;application.php&quot;);<br />$productId = isset($_GET[&quot;prodId&quot;]) ? intval($_GET[&quot;prodId&quot;]): 0;<br/><br/>/* Get Product Data */<br />$query_rsCWGetProduct = sprintf(&quot;SELECT DISTINCT product_ID,<br />product_Name,<br />product_Description,<br />s.SKU_ID,<br />s.SKU_MerchSKUID<br />FROM tbl_products p<br />INNER JOIN tbl_skus s<br />ON p.product_ID = s.SKU_ProductID<br />WHERE product_ID = %d<br />AND product_Archive = 0<br />AND product_OnWeb = 1<br />&quot;, $productId);<br />$rsCWGetProduct = $cartweaver-&gt;db-&gt;executeQuery($query_rsCWGetProduct, &quot;rsCWGetProduct&quot;);<br />$rsCWGetProduct_recordCount = $cartweaver-&gt;db-&gt;recordCount;<br />$row_rsCWGetProduct = $cartweaver-&gt;db-&gt;db_fetch_assoc($rsCWGetProduct);</p><p>do {<br />?&gt;<br />&lt;h2&gt;&lt;?php echo($row_rsCWGetProduct[&quot;product_Name&quot;] .&quot;: skuid &quot; . $row_rsCWGetProduct[&quot;SKU_MerchSKUID&quot;]);?&gt;&lt;/h2&gt;<br />&lt;textarea cols=&quot;80&quot; rows=&quot;10&quot;&gt;</p><p>&lt;form action=&quot;details.php?prodId=&lt;?php echo($row_rsCWGetProduct[&quot;product_ID&quot;]);?&gt;&quot; method=&quot;post&quot; name=&quot;AddToCart&quot;&gt; <br />&nbsp;&lt;input name=&quot;qty&quot; type=&quot;hidden&quot; value=&quot;1&quot;&gt; <br />&nbsp; &lt;input name=&quot;skuid&quot; type=&quot;hidden&quot; value=&quot;&lt;?php echo($row_rsCWGetProduct[&quot;SKU_ID&quot;]);?&gt;&quot;&gt;<br />&nbsp; &lt;input name=&quot;prodId&quot; type=&quot;hidden&quot; value=&quot;&lt;?php echo($row_rsCWGetProduct[&quot;product_ID&quot;]);?&gt;&quot;&gt;<br />&nbsp; &lt;input name=&quot;submit&quot; type=&quot;submit&quot; class=&quot;formButton&quot; value=&quot;Add to Cart&quot;&gt; <br />&lt;/form&gt;&lt;/textarea&gt;<br />&lt;br/&gt;&lt;br/&gt;&lt;hr/&gt;<br />&lt;?php<br />} while ($row_rsCWGetProduct = $cartweaver-&gt;db-&gt;db_fetch_assoc($rsCWGetProduct));</p><p>That should do it. Now, when you click the link, the page populates with add to cart button code for each sku for that product.</p><p>The add to cart button code looks like this:</p><p class="code">&lt;form action=&quot;details.php?prodId=31&quot; method=&quot;post&quot; name=&quot;AddToCart&quot;&gt; <br />&nbsp;&lt;input name=&quot;qty&quot; type=&quot;hidden&quot; value=&quot;1&quot;&gt; <br />&nbsp; &lt;input name=&quot;skuid&quot; type=&quot;hidden&quot; value=&quot;59&quot;&gt;<br />&nbsp; &lt;input name=&quot;prodId&quot; type=&quot;hidden&quot; value=&quot;31&quot;&gt;<br />&nbsp; &lt;input name=&quot;submit&quot; type=&quot;submit&quot; class=&quot;formButton&quot; value=&quot;Add to Cart&quot;&gt; <br />&lt;/form&gt;</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=64</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=64</guid>
			<pubDate>Sat, 30 May 2009 01:49:09 GMT</pubDate>
		</item>
		<item>
			<title>You have a story to tell... the ecommerce opportunity!</title>
			<description><![CDATA[  <p>The economy... what a ride! The ride has been mostly down, like stepping out of a plane down! That may not seem like a very encouraging opening statement, but there's a silver lining to this seemingly ominous cloud.  Ecommerce is in the enviable position of having felt the downturn last and to be feeling the recovery first. In short, it is the most stable segment of the retail market and still offers the best opportunity for new/additional business!</p>
  <p>For proof of this take a look at the graph in this article on Practical Ecommerce</p>
  <p><a href="http://www.practicalecommerce.com/articles/1106-Chart-of-the-Week-Ecommerce-Sales-Growth-Flat-in-Q1-2009" target="_blank">Ecommerce Sales Growth Flat in Q1 2009</a></p>
  <p>You notice that yes, sales did dip in the last quarter of 2008... but only by 3%! That's after huge growth in 2007, and while the rest of the economy was in a full blown free fall for most of 2008 ecommerce was still growing. And now after only one quarter of being slightly down, business has leveled off and is already showing signs of growth for the second quarter.</p>
  <p>For a lot more information on the topic simply look at these Google searches on the following topics:</p>
  <ul>
    <li> <em><a href="http://www.google.com/search?hl=en&amp;q=ecommerce+growth+in+the+first+quarter+of+2009+&amp;btnG=Search&amp;aq=f&amp;oq=&amp;aqi=" target="_blank">ecommerce growth in the first quarter of 2009 </a></em>  </li>
    <li> <em><a href="http://www.google.com/search?hl=en&amp;q=ecommerce+growth+projections+for+2009&amp;btnG=Search&amp;aq=f&amp;oq=&amp;aqi=" target="_blank">ecommerce growth projections for 2009</a></em></li>
  </ul>
  <p>Compared to most every other sector of the economy, ecommerce is &quot;where it's at&quot; to see growth over the next eighteen months. </p>
  <p>In many ways the down economy is driving this growth. More and more people are shopping online in pursuit of better prices. Consumers also realize that they can save a lot of money by comparison shopping for larger ticket items online in a fraction of the time and virtually for free.</p>
  <p>So, what's all this mean for web developers?<em> &#8212; You have a story to tell! </em><br />
    You have something in your bag of tricks that can help your clients grow their business, even though fewer customers may be coming through their front door. The customers are still out there, but they are shopping online! Do a little research and put together a presentation. Show your clients, or potential clients, that adding ecommerce capabilities to their online presence isn't a &quot;should do&quot; it's a &quot;must do!&quot;<br />
  </p>
  <p>When it comes to finding more business in a growth market, when it comes to helping business find more sales in a seriously down economy, you have a story to tell. You have help you can offer. So take a little time, get your presentations in order and go tell it. The result is better business for your clients, and more business and grateful, loyal clients for you. Now that's a real opportunity!<br /> 
  </p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=63</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=63</guid>
			<pubDate>Fri, 22 May 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title>10 CFUnited Speaker Questions</title>
			<description><![CDATA[<p>As a speaker at this year's <a href="http://cfunited.com/2009/" target="_blank">CFUnited</a> I've been asked to answer ten questions that may help folks contemplating on whether or not to attend. First off, if you are a ColdFusion developer, or looking to learn ColdFusion, you SHOULD go... And here's a few reasons why.</p>
  <p>1. Have you spoken at CFUnited in the past?  What would you tell someone who hasn't been  to CFUnited before?</p>
  <blockquote>
    <p class="cmxblogger">No. I'm very excited to be speaking this year!</p>
    <p class="cmxblogger">CFUnited is THE ColdFusion conference. It's the  &quot;must attend&quot; best-of-breed conference because of the caliber of  speakers and the no sales hype / real information focus of the event.</p>
  </blockquote>
  <p>2. Why should people attend your session(s)?</p>
  <blockquote>
    <p class="cmxblogger">Even in this down economy, one business sector is still experiencing  growth... eCommerce. More and more developers are getting asked by their  clients to develop eCommerce sites and they are finding it to be a more complex,  specialized skill set than they expect. They are expected to not only develop sound  eCommerce applications but know about many other things such as payment  gateways, PCI compliance, security, merchant accounts and so on. My session  will cover all these facets of eCommerce development.</p>
  </blockquote>
  <p>3. Do you have any projects in the works that you will be  revealing at CFUnited?</p>
  <blockquote>
    <p class="cmxblogger">Yes.  Can't say  much more than that right now.</p>
  </blockquote>
  <p>4. Besides your topic, what other sessions are you  looking forward to?</p>
  <blockquote>
    <p class="cmxblogger">I'll be like a kid in a candy store!  Having difficulty narrowing down my choices  so far!</p>
  </blockquote>
  <p>5. What are some of the hot topics you'd like to see at  RoundTable discussions?</p>
  <blockquote>
    <p class="cmxblogger">Anything Bolt. (the new dedicated ColdFusion Development Application)</p>
  </blockquote>
  <p>6. Where can people find you at CFUnited?  (At the bar, networking, working, in your  room, etc.)</p>
  <blockquote>
    <p class="cmxblogger">At my session, and on Twitter... I'll be tweeting a lot  and will tweet meet-up plans: <a href="http://twitter.com/LawrenceCramer" target="_blank">http://twitter.com/LawrenceCramer </a></p>
  </blockquote>
  <p>7. What's the latest news with you? Has anything changed  since last CFUnited?</p>
  <blockquote>
    <p class="cmxblogger">A lot! The economy has presented not only challenges but  huge opportunities! Whenever you shake things up, new openings emerge.</p>
  </blockquote>
  <p>8. What is unique about CFUnited?</p>
  <blockquote>
    <p class="cmxblogger">It's focus! It's an opportunity to learn, not be  &quot;sold&quot;.  It an opportunity to  learn about ColdFusion and related technologies and to meet and network with  the best in the field.</p>
  </blockquote>
  <p>9. When you are not working what do you like to do in  your free time?</p>
  <blockquote>
    <p class="cmxblogger">Go sport touring around the west with my wife and friends  on my 2008 Kawasaki Concourse 1400, and do a little wine tasting. I'm a bit of  a wine buff and Washington has a lot of great wine!</p>
  </blockquote>
  <p>10. Feel free to make up your own question and then  answer it.</p>
  <blockquote>
    <p class="cmxblogger">Q: Besides the sessions, what makes CFUnited worth the  cost of going?</p>
    <p class="cmxblogger">A: The networking!   If you go DON'T be a wallflower! Get out there, meet and greet and make  new friends and contacts. </p>
  </blockquote>
  <p><a href="http://cfunited.com/2009/" target="_blank"><strong>See you at CFUnited!!</strong></a><br />
  </p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=62</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=62</guid>
			<pubDate>Thu, 14 May 2009 05:00:00 GMT</pubDate>
		</item>
		<item>
			<title> Quick Tip - Require a customer to be logged in to shop.</title>
			<description><![CDATA[<p><span class="blogitem">I've been asked a number of times recently about how to require a customer to be logged in to shop, such as in a case of member's only or wholesale only sites. This is really quite easy to do.</span></p><p><span class="blogitem">There is a selection in the Cartweaver menu that allows you to place a log in form on any page you like, you could create a log in page. Then with just a little modification to you site check to see if the logged in variable exists signifying that the user has logged in successfully, if so allow them to access the product pages, if not route them back to the log in page.&nbsp; Just a few lines of code at the very top of the pages you wish to protect - something like this...</span></p><p>This example is done is ColdFusion...<br /></p>    <p class="code">&lt;cfif NOT IsDefined(&quot;Client.CustomerID&quot;)&gt;<br />&nbsp; &lt;cflocation url=&quot;YourLogInPageName.cfm&quot; addtoken=&quot;no&quot;&gt;<br />&lt;cfabort&gt;<br />&lt;/cfif&gt;<br /></p><p class="blogitem">Here is the same in ASP...</p><p class="code">&lt;%<br />'If user has not logged in, then redirect him to our login page<br />If Session(&quot;CustomerID&quot;) = &quot;&quot; Then<br />&nbsp;&nbsp;&nbsp; Response.Redirect(&quot;YourLogInPageName.asp&quot;)<br />End If<br />%&gt;<br /></p><p class="blogitem">Here is the same in PHP as well.</p><p class="code">&lt;?php<br />session_start(); <br />$_SESSION[&quot;customerID&quot;] = 1;<br />if (!isset($_SESSION[&quot;customerID&quot; <br />]) || (isset($_SESSION[&quot;customerID&quot;]) &amp;&amp; $_SESSION[&quot;customerID&quot;] == &quot;0&quot;) ) {<br />&nbsp;&nbsp;&nbsp;&nbsp; header(&quot;Location: YourLogInPageName.php&quot;);}&nbsp;&nbsp;&nbsp; <br />?&gt;<br /></p><p class="blogitem">&nbsp;Pretty simple solution!<br /></p><p class="blogitem">&nbsp;</p>]]></description> 
			<link>http://blog.cartweaver.com/index.cfm?newsid=61</link>
			<guid isPermaLink="true">http://blog.cartweaver.com/index.cfm?newsid=61</guid>
			<pubDate>Sun, 29 Mar 2009 18:13:19 GMT</pubDate>
		</item>
	</channel>
</rss>


