<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5473769531249768713</id><updated>2010-02-12T14:53:13.639Z</updated><title type='text'>WebMe Website Design &amp; Development</title><subtitle type='html'>The blog of WebMe website design &amp; development. Features web code, tips and tricks and commentary on web development.</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/webme-web-design-blog.html'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.webme.co.uk'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-4288143221871556890</id><published>2010-02-12T14:48:00.002Z</published><updated>2010-02-12T14:53:13.803Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='general info'/><category scheme='http://www.blogger.com/atom/ns#' term='choosing'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>What does Unlimited hosting mean at WebMe?</title><content type='html'>&lt;p&gt;A lot of web hosting companies, including ourselves, make bold claims about offering unlimited web hosting features such as unlimited web space, unlimited bandwidth, unlimited databases etc. We see a lot of discussion on forums about what this actually means and questioning how anything can really be unlimited when no one (not even Google or Microsoft) can have an unlimited number of servers to draw power from.&lt;/p&gt;
&lt;p&gt;What we mean by unlimited is that we have so many resources at our disposal and we have invested so much money in to our infrastructure that our customers never have to worry about hitting a limit because the allowance available is so large it won't ever be stretched to breaking point.&lt;/p&gt;
&lt;p&gt;Unlike other web hosts our business model is not based around running servers at capacity to wring every last cent out of the bottom line. Why? Because this ignores the unpredictable nature of internet usage. If one customer has a sudden and dramatic spike in traffic it could bring the entire shared server down, affecting hundreds of other customers. We just don't think it's worth the risk.&lt;/p&gt;
&lt;p&gt;With this in mind, we build in extra capacity in to a server and don't allow any server to get even near maximum capacity so that no customer can drain a server's performance levels. The same goes for bandwidth, database servers and mail servers.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-4288143221871556890?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/4288143221871556890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=4288143221871556890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4288143221871556890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4288143221871556890'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2010/02/what-does-unlimited-hosting-mean-at.html' title='What does Unlimited hosting mean at WebMe?'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-3661828538838138903</id><published>2010-02-02T19:21:00.002Z</published><updated>2010-02-02T19:26:24.214Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='web browser'/><title type='text'>Pressure mounts to abandon IE6</title><content type='html'>There is currently a No10 petition demanding that the Government move their departments away from using the outdated Internet Explorer 6 web browser.&lt;br /&gt;
The browser is almost 10 years old and has numerous security flaws and fails to render web pages properly which is a real burden for web developers who still have to support the browser to maintain backward compatibility.&lt;br /&gt;
The No10 petition can be found &lt;a href="http://petitions.number10.gov.uk/ie6upgrade/" target="_blank"&gt;here&lt;/a&gt; and it is advised that anyone with an interest in the Internet or security of our valuable data sign it to try and bring things up to date in this Country.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-3661828538838138903?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/3661828538838138903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=3661828538838138903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/3661828538838138903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/3661828538838138903'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2010/02/pressure-mounts-to-abandon-ie6.html' title='Pressure mounts to abandon IE6'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-4491542196717635254</id><published>2009-12-19T10:17:00.003Z</published><updated>2009-12-19T10:31:14.565Z</updated><title type='text'>Shopping websites 'could be breaking law'</title><content type='html'>&lt;p&gt;Which? claims thousands of internet retailers may be breaking laws that protect customers.&lt;br /&gt;
It said too many online sites were ignoring the rules.&lt;/p&gt;

&lt;p&gt;Which? is warning retailers to make sure they comply with what are known as the Distance Selling regulations - such as tie to return sold goods.&lt;/p&gt;

&lt;p&gt;If you are running an online retail business it is vital that you are aware of the laws that you are bound by.&lt;/p&gt;

&lt;p&gt;In general you are required to:&lt;/p&gt;     &lt;ul&gt;&lt;li&gt;give potential customers certain information in advance, such as your name and address, the goods you are selling or the services you are providing, the price (including all taxes), delivery cost, delivery arrangements, and customers' right to cancel&lt;/li&gt;&lt;li&gt;send customers an order confirmation giving information such as your postal address and cancellation arrangements&lt;/li&gt;&lt;li&gt;allow customers a seven working day cooling off period during which they can cancel their contract with you. &lt;/li&gt;&lt;/ul&gt;The final point above is where most retailers slip-up.
&lt;p&gt;Customers have seven working days, from receiving the goods, in which to cancel the order. &lt;/p&gt;&lt;p&gt;They then have a reasonable amount of time to return them. &lt;/p&gt;&lt;p&gt;Providing cancellation was within that period, consumers are entitled to a full refund. &lt;/p&gt;&lt;p&gt;That means no site should charge an administration or re-stocking fee, unless the purchase was cancelled outside the seven-day period. &lt;/p&gt;&lt;p&gt;Retailers are also bound to refund any postage and packing fee on the original delivery. &lt;/p&gt;&lt;p&gt;However, depending on the conditions, the retailer may not be liable for the costs of sending the goods back. &lt;/p&gt;
&lt;p&gt;Full information can be found at the &lt;a href="http://oft.gov.uk/advice_and_resources/small_businesses/distance-selling/" target="_blank"&gt;Office of Fair Trading&lt;/a&gt; website.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-4491542196717635254?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/4491542196717635254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=4491542196717635254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4491542196717635254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4491542196717635254'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/12/shopping-websites-could-be-breaking-law.html' title='Shopping websites &apos;could be breaking law&apos;'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-67043290107480269</id><published>2009-12-08T14:38:00.002Z</published><updated>2009-12-08T14:42:05.360Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='designer'/><category scheme='http://www.blogger.com/atom/ns#' term='website design'/><title type='text'>How a Web Design Goes Straight to Hell</title><content type='html'>It's good to get a little light relief sometimes and something that really tickled us in the office this week is the following: &lt;a href="http://theoatmeal.com/comics/design_hell" target="" _blank=""&gt;http://theoatmeal.com/comics/design_hell&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We give all of our customers the ability to change the content of their site using our free Content Management System but it is best to try and maintain some consistency within the site if you can restrain yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-67043290107480269?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/67043290107480269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=67043290107480269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/67043290107480269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/67043290107480269'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/12/how-web-design-goes-straight-to-hell.html' title='How a Web Design Goes Straight to Hell'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-3952909634266515091</id><published>2009-11-30T15:51:00.004Z</published><updated>2009-11-30T16:01:37.235Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>How to add days, weeks, months to any date in PHP</title><content type='html'>&lt;p&gt;How to add days, weeks, months to any date in PHP&lt;/p&gt;
&lt;blockquote&gt;
$date = date("Y-m-d");// current date&lt;br /&gt;&lt;br /&gt;

$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 day");&lt;br /&gt;
$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 week");&lt;br /&gt;
$date = strtotime(date("Y-m-d", strtotime($date)) . " +2 week");&lt;br /&gt;
$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 month");&lt;br /&gt;
$date = strtotime(date("Y-m-d", strtotime($date)) . " +30 days");
&lt;/blockquote&gt;
&lt;p&gt;To subtract just use - instead of +.&lt;/p&gt;
&lt;p&gt;In PHP&gt;=5.3.0 you can use the &lt;a href="http://uk3.php.net/manual/en/class.datetime.php" target="_blank"&gt;DateTime&lt;/a&gt; functions.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-3952909634266515091?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/3952909634266515091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=3952909634266515091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/3952909634266515091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/3952909634266515091'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/11/how-to-add-days-weeks-months-to-any.html' title='How to add days, weeks, months to any date in PHP'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-4438913344782458130</id><published>2009-10-30T10:17:00.004Z</published><updated>2009-10-30T10:25:56.055Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='general info'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Keeping your PC safe</title><content type='html'>In this day and age it is vitally important that you keep your PC secure and safe.
Fortunately this can be accomplished without cost.&lt;br /&gt;
Here are three tools that will help keep your PC safe and secure for free:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://free.avg.com/" target="_blank"&gt;AVG Free Virus software&lt;/a&gt; - Free anti virus software from firm AVG. This is a great piece of software with on-access file scanning, email scanning and web site scanning - informing you of potentially dangerous websites with an icon in search results.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.safer-networking.org/" target="_blank"&gt;Spybot Search &amp;amp; Destroy &lt;/a&gt;- A spyware scanner and also a dangerous website blocker. It can automatically prevent bad cookies and images using it's built in Immunisation functionality. You can also use it to prevent system settings being changed without your knowledge.&lt;/li&gt;&lt;li&gt;Windows Firewall - Does the job it's supposed to and comes for free with Windows.&lt;/li&gt;&lt;/ul&gt;Just make sure you keep these products up to date once you have installed them and you should have many trouble free years using the internet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-4438913344782458130?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/4438913344782458130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=4438913344782458130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4438913344782458130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4438913344782458130'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/10/keeping-your-pc-safe.html' title='Keeping your PC safe'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-2047993966850847396</id><published>2009-10-14T10:04:00.002+01:00</published><updated>2009-10-14T10:21:52.930+01:00</updated><title type='text'>Internet Watch Foundation Awareness Day</title><content type='html'>&lt;p&gt;&lt;img src="http://www.webme.co.uk/images/blog/iwf_logo_print.gif" align="right" alt="" /&gt;Today is Internet Watch Foundation Awareness Day.&lt;/p&gt;

&lt;p&gt;The Internet Watch Foundation (IWF) was established in 1996 by the UK internet industry to provide the UK internet Hotline for the public and IT professionals to report potentially illegal online content within our remit and to be the 'notice and take-down' body for this content. We work in partnership with the online industry, law enforcement, government, the education sector, charities, international partners and the public to minimise the availability of this content, specifically, child sexual abuse content hosted anywhere in the world and criminally obscene and incitement to racial hatred content hosted in the UK.&lt;/p&gt;

&lt;p&gt;If you see any illegal content (specifically Child sexual abuse content hosted worldwide and criminally obscene and incitement to racial hatred content hosted in the UK) on the internet then report it via their website: &lt;a href="http://www.iwf.org.uk/" target="_blank"&gt;www.iwf.org.uk&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-2047993966850847396?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/2047993966850847396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=2047993966850847396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/2047993966850847396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/2047993966850847396'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/10/internet-watch-foundation-awareness-day.html' title='Internet Watch Foundation Awareness Day'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-7723732473373953165</id><published>2009-09-29T15:57:00.004+01:00</published><updated>2009-09-29T16:08:12.654+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='designer'/><category scheme='http://www.blogger.com/atom/ns#' term='website design'/><title type='text'>How to test your website in all versions of Internet Explorer</title><content type='html'>As a web development company we completely understand and acknowledge that due to the distributed nature of the Internet and its users we cannot assume that everyone is using the latest version of their web browser.&lt;br /&gt;
A classic example of this is Internet Explorer; take up of IE7 and IE8 has been relatively slow, indeed many large organisations are still using IE6 and refuse to budge.&lt;br /&gt;
Because of this it is, sadly, important that your website still looks and works OK in an older browser; the problem is how do you install IE6, IE7 and IE8 on the same computer in order to test them?&lt;br /&gt;
Fortunately the great chaps at DebugBar have developed an all-in-one tool that enables you to do just that, enter: &lt;a href="http://www.my-debugbar.com/wiki/IETester/HomePage" target="_blank"&gt;IETester&lt;/a&gt;.&lt;br /&gt;
This handy little tool enables you to view separate browser tabs that are rendering as if they are either IE5.5, IE6, IE7 or IE8. Great for testing your website.&lt;br /&gt;&lt;br /&gt;

Another tool that gives you an idea of whether your website is looking good or bad in browsers that you simply do not have access to is &lt;a href="http://browsershots.org/" target="_blank"&gt;BrowserShots&lt;/a&gt;.&lt;br /&gt;
Simply enter the URL of your website and it will generate screen shots of your site in a whole host of different browsers and Operating Systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-7723732473373953165?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/7723732473373953165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=7723732473373953165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/7723732473373953165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/7723732473373953165'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/09/how-to-test-your-website-in-all.html' title='How to test your website in all versions of Internet Explorer'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-5565483980489229907</id><published>2009-09-24T15:56:00.003+01:00</published><updated>2009-09-29T16:10:16.622+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general info'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><title type='text'>Microsoft Exchange Server too Expensive?</title><content type='html'>If you are on a hosted mail system like Microsoft Exhange Server you may find that the costs are running away with you.&lt;br /&gt;
Fortunately there is a cheap, and just as effective, alternative: &lt;a href="http://www.google.com/apps/"&gt;Google Apps Premier&lt;/a&gt;.&lt;br /&gt;
For just $50 a year (at the time of writing) you can have all of the functionality of Exchange Server.&lt;br /&gt;
Transition is made very easy by the Google Apps Sync application, and from within your WebMe Domain Control Panel you can make all of the necessary DNS changes with just a click of a button.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-5565483980489229907?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/5565483980489229907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=5565483980489229907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/5565483980489229907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/5565483980489229907'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/09/microsoft-exchange-server-too-expensive.html' title='Microsoft Exchange Server too Expensive?'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-1022059485543407514</id><published>2009-08-21T16:32:00.004+01:00</published><updated>2009-08-21T16:45:34.831+01:00</updated><title type='text'>Access experts-exchange.com answers without registering</title><content type='html'>&lt;p&gt;We've all experienced it; you search Google for an answer to your question and there in the top couple of results is the answer!
"Oh joy" you think, someone has asked the exact question that I have asked.
You click through only to be presented with:&lt;/p&gt;

&lt;blockquote&gt;"View the Solution FREE for 30 Days - &lt;span style="font-style: italic;"&gt;after that you're gonna have to pay!&lt;/span&gt;"&lt;/blockquote&gt;

&lt;p&gt;This sort of thing is most commonly associated with a very good resource (experts-exchange.com).&lt;/p&gt;

&lt;p&gt;What they've done is allow the search engine to index the answer but they deny the browser the answer.&lt;br /&gt;
So how do you get the answer you want without registering?&lt;br /&gt;
Simple - become the search engine.&lt;br /&gt;
If you use Firefox/Flock/Seamonkey/Songbird then you can get a great extension called "User Agent Switcher" by Chris Pederick.&lt;br /&gt;
With this extension installed simply go to Tools-&gt;User Agent-&gt;Search robots-&gt;Googlebot
With this set as your User Agent you can now click on the Experts Exchange link and view the answer.&lt;/p&gt;

&lt;p&gt;Change your User Agent back to the default when you've finished.&lt;/p&gt;

&lt;p&gt;You can get User Agent switcher from here: &lt;a href="http://chrispederick.com/work/user-agent-switcher/" target="_blank"&gt;http://chrispederick.com/work/user-agent-switcher/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-1022059485543407514?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/1022059485543407514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=1022059485543407514' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/1022059485543407514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/1022059485543407514'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/08/access-experts-exchangecom-answers.html' title='Access experts-exchange.com answers without registering'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-6005561911152645465</id><published>2009-08-01T09:45:00.003+01:00</published><updated>2009-08-01T09:53:03.075+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general info'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>'Fake UK sites' trick consumers - Use FlagFox</title><content type='html'>There was an article published on the BBC news site today about the number of co.uk websites that are setup by Chinese organisations to con UK surfers into buying non-existant goods.
The Beeb suggest a few things to prevent the unwary surfer from being caught out by these sites:
They advised people to reduce the risks of being duped by: &lt;ul&gt;&lt;li&gt;Searching for any user reviews of the site; &lt;/li&gt;&lt;li&gt;Double clicking on the padlock symbol in the corner to reveal details about the company that registered the site; and &lt;/li&gt;&lt;li&gt;Trying to connect the site to the real world by finding phone numbers or UK addresses.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Another great method is to use &lt;a href="http://flagfox.net/" target="_blank"&gt;FlagFox&lt;/a&gt; (http://flagfox.net/). This plugin for &lt;a href="http://www.mozilla.com/firefox/" target="_blank"&gt;FireFox&lt;/a&gt; gives you a little flag icon in your search bar letting you know where in the world the site is hosted. Great for finding the true geographical location of a website.&lt;/p&gt;&lt;p&gt;Original article &lt;a href="http://news.bbc.co.uk/1/hi/business/8178959.stm" target="_blank"&gt;here&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-6005561911152645465?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/6005561911152645465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=6005561911152645465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/6005561911152645465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/6005561911152645465'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/08/fake-uk-sites-trick-consumers-use.html' title='&apos;Fake UK sites&apos; trick consumers - Use FlagFox'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-942766775229234220</id><published>2009-07-28T09:44:00.003+01:00</published><updated>2009-07-28T09:58:21.533+01:00</updated><title type='text'>Broadband Providers Speed Tests</title><content type='html'>An interesting article was posted on the BBC news website today about UK broadband speeds which revealed "Nearly one fifth of UK broadband customers on an eight Megabit per second (Mbps) connection actually receive less than 2Mbps."&lt;br /&gt;
The research also showed that "less than 9% of users received more than 6Mbps."&lt;br /&gt;
So what's the point in advertising speeds of up to 8Mbps when the chances are you can't get it? Well it's a sales gimmick. One thing you can do though is compare the speeds of different providers so that you are with the best for your needs.&lt;br /&gt;
The BBC had a useful comparison on this also, showing Virgin Media as the fastest provider (however, their coverage is mainly limited to urban areas).

&lt;table id="broadbandperf"&gt;
&lt;caption&gt;HOW UK ISPS COMPARE&lt;/caption&gt;
&lt;thead&gt;
 &lt;tr class="odd"&gt;
   &lt;th scope="col"&gt;
&lt;/th&gt;
   &lt;th scope="col"&gt;...is slower than...&lt;/th&gt;
   &lt;th scope="col"&gt;...is faster than...&lt;/th&gt;

 &lt;/tr&gt;
&lt;/thead&gt;
&lt;tfoot&gt;
&lt;tr&gt;
&lt;td colspan="3"&gt;All services at 8Mbit/s except Virgin Media at 10Mbps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
   &lt;td colspan="3"&gt;Source: Ofcom&lt;/td&gt;

&lt;/tr&gt;
&lt;/tfoot&gt;
&lt;tbody&gt;
 &lt;tr&gt;
   &lt;td&gt;AOL&lt;/td&gt;
   &lt;td&gt;O2, Orange, Plusnet, Sky, Talktalk, Virgin Media&lt;/td&gt;
   &lt;td&gt;
&lt;/td&gt;
 &lt;/tr&gt;

 &lt;tr class="odd"&gt;
   &lt;td&gt;BT&lt;/td&gt;
   &lt;td&gt;O2, Virgin Media&lt;/td&gt;
   &lt;td&gt;Tiscali&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
   &lt;td&gt;O2&lt;/td&gt;

   &lt;td&gt;Virgin Media&lt;/td&gt;
   &lt;td&gt;AOL, BT, Tiscali&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr class="odd"&gt;
   &lt;td&gt;Orange&lt;/td&gt;
   &lt;td&gt;Virgin Media&lt;/td&gt;
   &lt;td&gt;AOL, Tiscali&lt;/td&gt;

 &lt;/tr&gt;
 &lt;tr&gt;
   &lt;td&gt;Plusnet&lt;/td&gt;
   &lt;td&gt;Virgin Media&lt;/td&gt;
   &lt;td&gt;AOL, Tiscali&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr class="odd"&gt;

   &lt;td&gt;Sky&lt;/td&gt;
   &lt;td&gt;Virgin Media&lt;/td&gt;
   &lt;td&gt;AOL, Tiscali&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
   &lt;td&gt;Talktalk&lt;/td&gt;
   &lt;td&gt;Virgin Media&lt;/td&gt;

   &lt;td&gt;AOL, Tiscali&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr class="odd"&gt;
   &lt;td&gt;Tiscali&lt;/td&gt;
   &lt;td&gt;BT, O2, Orange, Plusnet, Sky, Talktalk, Virgin Media&lt;/td&gt;
   &lt;td&gt;
&lt;/td&gt;
 &lt;/tr&gt;

 &lt;tr&gt;
   &lt;td&gt;Virgin Media&lt;/td&gt;
   &lt;td&gt;
&lt;/td&gt;
   &lt;td&gt;AOL, BT, O2, Orange, Plusnet, Sky, Talktalk, Tiscali&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
Original article: &lt;a href="http://news.bbc.co.uk/1/hi/technology/8171074.stm" target="_blank"&gt;http://news.bbc.co.uk/1/hi/technology/8171074.stm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-942766775229234220?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/942766775229234220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=942766775229234220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/942766775229234220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/942766775229234220'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/07/broadband-providers-speed-tests.html' title='Broadband Providers Speed Tests'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-4944270304616452085</id><published>2009-06-18T15:08:00.003+01:00</published><updated>2009-09-29T16:13:35.445+01:00</updated><title type='text'>Z-Index Maximum and Minimum Values</title><content type='html'>Quick answer to a query we got asked the other day.&lt;br /&gt;
Does the css property z-index have a maximum value?&lt;br /&gt;
&lt;br /&gt;
The answer is yes.&lt;br /&gt;
The maximum value for z-index is 2147483647.&lt;br /&gt;
The minimum value for z-index is 0.&lt;br /&gt;
Occasionally you may see a negative z-index e.g. z-index:-1, this is not supported by all web browsers however.&lt;br /&gt;
&lt;br /&gt;
It's also worth noting that z-index only applies to elements which are positioned using position: relative or position: absolute.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-4944270304616452085?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/4944270304616452085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=4944270304616452085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4944270304616452085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4944270304616452085'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/06/z-index-maximum-and-minimum-values.html' title='Z-Index Maximum and Minimum Values'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-8525211566682021859</id><published>2009-05-11T21:06:00.005+01:00</published><updated>2009-05-11T21:15:46.614+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general info'/><category scheme='http://www.blogger.com/atom/ns#' term='url'/><title type='text'>Shrink long URLs - Making large website addresses small</title><content type='html'>There are many tools out there to shrink long website addresses and turn them into small URLs.&lt;br /&gt;
We have just launched our own here: &lt;a href="http://mini2u.com/" target="_blank"&gt;mini2u.com&lt;/a&gt;.&lt;br /&gt;
If you have a long website address, but a limited amount of space to post it (e.g. Facebook status or Twitter tweet) simply copy the address (URL) into the box on &lt;a href="http://mini2u.com/" target="_blank"&gt;Mini2U.com&lt;/a&gt; and it will generate a tiny URL for you.&lt;br /&gt;
Coming soon: hit counter - count how many hits your &lt;a href="http://mini2u.com/" target="_blank"&gt;Mini2U&lt;/a&gt; URL receives.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-8525211566682021859?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/8525211566682021859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=8525211566682021859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/8525211566682021859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/8525211566682021859'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/05/shrink-long-urls-making-large-website.html' title='Shrink long URLs - Making large website addresses small'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-6117644033116366073</id><published>2009-03-24T19:51:00.001Z</published><updated>2009-03-24T20:10:20.679Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>DSN-Less Connection to MySQL in ASP</title><content type='html'>&lt;p&gt;To access a MySQL database in ASP you can use the following script:&lt;/p&gt;
   &lt;div align="left" style="border:1px dashed #000066; width:500px; padding:5px;"&gt;
    &lt;pre&gt;Function getDBConn()&lt;br /&gt;
Set conDB=Server.CreateObject("ADODB.Connection")
 conDB.Open "Driver={MySQL ODBC 3.51 Driver};" &amp; _ 
      "Server=&lt;em&gt;mysql.myserver.net&lt;/em&gt;;" &amp; _
      "Port=3306;" &amp; _
      "Option=131072;" &amp; _
      "Stmt=;" &amp; _
      "Database=&lt;em&gt;mydatabase&lt;/em&gt;;" &amp; _
      "Uid=&lt;em&gt;myname&lt;/em&gt;;" &amp; _
      "Pwd=&lt;em&gt;mypassword&lt;/em&gt;"
End Function&lt;/pre&gt;
   &lt;/div&gt;&lt;br /&gt;
    &lt;p&gt;Remember to change the Server address to the address of your MySQL database; also you will need to change the Database, Uid and Pwd parameters as appropriate.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-6117644033116366073?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/6117644033116366073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=6117644033116366073' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/6117644033116366073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/6117644033116366073'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/03/dsn-less-connection-to-mysql-in-asp.html' title='DSN-Less Connection to MySQL in ASP'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-7198706562752813092</id><published>2009-03-24T19:46:00.002Z</published><updated>2009-03-24T20:08:40.941Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP Connection to MySQL</title><content type='html'>&lt;p&gt;To access a MySQL database in PHP you can use the following script:&lt;/p&gt;
   &lt;div align="left" style="border:1px dashed #000066; width:500px; padding:5px;"&gt;
    &lt;pre&gt;&amp;lt;?php
$dbhost = '&lt;em&gt;mysql.myserver.net&lt;/em&gt;';
$dbuser = '&lt;em&gt;myname&lt;/em&gt;';
$dbpass = '&lt;em&gt;mypassword&lt;/em&gt;';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die 
('Error connecting to mysql');

$dbname = '&lt;em&gt;mydatabase&lt;/em&gt;';
mysql_select_db($dbname);
?&amp;gt;
&lt;/pre&gt;
   &lt;/div&gt;&lt;br /&gt;
    &lt;p&gt;Remember to change the Host address to the address of your MySQL database; also you will need to change the dbname, dbuser and dbpass parameters as appropriate.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-7198706562752813092?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/7198706562752813092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=7198706562752813092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/7198706562752813092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/7198706562752813092'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/03/php-connection-to-mysql.html' title='PHP Connection to MySQL'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-642829351107944740</id><published>2009-03-24T19:27:00.003Z</published><updated>2009-03-24T20:07:40.820Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>ASP Server Variables</title><content type='html'>&lt;p&gt;We have decided to remove our Resources section in order to keep all useful code snippets and tips in our blog so we will post some of the content of those pages here.&lt;br /&gt;The first one is the ASP Server Variables table:&lt;/p&gt;
&lt;p&gt;The table below shows the &lt;em&gt;Server Variables&lt;/em&gt; available in &lt;em&gt;ASP&lt;/em&gt; and example values.&lt;/p&gt;
&lt;table width="500" border="0" cellspacing="0" cellpadding="0" align="center" class="infoTable"&gt;
  &lt;tr&gt;
    &lt;td class="infoTableImportantTextHeader infoTableHeader"&gt;Server Variable&lt;/td&gt;
    &lt;td class="infoTableImportantTextHeader infoTableHeader"&gt;Description&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;ALL_HTTP&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns all HTTP headers sent by the client. Always prefixed
      with HTTP_ and capitalized&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;ALL_RAW&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns all headers in raw form&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;APPL_MD_PATH&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the meta base path for the application for the ISAPI
  DLL&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      APPL_PHYSICAL_PATH&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the physical path corresponding to the meta
      base path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      AUTH_PASSWORD&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the value entered in the client's authentication dialog&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      AUTH_TYPE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; The authentication method that the server uses to validate users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      AUTH_USER&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the raw authenticated user name&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CERT_COOKIE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the unique ID for client certificate as a string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CERT_FLAGS&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; bit0 is set to 1 if the client certificate is present and bit1 is set to 1 if the Certification authority of the client certificate is
  not valid&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CERT_ISSUER&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the issuer field of the client certificate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CERT_KEYSIZE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the number of bits in Secure Sockets Layer connection key
  size&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CERT_SECRETKEYSIZE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the number of bits in server certificate private key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CERT_SERIALNUMBER&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the serial number field of the client certificate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;

&lt;td valign="top" class="infoTableHeader"&gt;
      CERT_SERVER_ISSUER&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the issuer field of the server certificate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CERT_SERVER_SUBJECT&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the subject field of the server certificate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;

      CERT_SUBJECT&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the subject field of the client certificate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CONTENT_LENGTH&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the length of the content as sent by the client&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      CONTENT_TYPE&lt;/td&gt;

&lt;td valign="top" class="infoTableHeader"&gt;Returns the data type of the content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      GATEWAY_INTERFACE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the revision of the CGI specification used by the
  server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTP_&amp;lt;&lt;i&gt;HeaderName&lt;/i&gt;&amp;gt;&lt;/td&gt;

&lt;td valign="top" class="infoTableHeader"&gt;Returns the value stored in the header &lt;i&gt; HeaderName&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTP_ACCEPT&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the value of the Accept header&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTP_ACCEPT_LANGUAGE&lt;/td&gt;

&lt;td valign="top" class="infoTableHeader"&gt; Returns a string describing the language to use for displaying
  content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTP_COOKIE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the cookie string included with the request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTP_REFERER&lt;/td&gt;

&lt;td valign="top" class="infoTableHeader"&gt; Returns a string containing the URL of the page that referred 
the request to the current page using an &amp;lt;a&amp;gt; tag. If the page is redirected, 
HTTP_REFERER is empty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTP_USER_AGENT&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns a string describing the browser that sent the request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;

&lt;td valign="top" class="infoTableHeader"&gt;
      HTTPS&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns ON if the request came in through secure channel or OFF if the request
  came in through a non-secure channel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTPS_KEYSIZE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the number of bits in Secure Sockets Layer connection key
  size&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTPS_SECRETKEYSIZE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the number of bits in server certificate private key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTPS_SERVER_ISSUER&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the issuer field of the server certificate&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      HTTPS_SERVER_SUBJECT&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the subject field of the server certificate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      INSTANCE_ID&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; The ID for the IIS instance in text format&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      INSTANCE_META_PATH&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; The meta base path for the instance of IIS that responds to the
  request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      LOCAL_ADDR&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the server address on which the request came in&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      LOGON_USER&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the Windows account that the user is logged into&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      PATH_INFO&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns extra path information as given by the client&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      PATH_TRANSLATED&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; A translated version of PATH_INFO that takes the path and performs any necessary virtual-to-physical
  mapping&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      QUERY_STRING&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt;Returns the query information stored in the string following the question mark (?) in the HTTP
  request&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      REMOTE_ADDR&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the IP address of the remote host making the request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      REMOTE_HOST&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the name of the host making the request&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      REMOTE_USER&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns an unmapped user-name string sent in by the user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      REQUEST_METHOD&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the method used to make the request&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      SCRIPT_NAME&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns a virtual path to the script being executed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      SERVER_NAME&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the server's host name, DNS alias, or IP address as it would appear in self-referencing
  URLs&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      SERVER_PORT&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the port number to which the request was sent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      SERVER_PORT_SECURE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns a string that contains 0 or 1. If the request is being handled on the secure port,
  it will be 1. Otherwise, it will be 0&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      SERVER_PROTOCOL&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the name and revision of the request information
  protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      SERVER_SOFTWARE&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the name and version of the server software that answers the request and runs the
  gateway&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" class="infoTableHeader"&gt;
      URL&lt;/td&gt;
&lt;td valign="top" class="infoTableHeader"&gt; Returns the base portion of the URL&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;    
    &lt;p&gt;To access Server Variables in ASP we use:&lt;/p&gt;
    &lt;pre&gt;Request.ServerVariables (server_variable)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-642829351107944740?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/642829351107944740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=642829351107944740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/642829351107944740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/642829351107944740'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/03/asp-server-variables.html' title='ASP Server Variables'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-2895327492717153419</id><published>2009-03-06T23:09:00.003Z</published><updated>2009-03-06T23:17:15.492Z</updated><title type='text'>A better way to handle POST and GET in PHP</title><content type='html'>To handle POSTed and GET variables in PHP is a bit of a pain.
You've got to check that they are actually set, that they are not null and then, read the value.
We use three functions to handle this. Why three? Well, one of them (validateParam) can be used in multiple situations.
Here's the code:
&lt;pre&gt;function validateParam($param, $default = "") {
if (!isset($param) || $param=="") {
 return $default;
}
return $param;
}

function doGet($param, $default = "") {
if (array_key_exists($param, $_GET)) {
 return validateParam($_GET[$param], $default);
}
return $default;
}
function doPost($param, $default = "") {
if (array_key_exists($param, $_POST)) {
 return validateParam($_POST[$param], $default);
}
return $default;
}&lt;/pre&gt;

Now all you need to do is call doPost("var_name", "default") or doGet("var_name", "default") and don't have to bother about isset(), etc.
Hope this helps when processing these.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-2895327492717153419?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/2895327492717153419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=2895327492717153419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/2895327492717153419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/2895327492717153419'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/03/better-way-to-handle-post-and-get-in.html' title='A better way to handle POST and GET in PHP'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-321164909433196434</id><published>2009-01-16T10:26:00.011Z</published><updated>2009-03-06T23:28:42.828Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='location'/><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Getting path and location details in Javascript</title><content type='html'>A couple of quick tips for you to get path information for your page in JavaScript, assuming that the URL we are manipulating is &lt;b&gt;http://example.com/test/test.php?i=1&amp;amp;b=2#3&lt;/b&gt;
To get the complete URL use:
&lt;pre&gt;location.href&lt;/pre&gt;returns &lt;b&gt;http://example.com/test/test.php?i=1&amp;amp;b=2#3&lt;/b&gt;
&lt;br /&gt;&lt;br /&gt;
To get the hostname use:
&lt;pre&gt;location.hostname&lt;/pre&gt;returns &lt;b&gt;example.com&lt;/b&gt;
&lt;br /&gt;&lt;br /&gt;
To get the path of the current URL including the script use:
&lt;pre&gt;location.pathname&lt;/pre&gt;returns &lt;b&gt;/test/test.php&lt;/b&gt;
&lt;br /&gt;&lt;br /&gt;
To get the current URL excluding the script use:
&lt;pre&gt;location.hostname+location.pathname.substr(0, location.pathname.lastIndexOf("/"))+"/"&lt;/pre&gt;returns &lt;b&gt;example.com/test/&lt;/b&gt;
&lt;br /&gt;&lt;br /&gt;
Now to get passed parameters from the QueryString:
&lt;pre&gt;location.search&lt;/pre&gt;returns &lt;b&gt;?i=1&amp;amp;b=2&lt;/b&gt;
&lt;br /&gt;&lt;br /&gt;
To get just the anchor or hash part use:
&lt;pre&gt;location.hash&lt;/pre&gt;returns &lt;b&gt;#3&lt;/b&gt;
&lt;br /&gt;&lt;br /&gt;
Finally to get the protocol use:
&lt;pre&gt;location.protocol&lt;/pre&gt;returns &lt;b&gt;http:&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-321164909433196434?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/321164909433196434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=321164909433196434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/321164909433196434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/321164909433196434'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2009/01/getting-path-and-location-details-in.html' title='Getting path and location details in Javascript'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-3459716145246587059</id><published>2008-12-29T23:36:00.003Z</published><updated>2008-12-29T23:45:57.929Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Get Current Directory Function in PHP</title><content type='html'>Something that many people ask for is an extremely simple piece of code and that is "How do I get the current directory in PHP?"
Well, we use a function to do this and the code is as follows:
&lt;pre&gt;function getDirectory() {
 $f = getcwd();
 return substr($f, strrpos($f, "/") + 1);
}
&lt;/pre&gt;The PHP function &lt;a href="http://uk.php.net/manual/en/function.getcwd.php" target="_blank"&gt;getcwd()&lt;/a&gt; returns the current working directory and path. The following line simply strips the path and returns the name of the current directory.
Instead of using getcwd() you can also use &lt;a href="http://www.php.net/dirname" target="_blank"&gt;dirname&lt;/a&gt;(__FILE__) so the code could be rewritten as:
&lt;pre&gt;function getDirectory() {
 $f = dirname(__FILE__);
 return substr($f, strrpos($f, "/") + 1);
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-3459716145246587059?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/3459716145246587059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=3459716145246587059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/3459716145246587059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/3459716145246587059'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2008/12/get-current-directory-function-in-php.html' title='Get Current Directory Function in PHP'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-4110282616122695824</id><published>2008-11-20T14:15:00.002Z</published><updated>2008-11-20T14:23:16.589Z</updated><title type='text'>Domain Renewal Group Scam</title><content type='html'>&lt;span style="font-family: arial;"&gt;Some of our customers have reported that they have received a letter from the Domain Renewal Group or the Domain Registry of America stating that their domain needs renewing.&lt;/span&gt;
&lt;span style="font-family: arial;"&gt;The company are using the WHOIS database information to get information on customers. &lt;/span&gt;&lt;span style="font-family: arial;font-family:Arial;"&gt;You may pay 2-3 times for your domain registration  or you could even lose ownership under some conditions.
We only send postal notifications of domain name renewal if you have specified that you wish to receive postal invoices in your account control panel.&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;Most of these postal letters that come in the mail are more or less SCAMS to get people to agree to what they think is a renewal, but is in fact a high-priced TRANSFER to a company that may not be trustworthy.&lt;/span&gt;
&lt;span style="font-family: arial; font-weight: normal;"&gt;We will always renew your domain name for you unless you advise us not to.&lt;/span&gt;
&lt;span style="font-family: arial; font-weight: normal;"&gt;If you receive any of these letters then please ignore them.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-4110282616122695824?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/4110282616122695824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=4110282616122695824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4110282616122695824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/4110282616122695824'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2008/11/domain-renewal-group-scam.html' title='Domain Renewal Group Scam'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-2458077735999855937</id><published>2008-08-11T10:33:00.001+01:00</published><updated>2008-08-11T10:35:20.488+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general info'/><title type='text'>Send ctrl+alt+delete to Remote Desktop</title><content type='html'>A common question that we get asked on our managed servers is "How do I send Ctrl+Alt+Delete to my server via a Remote Desktop session?"
Well the answer is very straight forward: Whilst in your Remote Desktop session simply press Ctrl+Alt+End.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-2458077735999855937?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/2458077735999855937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=2458077735999855937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/2458077735999855937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/2458077735999855937'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2008/08/send-ctrlaltdelete-to-remote-desktop.html' title='Send ctrl+alt+delete to Remote Desktop'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-49338057176502146</id><published>2008-06-16T20:28:00.003+01:00</published><updated>2008-06-16T20:33:07.409+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='pitfalls'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Careful with your Comments in IE</title><content type='html'>Small tip today.
Be careful where you place your HTML comments in Internet Explorer.
Placing comments before you begin your HTML content can cause strange layout rendering.
For example:
&lt;blockquote&gt;&amp;lt;!-- My Comment --&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
....&lt;/blockquote&gt;
This is wrong and can cause all sorts of layout issues. Always make sure your comment is in your HTML content.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-49338057176502146?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/49338057176502146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=49338057176502146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/49338057176502146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/49338057176502146'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2008/06/careful-with-your-comments-in-ie.html' title='Careful with your Comments in IE'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-6304017661928488636</id><published>2008-06-05T20:20:00.004+01:00</published><updated>2008-06-05T20:50:31.063+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='sitemaps'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>XML Sitemap Generator Script in PHP for Google and others</title><content type='html'>We develop a lot of websites and quite rightly the owners want their site to appear in Google as quickly as possible. One way to speed up this process is to use &lt;a href="http://google.com/sitemaps" target="_blank"&gt;Google's sitemap tool&lt;/a&gt;.&lt;br /&gt;
Google accept sitemaps in various formats, one of them being XML.&lt;br /&gt;
Now if you have a site, or develop websites, that quite often have new content and pages being added to them it can be a pain to create a new sitemap each time. For this reason we have taken a nice little script developed in ASP by &lt;a href="http://www.iteam5.net/francesco/sitemap_gen/" target="_blank" rel="nofollow"&gt;Francesco Passantino&lt;/a&gt; and rewritten it in PHP.&lt;br /&gt;
To use this script, simply place it in the root of your website and tell Google where it is in the Add Sitemap section of Google sitemaps.&lt;br /&gt;
The script will generate a valid XML sitemap that will dynamically update whenever new pages are added or pages are deleted.&lt;br /&gt;&lt;br /&gt;

Version 1.0 can be found &lt;a href="http://www.webme.co.uk/sitemap-generator/sitemap-gen.txt" target="_blank"&gt;here&lt;/a&gt;. This is for PHP5 only, we also have a PHP4 version which can be found &lt;a href="http://www.webme.co.uk/sitemap-generator/sitemap-gen4.txt" target="_blank"&gt;here&lt;/a&gt;. To use the PHP4 version you will need the strripos PHP4 script from &lt;a href="http://www.webme.co.uk/sitemap-generator/strripos.txt" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-6304017661928488636?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/6304017661928488636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=6304017661928488636' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/6304017661928488636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/6304017661928488636'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2008/06/xml-sitemap-generator-script-in-php-for.html' title='XML Sitemap Generator Script in PHP for Google and others'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5473769531249768713.post-273438502406851149</id><published>2008-05-27T17:07:00.003+01:00</published><updated>2009-02-09T14:12:00.038Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='password'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Random Password Generator in PHP</title><content type='html'>Today we thought we'd share our random PHP password generator code with you.
This function returns a variable length password comprised of upper and lower case characters with numbers. Simply pass the desired password length to the function.

&lt;pre&gt;
function RandomPW($myLength) {
 $strPW = '';
 //These constant are the minimum and maximum length for random
 //length passwords.  Adjust these values to your needs.
 $minLength = 6;
 $maxLength = 20;
 
 if ($myLength == 0) {
  $myLength = rand($minLength, $maxLength);
 }

 for ($X=1;$X&lt;=$myLength;$X++) {
  //Randomize the type of this character
  $Y = rand(1,3); //(1) Numeric, (2) Uppercase, (3) Lowercase
  switch ($Y) {
   case 1:
    //Numeric character
    $strPW = $strPW.chr(rand(48, 57));
    break;
   case 2:
    //Uppercase character
    $strPW = $strPW.chr(rand(65, 90));
    break;
   case 3:
    //Lowercase character
    $strPW = $strPW.chr(rand(97, 122));
    break;
  }
 }
 return($strPW);
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5473769531249768713-273438502406851149?l=www.webme.co.uk%2Fwebme-web-design-blog.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/273438502406851149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5473769531249768713&amp;postID=273438502406851149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/273438502406851149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5473769531249768713/posts/default/273438502406851149'/><link rel='alternate' type='text/html' href='http://www.webme.co.uk/2008/05/random-password-generator-in-php.html' title='Random Password Generator in PHP'/><author><name>WebMe</name><uri>http://www.blogger.com/profile/13905964317649933026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13006684254262184953'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>