<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Richard Willars</title>
	
	<link>http://www.richardwillars.com</link>
	<description>Web Designer / Web Developer / Application Builder</description>
	<pubDate>Mon, 06 Oct 2008 11:41:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/RichardWillars" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FRichardWillars" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FRichardWillars" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FRichardWillars" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.rojo.com/add-subscription?resource=http%3A%2F%2Ffeeds.feedburner.com%2FRichardWillars" src="http://blog.rojo.com/RojoWideRed.gif">Subscribe with Rojo</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/RichardWillars" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FRichardWillars" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FRichardWillars" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FRichardWillars" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>PHP Form Processor</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/307989865/</link>
		<comments>http://www.richardwillars.com/articles/php/php-form-processor/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 12:33:36 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[form]]></category>

		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/?p=40</guid>
		<description><![CDATA[A powerful open source PHP form processor that allows for rapid development and maintainence, as well as protecting your website forms from various hacking attacks.]]></description>
			<content:encoded><![CDATA[<p>Ever since I started building websites I&#8217;ve found making forms to be time consuming, tedious and generally boring, and I&#8217;m pretty sure most web developers are in a similar situation.</p>
<p>First of all you have your HTML form, which then submits all the data to PHP to be validated etc. You have to write the validation rules for each form field in PHP, and then come up with a system of reporting errors back to the user. With large forms this can get extremely complicated!</p>
<p>Around two years ago I can across a <a href="http://simonwillison.net/2003/Jun/17/theHolyGrail/">form validator by Simon Willison</a>. This basically lets you write the entire form and it&#8217;s validation rules in the html. These rules are then read by PHP, applied to the relevant form fields and so on. It&#8217;s a very elegant solution that makes building forms much easier and faster, as well as easier to debug and maintain. I&#8217;ve been using this script for the last 2 years and have made various changes to the script along the way to suit my purposes.</p>
<p>However, the script does have it&#8217;s down-points. It uses the PHP 4 XML library which to be honest is rubbish! It causes the code to become extremely bloated and  unable to handle certain characters such as ampersands (&amp;). This means that as soon as a user enters an ampersand or a character like a dollar, the script would crash!</p>
<p>The script also only supported textfields, and didn&#8217;t provide support for radio buttons, checkboxes and select drop-down lists.</p>
<p>With all these positives and negatives in mind I&#8217;ve built my own PHP Form Processor from scratch, which I think does the job quite nicely. The script is open source and I&#8217;ve provided a tutorial on how to use it.</p>
<p>The script also protects your forms against CSRF (Cross-site request forgery) and form manipulation. Anyway, without futher ado, here is the tutorial..<span id="more-40"></span></p>
<p><strong>Requirements</strong></p>
<ul>
<li>PHP 5 with SimpleXML support</li>
<li>Session support</li>
<li>Cheese on toast</li>
</ul>
<p><strong>Demonstration</strong></p>
<p>Traditionally an XHTML form input box would look like this:</p>
<pre>&lt;input type="text" id="myBox" name="myBox" /&gt;</pre>
<p>Using my PHP form processor this would be written as:</p>
<pre>&lt;element id="myBox"&gt;
 &lt;input type="text" /&gt;
 &lt;error&gt;&lt;strong class="error"&gt;!&lt;/strong&gt;&lt;/error&gt;
 &lt;compulsory message="myBox must be filled in" /&gt;
 &lt;validate test="alpha" message="myBox must only be letters" /&gt;
&lt;/element&gt;</pre>
<p>At first glance it looks a lot more bloated than the traditional method, so lets take a look at what it&#8217;s doing and why it&#8217;s better.</p>
<p>When using the form processor all the form items are wrapped in element tags. The element tag tells the form processor that it&#8217;s a form field, and also specifies the ID. Within the element tag we define the properties and rules of the form field. In the above example we&#8217;re telling the form processor that the form field we want is a text field (&lt;input type=&#8221;text&#8221; /&gt;), as well as defining various rules to apply to the user&#8217;s input.</p>
<p>The line  &#8217;&lt;error&gt;&lt;strong class=&#8221;error&#8221;&gt;!&lt;/strong&gt;&lt;/error&gt;&#8217; defines what is displayed when a validation rule fails. In this case a bold exclamation mark would be displayed just after the text field.</p>
<p>The next few lines are the rules which we want to apply to the text field. The compulsory line states that the field must be filled in, and if it&#8217;s not present the message &#8216;myBox must be filled in&#8217; to the user. The validate line states that the user input must only be letters, and if it&#8217;s not present the message &#8216;myBox must only be letters&#8217; to the user.</p>
<p>Many rules can be applied to the form fields. They will be applied to the form field in the order that you define them (top to bottom). For example, if there are 3 rules defined for a form field and the first rule fails then the next 2 rules won&#8217;t be applied. Instead the error message for rule 1 will be shown to the user. If the 1st rule runs fine it&#8217;ll move onto the 2nd rule etc.</p>
<p>Here is a description of each of the rules available:</p>
<p><strong>Compulsory</strong></p>
<p>Checks whether the user has entered any input or not.</p>
<pre>&lt;compulsory message="This field is compulsory" /&gt;</pre>
<table border="0">
<tbody>
<tr>
<td>Textfield</td>
<td>Password</td>
<td>Textarea</td>
<td>Dropdown list</td>
<td>Checkbox</td>
<td>Radio button</td>
<td>Button</td>
</tr>
<tr>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
</tbody>
</table>
<p><strong>Validate</strong></p>
<p>Checks whether the user input matches the format specified. The format can be alpha, alphanumeric or numeric.</p>
<pre>&lt;validate test="alpha" message="email must be alpha" /&gt;</pre>
<table border="0">
<tbody>
<tr>
<td>Textfield</td>
<td>Password</td>
<td>Textarea</td>
<td>Dropdown list</td>
<td>Checkbox</td>
<td>Radio button</td>
<td>Button</td>
</tr>
<tr>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
</tbody>
</table>
<p><strong>Regular Expression</strong></p>
<p>Checks whether the user input matches the regular expression specified.</p>
<pre>&lt;regexp test="|^[a-zA-Z]*$|" message="email doesn't match the regexp" /&gt;</pre>
<table border="0">
<tbody>
<tr>
<td>Textfield</td>
<td>Password</td>
<td>Textarea</td>
<td>Dropdown list</td>
<td>Checkbox</td>
<td>Radio button</td>
<td>Button</td>
</tr>
<tr>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
</tbody>
</table>
<p><strong>Match</strong></p>
<p>Checks whether the user input matches the user input in another field. Most common usage is for confirming passwords.</p>
<pre>&lt;match element="anotherFieldID" message="this field must match another field" /&gt;</pre>
<table border="0">
<tbody>
<tr>
<td>Textfield</td>
<td>Password</td>
<td>Textarea</td>
<td>Dropdown list</td>
<td>Checkbox</td>
<td>Radio button</td>
<td>Button</td>
</tr>
<tr>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
</tbody>
</table>
<p><strong>Callback</strong></p>
<p>Takes the user input and passes it to a PHP function of your choice. The function should take one parameter as a string (the user input), and return Boolean true or false. If the function returns false the error message will be presented to the user.</p>
<p>An unlimited number of callbacks can be defined for each form field - just place them one after another.</p>
<pre>&lt;callback function="functionname" message="callback 1 failed" /&gt;</pre>
<table border="0">
<tbody>
<tr>
<td>Textfield</td>
<td>Password</td>
<td>Textarea</td>
<td>Dropdown list</td>
<td>Checkbox</td>
<td>Radio button</td>
<td>Button</td>
</tr>
<tr>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p><strong>Summary &amp; goodies!</strong></p>
<p><strong></strong>The entire form and it&#8217;s rules are read in by PHP, which then goes through the form and extracts the rules. It then cleans up the form and produces strict XHTML which it outputs to the user. This means they never see the rules and just see standard XHTML markup.</p>
<p>It&#8217;s a difficult concept and you might be a bit confused at this point, so it&#8217;s probably best just to give you a working example. Here is a simple form which tests some of the functionality available (complete with source-code).</p>
<p><strong><a href="http://www.richardwillars.com/demos/40/" target="_blank">View example form</a><br />
<a href="http://www.richardwillars.com/demos/40/formprocessor.zip" target="_blank">Download the form processor (version 1.04 - 06/10/2008)</a></strong></p>
<p>As always I&#8217;d love to hear from you, so any thoughts, comments, bugs etc, please post! I&#8217;d also like to see examples of where people have used it, so feel free to drop me links!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=n8VBvI"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=n8VBvI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=LuLxsi"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=LuLxsi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=21lJQi"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=21lJQi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=xBpUMI"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=xBpUMI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=TrDyfi"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=TrDyfi" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/articles/php/php-form-processor/feed/</wfw:commentRss>
		<enclosure url="http://www.richardwillars.com/demos/40/formprocessor.zip" length="7017" type="application/zip" /><feedburner:origLink>http://www.richardwillars.com/articles/php/php-form-processor/</feedburner:origLink></item>
		<item>
		<title>It’s not often i’m blown away..</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/304776639/</link>
		<comments>http://www.richardwillars.com/blog/general/its-not-often-im-blown-away/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 20:20:06 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[analytics]]></category>

		<category><![CDATA[woopra]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/?p=39</guid>
		<description><![CDATA[My discovery of Woopra and a few details on what it can do.]]></description>
			<content:encoded><![CDATA[<p>&#8230;but I was today. Fellow web developer <a href="http://www.gavin-holt.com">Gavin Holt</a> pointed out a new website analytics tool called <a href="http://www.woopra.com">Woopra</a>. I took a look at the website not expecting to be impressed, but then I watched a few videos demoing it and I just had to give it a go.</p>
<p>Two hours later my Woopra account was activated, and I&#8217;ve now got rid of Google Analytics and replaced it with Woopra. I can honestly say that after 5 minutes of using it it beats Google Analytics hands down in almost every aspect. The fact that I can see visitors as they appear on my site in real time, and then talk to them and watch the route they take through my site is frankly phenomenal. Google Analytics took 24 hours to update.. long after my visitors had been and gone.</p>
<p>My only concern is that people might get a bit privacy conscious if I suddenly start talking to them, and asking them if they&#8217;re liking the current the page they&#8217;re on! Do you see this in a different light? Would you be shocked if this happened to you?</p>
<p>The only flaw i&#8217;ve spotted so far is the pop-up chat is a bit unfriendly to initiate, but that would be an easy enough problem to rectify.</p>
<p>I&#8217;d recommend that anyone who has a website gives Woopra ago, just to experience the power! If you&#8217;re reading this post on my site watch out, I might just demo the power of Woopra to you <img src='http://www.richardwillars.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Let me know how you get on, and what you think it!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=ZwjCFI"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=ZwjCFI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=Y1Qqyi"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=Y1Qqyi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=g3boji"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=g3boji" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=SnEAyI"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=SnEAyI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=FXz7mi"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=FXz7mi" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/blog/general/its-not-often-im-blown-away/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/blog/general/its-not-often-im-blown-away/</feedburner:origLink></item>
		<item>
		<title>We love WordPress!</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/269152943/</link>
		<comments>http://www.richardwillars.com/blog/general/we-love-wordpress/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 22:14:16 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/?p=38</guid>
		<description><![CDATA[It&#8217;s always nice to get  recognition for your work, and I definitely received some today when my website was featured on We Love WP, a site that showcases aesthetically pleasing WordPress sites.  I&#8217;m not sure how popular the We Love WP site is, but it&#8217;ll be interesting to look at my traffic statistics tomorrow to see exactly how many users have visited [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s always nice to get  recognition for your work, and I definitely received some today when my website was featured on <a href="http://www.welovewp.com/">We Love WP</a>, a site that showcases aesthetically pleasing WordPress sites.  I&#8217;m not sure how popular the We Love WP site is, but it&#8217;ll be interesting to look at my traffic statistics tomorrow to see exactly how many users have visited my website.</p>
<p>If anyone can recommend any popular and respected website showcase sites, I&#8217;d love to hear from you. Or if you&#8217;re feeling in a really good mood and want to submit my website yourself, please feel free to!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=Weeuw1G"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=Weeuw1G" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=jWwINzg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=jWwINzg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=ssjNdwg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=ssjNdwg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=TZR2UrG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=TZR2UrG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=A6vxvOg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=A6vxvOg" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/blog/general/we-love-wordpress/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/blog/general/we-love-wordpress/</feedburner:origLink></item>
		<item>
		<title>Willesley Online</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/269152944/</link>
		<comments>http://www.richardwillars.com/my-work/willesley-online/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 14:25:31 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[My Work]]></category>

		<category><![CDATA[application]]></category>

		<category><![CDATA[build]]></category>

		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/?p=37</guid>
		<description><![CDATA[Client: Ashby &#38; Coalville District Scouts
Project: http://www.willesley.org
I&#8217;ve been the  Web Developer for Ashby &#38; Coalville District Scouts for a few years now, and the website was due for a revamp, as well requiring a sophisticated backend to handle the administration of Willesley Campsite. The site features information on the district, the campsite, hosts mini [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Client:</strong> Ashby &amp; Coalville District Scouts</p>
<p><strong>Project:</strong> <a href="http://www.willesley.org/">http://www.willesley.org</a></p>
<p>I&#8217;ve been the  Web Developer for Ashby &amp; Coalville District Scouts for a few years now, and the website was due for a revamp, as well requiring a sophisticated backend to handle the administration of Willesley Campsite. The site features information on the district, the campsite, hosts mini websites for each group/unit in the district, as well as an entire booking system for the campsite.</p>
<p>This project took several months to complete, mainly due to the vastness and requirements of the campsite administration system. I did this project for free as a way of saying thank you for my years in Scouting and how it has improved my life.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=fuoCOgG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=fuoCOgG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=MKuyR0g"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=MKuyR0g" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=GHHFVpg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=GHHFVpg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=Nk5w5FG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=Nk5w5FG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=i0VyaYg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=i0VyaYg" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/my-work/willesley-online/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/my-work/willesley-online/</feedburner:origLink></item>
		<item>
		<title>SE Scotland Region Scouts</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/269152945/</link>
		<comments>http://www.richardwillars.com/my-work/se-scotland-region-scouts/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 14:11:55 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[My Work]]></category>

		<category><![CDATA[build]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/?p=36</guid>
		<description><![CDATA[Client: South East Scotland Region Scouts
Project: http://www.southeastscotlandscouts.org.uk
When The Scout Association reorganised their structure a few weeks ago, new websites were required for each of the regions. WebServ UK were called in to finish a half built design and convert it into a functioning Joomla template. Utilising XHTML, CSS and JavaScript technologies, the project was completed [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Client:</strong> South East Scotland Region Scouts</p>
<p><strong>Project:</strong> <a href="http://www.southeastscotlandscouts.org.uk/">http://www.southeastscotlandscouts.org.uk</a></p>
<p>When The Scout Association reorganised their structure a few weeks ago, new websites were required for each of the regions. WebServ UK were called in to finish a half built design and convert it into a functioning Joomla template. Utilising XHTML, CSS and JavaScript technologies, the project was completed within a matter of hours.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=QOe0QdG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=QOe0QdG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=QR16T7g"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=QR16T7g" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=9ZE2SQg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=9ZE2SQg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=AuwFbyG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=AuwFbyG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=ivLp4jg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=ivLp4jg" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/my-work/se-scotland-region-scouts/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/my-work/se-scotland-region-scouts/</feedburner:origLink></item>
		<item>
		<title>Escouts Route Hiker</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/269152946/</link>
		<comments>http://www.richardwillars.com/my-work/escouts-route-hiker/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 13:38:37 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[My Work]]></category>

		<category><![CDATA[application]]></category>

		<category><![CDATA[build]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[escouts]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/?p=35</guid>
		<description><![CDATA[Client: Escouts
Project: Escouts Route Hiker - A free to use website for planning and creating hikes for walkers in the UK.
Nearly five years ago I was doing the Duke of Edinburgh scheme through my school. When it came to creating the route cards for the hikes, our team got very frustrated and annoyed - if [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Client:</strong> Escouts</p>
<p><strong>Project:</strong> <a href="http://www.routehiker.org.uk">Escouts Route Hiker</a> - A free to use website for planning and creating hikes for walkers in the UK.</p>
<p>Nearly five years ago I was doing the Duke of Edinburgh scheme through my school. When it came to creating the route cards for the hikes, our team got very frustrated and annoyed - if you make a mistake you have to go back and work out all the timings again. This sometimes resulted in spending hours on filling in the paperwork.</p>
<p>To solve this problem I created an Excel Spreadsheet. This basically worked out the timings automatically, and proved to be a huge success for our Duke of Edinburgh team. I had been part of the Escouts community for nearly a year at this point, and realised that others could benefit from using my spreadsheet. For this reason, I decided to make a small website with the same principle as the spreadsheet. With a huge amount of participation and ideas from the Escouts Community over the course of a year, the website went live, and has consistently grown in it&#8217;s usage over the last year. With 1039 users to date and <a href="http://www.routehiker.org.uk/refer.php">no marketing done</a> by myself, this project appears to have huge potential. For this reason I decided to turn the project into a company called &#8216;RouteHiker&#8217;, which will hopefully go live later this year.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=VdC4uFG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=VdC4uFG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=YGxD3dg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=YGxD3dg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=3FR8izg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=3FR8izg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=cYz5iMG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=cYz5iMG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=jr2tP5g"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=jr2tP5g" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/my-work/escouts-route-hiker/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/my-work/escouts-route-hiker/</feedburner:origLink></item>
		<item>
		<title>RouteHiker (Exhibition)</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/269152947/</link>
		<comments>http://www.richardwillars.com/my-work/routehiker-exhibition/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 11:50:25 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[My Work]]></category>

		<category><![CDATA[print]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/?p=33</guid>
		<description><![CDATA[Client: RouteHiker - My own company
Project: Posters suitable for exhibitions
In late 2007 I exhibited my company &#8216;RouteHiker&#8217; at the Festival of Innovation, based at the NEC in Birmingham. To make my  company stand out I enlisted the help of Liam Howley, a digital artist who I lived with in my first year at university. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Client:</strong> RouteHiker - My own company</p>
<p><strong>Project:</strong> Posters suitable for exhibitions</p>
<p>In late 2007 I exhibited my company &#8216;RouteHiker&#8217; at the Festival of Innovation, based at the NEC in Birmingham. To make my  company stand out I enlisted the help of Liam Howley, a digital artist who I lived with in my first year at university. Liam is an extremely talented artist whose Photoshop skills never cease to amaze me.</p>
<p>Although the following isn&#8217;t my work, I thought it was so good I&#8217;d put it here for everyone to see. Liam produced 4 printable items - 1xA3 poster and 3xA4 posters, all of which work extremely well together and portray a powerful brand image.</p>
<p><img src="http://www.richardwillars.com/wp-content/uploads/2008/04/routeposters.jpg" alt="RouteHiker Posters" width="500" height="400" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=mGEG1DG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=mGEG1DG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=H77sRGg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=H77sRGg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=VDEa3Mg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=VDEa3Mg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=SgM7REG"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=SgM7REG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=G95YBKg"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=G95YBKg" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/my-work/routehiker-exhibition/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/my-work/routehiker-exhibition/</feedburner:origLink></item>
		<item>
		<title>Niran7</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/269152948/</link>
		<comments>http://www.richardwillars.com/my-work/niran7/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 00:31:00 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[My Work]]></category>

		<category><![CDATA[build]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/my-work/niran7/</guid>
		<description><![CDATA[Client: Niran Vinod - a talented graphic designer from London, UK.
Project: www.niran7.com
As a favour I turned my good friend Niran&#8217;s  website design  into a fully working site.
The site is powered by Wordpress, with the site design running on a custom made theme. Niran supplied the Photoshop design of the site, and I converted this into a fully functioning [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Client:</strong> Niran Vinod - a talented graphic designer from London, UK.</p>
<p><strong>Project:</strong> <a HREF="http://www.niran7.com">www.niran7.com</a></p>
<p>As a favour I turned my good friend Niran&#8217;s  website design  into a fully working site.<span id="more-32"></span></p>
<p>The site is powered by Wordpress, with the site design running on a custom made theme. Niran supplied the Photoshop design of the site, and I converted this into a fully functioning site. The website also features some custom PHP such as the &#8216;Latest Work&#8217; image on the homepage, which automatically reflects the latest work Niran has submitted to the site.</p>
<p>As always, it was a  pleasure to work with Niran, and gave some pleasing results. A fantastic site to show off Niran&#8217;s skill-set, and is definetely worth taking a look at!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=Bp1zWCF"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=Bp1zWCF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=vVu4pef"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=vVu4pef" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=4u21m4f"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=4u21m4f" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=HqgnvOF"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=HqgnvOF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=4MlVGaf"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=4MlVGaf" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/my-work/niran7/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/my-work/niran7/</feedburner:origLink></item>
		<item>
		<title>It’s like the smell of a new car..</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/269152949/</link>
		<comments>http://www.richardwillars.com/blog/general/its-like-the-smell-of-a-new-car/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 20:32:48 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[car]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[new]]></category>

		<category><![CDATA[professional]]></category>

		<category><![CDATA[site]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/blog/general/its-like-the-smell-of-a-new-car/</guid>
		<description><![CDATA[Well not quite, but I do have a new site design! As most web designers seem to do, I began to hate my old design, so decided to revamp it! Hopefully the new site is cleaner, more elegant and professional. I hope you like it - the feedback I&#8217;ve had back so far has been [...]]]></description>
			<content:encoded><![CDATA[<p>Well not quite, but I do have a new site design! As most web designers seem to do, I began to hate my old design, so decided to revamp it! Hopefully the new site is cleaner, more elegant and professional. I hope you like it - the feedback I&#8217;ve had back so far has been fantastic.</p>
<p>Please let me know your thoughts, criticisms etc - a site is never perfect and can always be improved!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=75O8QIE"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=75O8QIE" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=52Hmu8e"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=52Hmu8e" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=97izCje"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=97izCje" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=H6pW2tE"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=H6pW2tE" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=lTrXMce"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=lTrXMce" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/blog/general/its-like-the-smell-of-a-new-car/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/blog/general/its-like-the-smell-of-a-new-car/</feedburner:origLink></item>
		<item>
		<title>Storing sessions in the database</title>
		<link>http://feeds.feedburner.com/~r/RichardWillars/~3/269152950/</link>
		<comments>http://www.richardwillars.com/articles/php/storing-sessions-in-the-database/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 17:27:27 +0000</pubDate>
		<dc:creator>Richard Willars</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[session]]></category>

		<category><![CDATA[sessions]]></category>

		<guid isPermaLink="false">http://www.richardwillars.com/articles/php/storing-sessions-in-the-database/</guid>
		<description><![CDATA[Using Sessions in PHP can be extremely useful, and is almost a requirement when making dynamic web applications. However, sessions do have drawbacks, and one of these is security. When a session is created, it gets written to a file on the server. If the server you are using has other hosting accounts, they will [...]]]></description>
			<content:encoded><![CDATA[<p>Using Sessions in PHP can be extremely useful, and is almost a requirement when making dynamic web applications. However, sessions do have drawbacks, and one of these is security. When a session is created, it gets written to a file on the server. If the server you are using has other hosting accounts, they will also be using the same directory as your session files. If you&#8217;re storing any personal information about your website visitors, you have quite a serious problem.</p>
<p>For this reason, I would strongly suggest storing your sessions in a database. This tightens security considerably, and also allows for a wealth of new possibilities, such as running SQL queries on the database to see how many users are logged in. It is also the only logical solution if you are using multiple servers that need to access the same user sessions.</p>
<p><span id="more-26"></span>It&#8217;s quite simple to make the change to storing sessions in the database, and all you need for the following example is PHP 5 and MySQL.</p>
<p>First of all you will need to include the following PHP code in every page on your website that needs database or session access. It should be the very first thing included on every page.</p>
<p><a HREF="http://www.richardwillars.com/wp-content/uploads/2008/02/sessions_database.inc.txt" TITLE="sessions_database.inc.txt">sessions_database.inc.txt</a></p>
<p>Don&#8217;t forget to change your database details!</p>
<p>Secondly, you will need the following at the bottom of each page:</p>
<pre>
//You must call the following at the bottom of every page that uses sessions
session_write_close();</pre>
<p>The last thing you need to do is to create the database table to store the sessions. Here is the SQL to do so for a MySQL database:</p>
<pre>
CREATE TABLE `sessions` (
  `id` char(32) NOT NULL,
  `data` longtext NOT NULL,
  `last_accessed` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/RichardWillars?a=BIhWnoE"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=BIhWnoE" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=7t0RdQe"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=7t0RdQe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=FQSo0pe"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=FQSo0pe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=p390okE"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=p390okE" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/RichardWillars?a=SqQVU5e"><img src="http://feeds.feedburner.com/~f/RichardWillars?i=SqQVU5e" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.richardwillars.com/articles/php/storing-sessions-in-the-database/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.richardwillars.com/articles/php/storing-sessions-in-the-database/</feedburner:origLink></item>
	</channel>
</rss>
