<?xml version="1.0" ?> 
<?xml-stylesheet type='text/xsl' href='rss.xslt' version='1.0'?>
<!--  RSS generation by 'Tom Muck's Blog' on Sun, 15 Mar 2026 05:48:37 GMT   --> 
<rss version="0.92">
	<channel>
		<title>Tom Muck's Blog: Cartweaver</title> 
		<link>http://www.tom-muck.com/blog/?cat=13</link> 
		<description>Tom Muck's Blog</description> 
		<webMaster>tom.muck@gmail.com</webMaster> 
		<language>en-us</language> 
		<item>
			<title>New round of SQL injection from China</title>
			<description><![CDATA[<p>Be on the watch for new SQL injection attempts, coming from China, using an ascii-encoded binary string. Essentially, what it does is find a vulnerable database and append a string to the fields in every table. The string is  a closing &lt;/title&gt; tag with a script, followed by a comment to hide the rest of the page:
</p>
<p><a href="http://www.bloombit.com/Articles/2008/05/ASCII-Encoded-Binary-String-Automated-SQL-Injection.aspx">http://www.bloombit.com/Articles/2008/05/ASCII-Encoded-Binary-String-Automated-SQL-Injection.aspx</a></p>
<p>I put something like this in my application.cfm file to re-rout the 
	attackers temporarily:</p>
<p class='code'>&lt;cfif FindNoCase('user&gt;0',cgi.query_string) OR findNoCase('declare',cgi.query_string) <br>
	OR findNoCase('EXEC(@',cgi.query_string)&gt;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&lt;cflocation url=&quot;http://www.ftc.gov&quot;&gt;<br>
&lt;/cfif&gt;<br>
</p>]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=184</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=184</guid>
			<pubDate>Fri, 08 Aug 2008 17:02:55 GMT</pubDate>
		</item>
		<item>
			<title>Dreamweaver 10 (CS4) Beta open to the public</title>
			<description><![CDATA[<p>Adobe has released the latest version of Dreamweaver to public beta at <a title="Dreamweaver beta" href="http://labs.adobe.com/technologies/dreamweavercs4/">http://labs.adobe.com/technologies/dreamweavercs4/</a>. As always, I have had a love/hate relationship with the program. Having used it a while now, I can say the same for the new version. I like many of the new features, like the related files views, the Subversion integration, and the collapsable panels (it's about time for this feature!). I will definitely be using DW 10 in the future, and have no intention of going back to the previous version. The collapsable panels alone are worth the price of admission. DW has always had problems with the usability of panels from the earliest days, but this time they got it right.</p>
<p>On the other hand, some things look like they were tacked on as an afterthought, and the overall interface is not as user-friendly as a basic Windows program should be that has been around for as many years as it has. The title bar is gone and the path to the current file has been stuck into a little spot that is reserved for page tabs. It sounds like a minor thing, but it's one of the most important parts of coding in a multi-tab editor. As soon as you open more than a few pages, the file path is cut off, and with a few more open, it disappears. Major step backwards here:</p>
<p><img src="http://www.tom-muck.com/blog/images/filepath.jpg"  alt="File path cut off in Dreamweaver" /><br />
</p>
<p>The other obvious usability problem here is the black text on dark grey in the tabs. On a laptop it's impossible to see, as is the white text on the dark grey. Also, the individual pages have a close button (X) which is a great bonus, but it would have been nice to have a close button on the frequently used panels (like Find/Replace) so you don't have to right click to pick a menu item to close a panel. Also, the entire border of the program is gone, making it blend into other open programs on your desktop. I understand this is the new "owl" interface, but owls should be left in the woods to live in trees. We really don't need the artsy fartsy stuff in a code editor.</p>
<p>But all in all, I would recommend the program. I use Eclipse all day long at my place of employment, and it is simply not as intuitive or easy to use as DW. Code view in DW has come a long way since the days of Ultradev. Download it and try it out, and by all means make suggestions in the forums on things that can be made better.</p>]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=182</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=182</guid>
			<pubDate>Tue, 27 May 2008 23:13:36 GMT</pubDate>
		</item>
		<item>
			<title>New Cartweaver plug-in for downloadable products</title>
			<description><![CDATA[<p>I created a new plugin for Cartweaver for building a digital download store that was released yesterday. The <a href="http://www.cartweaver.com/store/detail/?id=cwPIDigitalDownload" title="Cartweaver downloadable products plug-in">Cartweaver Downloadable Products Plug-In</a> was created for Cartweaver 3 for both PHP and ColdFusion. Here is the announcement from Lawrence at <a href="http://www.cartweaver.com/">cartweaver.com</a>:</p>
<blockquote>
<p>The Cartweaver development team is pleased to announce the release of the Downloadable Products Plug-in for Cartweaver 3 CF<br />
<br />
Now you can deliver   your digital products immediately! This Cartweaver plug 
in allows your   customers to download documents, PDFs, music, photos, 
artwork, software, and   other digital products right away!<br />
<br />
- Easy to integrate with your   Cartweaver 3 CF store<br />
- Upload your digital products via the store admin<br />
- Customers can log in and download immediately after purchase<br />
- Customers can   re-download as few or as many times as you allow<br />
- Customers can update contact information<br />
- View entire order history<br />
- Print out previous   history<br />
<br />
Available now! Go to the <a href="http://www.cartweaver.com/store/plug-ins.asp" title="Cartweaver plug-ins">Products - Plug-Ins page</a> and log in for 
availability and pricing.<br />
</p>
</blockquote>]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=176</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=176</guid>
			<pubDate>Sun, 04 Nov 2007 17:55:52 GMT</pubDate>
		</item>
		<item>
			<title>PHP Class for CSV File Downloads</title>
			<description><![CDATA[<p>I dug up an old PHP class that I wrote a few years back and thought I would post it for anyone who needs CSV functionality on their site. It will work with any PHP recordset, including Cartweaver recordsets, which use my custom DB abstraction class (only for MySQL, though). The CSVFile class is simple, and can be downloaded <a href="http://www.tom-muck.com/downloads/csvfile.zip">here</a>.</p>
<p>The class is typically used on a page by itself, or on any page within conditional statements. You link to the page and the file download begins. The class constructor has 3 arguments:</p>
<p class="code">$csvfile = new CSVFile(recordsetName, [quotes true or false], [filename]);</p>
<p>The first is the MySQL recordset. The second optional argument is true or false to put quotes around the fields. The third optional argument is the filename, which defaults to Download.csv by default.</p>
<p>To use it, follow these instructions:</p>
<p>1. If this is a Cartweaver recordset, make sure you include the application.php file at the top of the page:</p>
<p class="code">require_once(&quot;application.php&quot;);</p>
<p>2. Include the class file:</p>
<p class="code">require_once(&quot;yourclassdirectory/CSVFile.php&quot;);</p>
<p>3. Create your recordset. Below is a typical Dreamweaver recordset, using the Northwind database that you can download <a href="http://www.tom-muck.com/downloads/northwindmysql.zip">here</a> for MySQL if you don't have it:</p>
<p class="code">mysql_select_db($database_connNorthwind, $connNorthwind);<br />
  $query_rs = &quot;SELECT p.ProductID, p.ProductName, p.UnitPrice FROM products p ORDER BY p.ProductID&quot;;<br />
  $rs = mysql_query($query_limit_rs, $connNorthwind) or die(mysql_error());<br /></p>
<p>For Cartweaver, a typical recordset might look like this:</p>
<p class="code">  $query_rs = &quot;SELECT * FROM tbl_orders ORDER BY order_Date&quot;;<br />
  $rs = $cartweaver-&gt;db-&gt;executeQuery($query_rs, &quot;rs&quot;);<br />
</p>
<p>4. Add a line to invoke the CSVFile class:</p>
<p class="code">$csvfile = new CSVFile($rs, true);</p>
<p>5. Link to the file. </p>
<p>Now, when the page is browsed, the file download will begin immediately.</p>
]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=173</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=173</guid>
			<pubDate>Sat, 13 Oct 2007 15:18:02 GMT</pubDate>
		</item>
		<item>
			<title>New e-commerce blog</title>
			<description><![CDATA[<p><a href="http://www.cartweaver.com/" title="Cartweaver - e-commerce, Lawrence Cramer">Lawrence Cramer</a> has created a <a href="http://blog.cartweaver.com/" title="e-commerce blog, Cartweaver">new blog</a> for all things related to e-commerce and Cartweaver. I'll be posting over there as well, when I find time, to add to the Cartweaver, PHP, ColdFusion, and e-commerce knowledge base. The address is <a href="http://blog.cartweaver.com/" title="e-commerce blog, Cartweaver">http://blog.cartweaver.com</a>.  We implemented my blog software, which also runs this site and <a href="http://www.communitymx.com/blog/" title="Community MX blog">CMXTraneous</a>.</p>]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=168</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=168</guid>
			<pubDate>Tue, 21 Aug 2007 12:41:20 GMT</pubDate>
		</item>
		<item>
			<title>SQL hacking on the web</title>
			<description><![CDATA[<p>There has been a new rash of SQL injection attacks originating from the far east and other places using the following types of attacks:</p>
<blockquote>
  <p>somevariable=1%20and%201=convert(int,(select%20top%201%20username%20from%20adminusers))</p>
</blockquote>
<p> or</p>
<blockquote>
  <p> somevariable=1%20and%201=convert(int,(select%20top%201%20char(97)%2bpassword%20from%20adminusers))</p>
</blockquote>
<p>or an attack specific to SQL Server:</p>
<blockquote>
  <p> somevariable=convert(int,(select top 1 table_name from information_schema.tables))--sp_password<br />
  </p>
  <p>somevariable=convert(int,(select top 1 table_name from information_schema.tables where table_name not in (dtproperties)))--sp_password<br />
  </p>
  <p>somevariable=convert(int,(select top 1 table_name from information_schema.tables where table_name not in (dtproperties,sysconstraints)))--sp_password<br />
  </p>
  <p>somevariable=convert(int,(select top 1 table_name from information_schema.tables where table_name not in (dtproperties,sysconstraints,syssegments)))--sp_password<br />
  </p>
  <p>somevariable=convert(int,(select top 1 table_name from information_schema.tables where table_name not in (dtproperties,sysconstraints,syssegments)))--sp_password</p>
</blockquote>
<p>The first problem was an exploit of the user's default error handling page -- if no error handling is in place, the error message might contain the username, password, or other information:</p>
<blockquote>
  <p>Error Executing Database Query. [Macromedia][SQLServer JDBC   Driver][SQLServer]Syntax error converting the varchar value 'yourpassword' to a   column of data type int. &lt;br&gt;The error occurred on line 102. </p>
</blockquote>
<p>In the real attack, the user password was shown on the page. The password was prefaced with the letter &quot;A&quot; -- the char(97) in the attack. This is in case the password started with a number. This can be prevented by using &lt;cfqueryparam&gt; or other device specific to your programming language to make sure integer values are passed as integers. </p>
<p>The second problem is that the default web database user has access to tables that should never be accessible to the web. The  malicious user was able to obtain table information from<strong> information_schema.tables</strong>, and work from there, systematically building each time on information that was previously obtained. </p>
<p>The best possible scenario is to turn off all table access to the web and only access data through stored procedures. That is not always possible. At the very minimum, only expose the data necessary for the site, and only allow access to statements that are required for operation of the site. For example, if you have a table called &quot;Payments&quot;, and this is only available to admins, create two SQL username/password logins and use one for the publicly accessed site and one for the admin section. Turn off all permissions to the &quot;Payments&quot; table for the web user. Create &quot;SELECT&quot; permissions only on tables that only need to have data displayed.</p>
<p>As a DBA (which you are if you have a web site with a database and you are the person responsible for the database), you need to know how to secure your data. That involves setting up specific database users for specific access. If a web host gives you a dbo user for a specific database, <strong>do not under any circumstance use this username for your web site</strong>. This user can be used to create web user logins with specific access. MySQL has similar security features. Access users are out of luck.</p>
<p>The other key is never displaying error messages to users. Make sure your error handling page only shows a pretty message to the user with no information in it, like &quot;You've created an error. Go back and try again.&quot; Or prettier than that.</p>
<p>And don't use words or letters for username/password combinations. Passwords should be 10 characters or more, and contain letters, numbers, and special characters. Brute force password guessing programs can figure out a password quickly if you use English language words or just letters.<br />
</p>
<p> I'm getting these attacks on my site too. It's scary sometimes having a web site, but hopefully there are safety measures in place to keep these parasites out.</p>
]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=167</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=167</guid>
			<pubDate>Wed, 08 Aug 2007 00:32:00 GMT</pubDate>
		</item>
		<item>
			<title>Last day for special pricing</title>
			<description><![CDATA[<p>The special pricing offer on Cartweaver ends tomorrow. Cartweaver is available in PHP, ColdFusion, and ASP versions for $250 currently. After tomorrow, it goes up to $295 -- still a bargain. :-). Also, upgrades are currently $100 and go up to $150 after tomorrow. </p>
<p>I'll be at both <a href="http://www.todcon.org/">TODCON</a> and <a href="http://www.cfunited.com">CFUnited</a> this year, so if anyone wants to see a demo of CW, see me.</p>
<p><a href="http://www.cartweaver.com/">www.cartweaver.com</a></p>
<p><strong>Correction:</strong> Pricing for upgrades is $100 until the end of May. More time available. The full price of $295 is now in effect for new users</p>]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=158</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=158</guid>
			<pubDate>Mon, 14 May 2007 12:42:45 GMT</pubDate>
		</item>
		<item>
			<title>Cartweaver 3 released</title>
			<description><![CDATA[<p>After many months of late nights and long weekends, Cartweaver 3 is finally here, released in the wee hours of last night/this morning. I was lead programmer on the PHP version of Cartweaver 2 and maintained those responsibilites for Cartweaver 3 as well. In addition, fairly late in the process I took over the ColdFusion version for CW3. The latest version of CW has a few of the most requested features, including discounts and a greatly expanded tax system, which handles VAT and other types of tax. Also, scripts are available to allow you to update a Cartweaver 2 database to Cartweaver 3. It has built-in horizontal looping, and a new configuration system designed by Dan Short that makes it easy to maintain configuration settings from the Admin, and also easy for the programmer to add new settings.</p>
<p>There are many companies out there with shopping cart software, and some have come and gone. I'm sure many of them are great products, too. One thing about me that you might know if you've purchased extensions from this site is that I try to stand behind my code. I came to Cartweaver after version 2 had already been out, and translated the complete existing cart to PHP. I have complete ownership of the PHP code for Cartweaver, having translated or written every line of code in the product, and 
	complete ownership of support for that product. For me,  a 
	product is like a child. You might send them off when they grow up, but 
you are always there for them. Now I have ownership of the CF code as well. Although I didn't write most of it, I am imtimately familiar with it. It's another of my children. Some of the larger companies that sell cart software stand behind their products, but you never really know who wrote what, or who to contact regarding problems. To me, writing code for a large project like this is like writing a novel or giving birth. This one was a douzy. I probably should have gotten the epidural.</p>
<p>See Cartweaver 3 in action at <a href="http://www.cartweaver.com/demos/">http://www.cartweaver.com/demos/</a>. Existing CW 2 customers get the current upgrade price of $100. If you purchased within the last 60 days, the upgrade is free. To get your free upgrade, go to the Cartweaver site and add the product to your cart. After you login, the purchase price will be reduced to $0.00 so that you can add the product to your purchases and download it. Address any purchase questions to the support site at <a href="http://support.cartweaver.com/">http://support.cartweaver.com/</a>.</p>
<p>To purchase, go to <a href="http://www.cartweaver.com/">http://www.cartweaver.com/</a></p>
<p>In the coming weeks and months I hope to have some articles and add-ons for Cartweaver 3.</p>]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=156</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=156</guid>
			<pubDate>Thu, 26 Apr 2007 00:43:51 GMT</pubDate>
		</item>
		<item>
			<title>Installing and upgrading extensions using the Extension Manager</title>
			<description><![CDATA[<p>Due to the many problems with the most recent versions of the Extension Manager, I posted an article today to help users understand the process of installing extensions -- especially the numerous problems that occur when you have two versions of Dreamweaver on your system. Also in the article are solutions to a few common problems with the installation of extensions. Hopefully it will 
help a few users who have problems:
<a href="http://www.tom-muck.com/articles/ProperCareAndFeedingOfTheExtensionManager/">http://www.tom-muck.com/articles/ProperCareAndFeedingOfTheExtensionManager/</a>
</p>]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=153</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=153</guid>
			<pubDate>Thu, 22 Mar 2007 12:44:13 GMT</pubDate>
		</item>
		<item>
			<title>Customer Account add-on for Cartweaver</title>
			<description><![CDATA[<p>The Cartweaver team released a <a href="http://www.cartweaver.com/store/detail/default.asp?id=cwPICustAcct">Customer Account add-on</a> for Cartweaver for PHP, ColdFusion, and ASP this week. This has been a much-requested add-on, so hopefully it will meet user's needs. From the announcement: </p>
<blockquote>
  <p>Your customers will be able to log in to their account to view their contact 
    information and update it if necessary. They will be able to view their 
    current order to check order status and the shipping tracking number - if it 
    was entered. They will also be able to view their entire order history and 
    will be able to print out a copy of their order invoices if they   wish.</p>
  <p> This Plug-In gives your customers more control over their account.   It helps 
    develop a closer relationship with customers by allowing them to be   involved 
    and feel more in control.&nbsp; They can be assured that their account 
    information is correct and see what's going on with their orders.</p>
</blockquote>
<p>For more information, go to <a href="http://www.cartweaver.com/store/detail/default.asp?id=cwPICustAcct">http://www.cartweaver.com/store/detail/default.asp?id=cwPICustAcct</a>.</p>
<p>The latest update to <a href="http://www.cartweaver.com/go/php">Cartweaver PHP</a> was released a few weeks ago which fixed a few minor bugs. In addition, I created a patch to use Cartweaver PHP with SQL Server. For details, contact me at my <a href="http://www.tom-muck.com/contact.cfm">contact page</a>. If there is any interest in a patch for PostgreSQL, I will look into adding that as well. </p>
]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=136</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=136</guid>
			<pubDate>Fri, 02 Jun 2006 13:15:36 GMT</pubDate>
		</item>
		<item>
			<title>Cartweaver/Jumpstart article for Dreamweaver</title>
			<description><![CDATA[<p>I did an article for Community MX that appeared yesterday: <a href="http://www.communitymx.com/content/article.cfm?cid=F9EAC">Using JumpStarts with Cartweaver, Featuring Minneapolis</a>. It deals with using a Community MX Jumpstart (or other page design 
  templates,   for that matter) with <a href="http://www.cartweaver.com/">Cartweaver</a>, and one technique I've found 
useful. It's a   free article. Community MX Jumpstarts are pre-built page designs and are an excellent way for a non-designer like me to create web sites -- or a designer who wants a shortcut, as they are highly configurable. I think there are over a dozen available already, including the free North Pole Jumpstart, which was also the basis of the <a href="http://www.todcon.org/">TODCON</a> site. The article applies equally to the ColdFusion, ASP, or PHP versions of Cartweaver.  </p>]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=127</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=127</guid>
			<pubDate>Sat, 11 Mar 2006 00:26:56 GMT</pubDate>
		</item>
		<item>
			<title>Cartweaver released for PHP</title>
			<description><![CDATA[<p>The <a href="http://www.cartweaver.com/go/php/">PHP version of Cartweaver</a> was released today, and if I do say so myself it's a great implementation of  Cartweaver ;-). I joined the Cartweaver team  a while ago  to build the PHP version, and worked closely with the team to make it consistent with the ASP and ColdFusion versions.  Anybody who has used Cartweaver for ASP or ColdFusion knows that it is a flexible shopping cart solution, easily customizable from within Dreamweaver, or from a code editor of your choice. The e-store is implemented as both a Dreamweaver extension and as a set of PHP files that can be copied directly into a site. The database setup is easy and the store can be used right away. Check out <a href="http://www.cartweaver.com/go/php/">http://www.cartweaver.com/go/php/</a> for more details. </p>
]]></description> 
			<link>http://www.tom-muck.com/blog/index.cfm?newsid=80</link>
			<guid isPermaLink="true">http://www.tom-muck.com/blog/index.cfm?newsid=80</guid>
			<pubDate>Sun, 24 Jul 2005 20:59:23 GMT</pubDate>
		</item>
	</channel>
</rss>


