<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-872374623232089703</id><updated>2012-02-07T17:00:13.818-08:00</updated><category term='Apache ProxyPass IIS Wildcard'/><category term='htaccess apache restricting'/><category term='PHP Mail'/><category term='SMTP Server'/><category term='SQL'/><category term='Windows 2003 Shutdown Restart example'/><category term='ie6 ie7 browser resize white space css bug fixes'/><category term='Monthly Report'/><category term='php'/><category term='Fedora Startup Scripts init.d ntsysv'/><category term='Apache VirtualDocumentRoot auto_prepend_file Automatic'/><category term='vi search and replace'/><category term='fedora yum mysql administrator'/><category term='Mysql Remove Replace Line Breaks Trim'/><category term='Sendmail host name lookup failure'/><category term='MySQL Monthly Report'/><category term='CURL PHP httpd problem selinux Fedora'/><category term='php minutes to hours conversion'/><category term='php ip address'/><category term='Contribute port settings firewall'/><category term='vi search delete line'/><category term='mysql lost data'/><category term='Suffolk Web Design Welcome'/><category term='google indexed pages'/><category term='php exchange rate'/><category term='php session test'/><category term='linux password passwd change'/><category term='php png image resizing zlib error WP-SimpleViewer-Gallery'/><category term='idiot mysql password reset root fedora'/><category term='MYSQL time date minutes TIMESTAMPDIFF'/><category term='json_decode'/><category term='mysqlbinlog'/><title type='text'>Suffolk Web Design Blog</title><subtitle type='html'>We are a Felixstowe Based Web Design Company. This Blog contains code and other useful articles.

The Suffolk Web Design Blog is a resource for the Website - &lt;a href="http://www.suffolk-web-design.co.uk/"&gt;http://www.suffolk-web-design.co.uk/&lt;/a&gt;.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-3129428094932808007</id><published>2010-11-15T03:01:00.000-08:00</published><updated>2010-11-15T03:12:00.623-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP Mail'/><category scheme='http://www.blogger.com/atom/ns#' term='SMTP Server'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP Mail By Different SMTP Server</title><content type='html'>&lt;strong&gt;Senareo;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;I've just had to upload a php website to an IIS 6 web server. Amazingly, everything worked apart from the ability to send email. I informed the hosing provider and they set up a different SMTP server to send email from. I now needed to tell my website where the different smtp server resided.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Solution&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I used the ini_set command in php. It allowed me to override the default php setup, and add it to a config file. I believe this can also be achieved by .htaccess, however having the setting in a config file in php suited me better.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;?&lt;br /&gt;&lt;br /&gt;ini_set('SMTP','yourmailserver.com');&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt; The ideal solutions would have been to have php.ini changed, but this solution works for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-3129428094932808007?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/3129428094932808007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=3129428094932808007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3129428094932808007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3129428094932808007'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2010/11/php-mail-by-different-smtp-server.html' title='PHP Mail By Different SMTP Server'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-1602677145035264350</id><published>2010-04-02T04:08:00.000-07:00</published><updated>2010-04-02T04:20:04.719-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php exchange rate'/><title type='text'>php exchange rate</title><content type='html'>Making multi currency websites can be a complete nightmare.  Exchange rates change at a moments notice and it can be a constant struggle to keep yourself from losing money if one of the many markets crash.  &lt;br /&gt;&lt;br /&gt;Therefore I did a little bit of research and found you can get a rough idea of exchange rates by using yahoo finance.  Yahoo provide a csv download from their site with live data.  It's probably not as reliable as a feed from xe.com, but it's free and gives you a good indication of the exchange rate.&lt;br /&gt;&lt;br /&gt;Here's a funscion i've made fo get this data;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;function fget_exchange_rate($into, $infrom='GBP'){&lt;br /&gt; $lcsv = file_get_contents('http://download.finance.yahoo.com/d/quotes.csv?s='.$infrom.$into.'=X&amp;f=sl1d1t1ba&amp;e=.csv');&lt;br /&gt; $la = split(',',str_replace('"','',$lcsv));&lt;br /&gt; if($la[1] != '') return $la[1];&lt;br /&gt; return false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;echo('US $'.fget_exchange_rate('USD').'&lt;br /&gt;');&lt;br /&gt;echo('AU $'.fget_exchange_rate('AUD').'&lt;br /&gt;');&lt;br /&gt;echo('Euro '.fget_exchange_rate('EUR').'&lt;br /&gt;');&lt;br /&gt;echo('Japan '.fget_exchange_rate(JPY).'&lt;br /&gt;');&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You could add this to an automatic script to update the prices on your site daily.  However, please be aware that you still need to keep an eye on things just incase you encounter problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-1602677145035264350?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/1602677145035264350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=1602677145035264350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1602677145035264350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1602677145035264350'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2010/04/php-exchange-rate.html' title='php exchange rate'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-6892404795517346261</id><published>2010-02-19T02:36:00.000-08:00</published><updated>2010-02-19T02:41:37.463-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi search delete line'/><title type='text'>Vi delete line if search does not exist</title><content type='html'>Right,  if you have ever had to scroll through an endless text file looking for the needle in a haystack, there is a simpler way using the vi editor.  Using vi, You can use a simple search and delete command to search the file and delete lines where a phrase doesn;t exist, like so;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;:g!/text to look for/d&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The example above searches all lines for text containing 'text to look for' and deletes the line if the text does not exist.&lt;br /&gt;&lt;br /&gt;You could do the opposit and delete lines where the text exists like so;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;:g/text to look for/d&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-6892404795517346261?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/6892404795517346261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=6892404795517346261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/6892404795517346261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/6892404795517346261'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2010/02/vi-delete-line-if-search-does-not-exist.html' title='Vi delete line if search does not exist'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-9108431538863626634</id><published>2010-02-16T02:51:00.000-08:00</published><updated>2010-02-16T02:58:55.225-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='json_decode'/><title type='text'>json_decode Fatal error:  Cannot use object of type stdClass as array</title><content type='html'>You may receive the following error when encoding and decoding information using json in php&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fatal error&lt;/b&gt;: Cannot use object of type stdClass as array&lt;br /&gt;&lt;br /&gt;When using json_decode, information is by default converted into an object. You need to use the function get_object_vars to convert the object into an array, like so;&lt;br /&gt;&lt;br /&gt;&lt;?&lt;br /&gt;&lt;br /&gt;$new_data = get_object_vars(json_decode($data));&lt;br /&gt;&lt;br /&gt;print_r($new_data);&lt;br /&gt;&lt;br /&gt;?&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-9108431538863626634?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/9108431538863626634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=9108431538863626634' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/9108431538863626634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/9108431538863626634'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2010/02/jsondecode-fatal-error-cannot-use.html' title='json_decode Fatal error:  Cannot use object of type stdClass as array'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-3315557009215525566</id><published>2009-12-17T04:39:00.000-08:00</published><updated>2009-12-17T04:41:31.643-08:00</updated><title type='text'>Enable php5 on 1and1</title><content type='html'>Arrrggg - made a website in php5 and then get loads of errors when uploading to 1and1?  Luckily you can change the default setting by adding the following line to a .htaccess file;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AddType x-mapp-php5 .php&lt;br /&gt;&lt;br /&gt;Hope this helps - I found this information on the following link;&lt;br /&gt;&lt;br /&gt;Source&lt;br /&gt;&lt;a href="http://tech.xptechsupport.com/using-php-5-with-1and1-hosting.html"&gt;http://tech.xptechsupport.com/using-php-5-with-1and1-hosting.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-3315557009215525566?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/3315557009215525566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=3315557009215525566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3315557009215525566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3315557009215525566'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2009/12/enable-php5-on-1and1.html' title='Enable php5 on 1and1'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-8772940821857571046</id><published>2009-10-04T07:07:00.000-07:00</published><updated>2009-10-04T07:10:42.957-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php minutes to hours conversion'/><title type='text'>PHP convert minutes to hours</title><content type='html'>&lt;h1&gt;PHP convert minutes to hours&lt;/h1&gt;&lt;p&gt;Just a little function i made;&lt;br /&gt;&lt;br /&gt;function minutes_to_hours($inmin){&lt;br /&gt;$lh = floor($inmin/60);&lt;br /&gt;$lm = $inmin - ($lh*60);&lt;br /&gt;if ($lh &gt; 0) return $lh.'h '.$lm.'m';&lt;br /&gt;return '0h '.$lm.'m';&lt;br /&gt;} &lt;/p&gt;&lt;p&gt;So calling minutes_to_hours(125) = 2h 5m&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-8772940821857571046?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/8772940821857571046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=8772940821857571046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/8772940821857571046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/8772940821857571046'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2009/10/php-convert-minutes-to-hours.html' title='PHP convert minutes to hours'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-7507875481625489439</id><published>2009-09-22T06:29:00.000-07:00</published><updated>2009-09-22T06:48:48.425-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql lost data'/><category scheme='http://www.blogger.com/atom/ns#' term='mysqlbinlog'/><title type='text'>Retrieve Mysql Lost Data</title><content type='html'>Right, well have you ever been in a position where you have lost information on websites through incorrect sql?  Well, chances are that not everything is lost, especially with mysql.&lt;br /&gt;&lt;br /&gt;Mysql records all sql statements run on mysql a compressed binary log.  Everytime mysql restarts, a new log is created.  In fedora, these logs are located in /var/lib/mysql/.  For example, you will see files named mysql-bin.000001.  However, to make use of them, first you must extract them into a readbale forma using the mysqlbinlog tool.&lt;br /&gt;&lt;br /&gt;mysqlbinlog takes a binary log file and then does something with it.  For example, to view the file, simply use the following example;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;mysqlbinlog mysql-bin.000001&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To write the log to a singel file, use the following command;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;mysqlbinlog mysql-bin.000001 &gt;  all_sql_statements.sql&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Then you can simply read the fil and take the statements you need from it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-7507875481625489439?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/7507875481625489439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=7507875481625489439' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/7507875481625489439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/7507875481625489439'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2009/09/retrieve-mysql-lost-data.html' title='Retrieve Mysql Lost Data'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-5320377085343501453</id><published>2009-07-16T00:56:00.000-07:00</published><updated>2009-07-16T01:10:08.346-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php session test'/><title type='text'>PHP Session Test</title><content type='html'>Recently, i've had problems setting a clients site live on a 3rd party providers hosting. The problem is the site wouldn't allow sessions to be written so login scripts and catcha codes did not work as intended. The main problem is that technical support always blame programmers code before actually investigating the problem (sigh).&lt;br /&gt;&lt;br /&gt;Therefore here is a simple php script to prove to the technical support that sessions are not working as they should;&lt;br /&gt;&lt;br /&gt;&amp;lt;?&lt;br /&gt;session_start();&lt;br /&gt;if($_GET["test"] == '1'){&lt;br /&gt;if($_SESSION['atest'] == 'yes'){&lt;br /&gt;echo('Your hosting supports sessions');&lt;br /&gt;} else echo('Your hosting does not support sessions');&lt;br /&gt;} else {&lt;br /&gt;$_SESSION['atest'] = 'yes';&lt;br /&gt;echo '&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;function delayer(){&lt;br /&gt;window.location = "'.$_SERVER['PHP_SELF'].'?test=1";&lt;br /&gt;}&lt;br /&gt;//--&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body onLoad="setTimeout(\'delayer()\', 5000)"&amp;gt;&lt;br /&gt;About to test sessions.&lt;br /&gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;please wait...&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;';&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;The script performs a 301 redirect to test if sessions are working correctly when a page is refreshed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-5320377085343501453?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/5320377085343501453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=5320377085343501453' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/5320377085343501453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/5320377085343501453'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2009/07/php-session-test.html' title='PHP Session Test'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-3615764293546020784</id><published>2009-01-25T04:13:00.000-08:00</published><updated>2009-01-25T04:21:08.592-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mysql Remove Replace Line Breaks Trim'/><title type='text'>Mysql Remove Line Breaks</title><content type='html'>I've recently had line breaks added to some data i've imported.  Here's how you remove line breaks at the beginning and end of a field in mysql;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;update temp_table set fieldname=trim(both char(13) from fieldname) &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The above is only if you are in windows.  I believe you can also use the folowing for linux;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;update temp_table set fieldname=trim(both '\n' from fieldname)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You should also be able to use reaplce usinng the char method, e.g.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;update temp_table set fieldname=replace(fieldname, char(13), '-')&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I've not tested it though - I hope this helps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-3615764293546020784?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/3615764293546020784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=3615764293546020784' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3615764293546020784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3615764293546020784'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2009/01/mysql-remove-line-breaks.html' title='Mysql Remove Line Breaks'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-7590213813032630402</id><published>2009-01-16T07:43:00.000-08:00</published><updated>2009-01-16T07:56:42.246-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL Monthly Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Monthly Report'/><title type='text'>MySQL Monthly Report</title><content type='html'>Here is is brief howto on generating a Monthly MySQL report from an orders table.&lt;br /&gt;&lt;br /&gt;This example assumes you have a table called orders a stored date field called &lt;strong&gt;added&lt;/strong&gt; and a &lt;strong&gt;price&lt;/strong&gt; field for each order - in this example the price is stored as a varchar so it is casted using a (0+price).&lt;br /&gt;&lt;br /&gt;The fist column returned is the current month, the second is the total price for that month.  Here is the MySQL SQL Monthly Report Query;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT TIMESTAMPDIFF(MONTH, STR_TO_DATE(concat(month(added),'/1/',year(added)), '%m/%d/%Y'), STR_TO_DATE(concat(month(now()),'/',DAYOFMONTH(LAST_DAY(now())),'/',year(now())), '%m/%d/%Y')) as tmonth,&lt;br /&gt;sum(0+total_price) as lprice&lt;br /&gt;from orders&lt;br /&gt;where valid=1 and total_price &gt; 0&lt;br /&gt;group by tmonth&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There probably are quicker ways of doing this but it seems like the best solution for reporting on a single orders table.  This example basically makes the date as a string using CONCAT and then compare it.&lt;br /&gt;&lt;br /&gt;I hope this helps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-7590213813032630402?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/7590213813032630402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=7590213813032630402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/7590213813032630402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/7590213813032630402'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2009/01/mysql-monthly-report.html' title='MySQL Monthly Report'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-8582273055483872995</id><published>2008-11-22T05:01:00.000-08:00</published><updated>2008-11-22T05:29:04.203-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sendmail host name lookup failure'/><title type='text'>Sendmail stat=Deferred: Name server: host name lookup failure</title><content type='html'>It's a saturday. I have just spent 4 1/2 hours making sendmail actually work on a development server. All other websites I found gave me useless information on how to fix this, So I thought I'd post my fix here to Save countless hours of your weekend....&lt;br /&gt;&lt;br /&gt;I kept receiving the followingerror &lt;h4&gt;stat=Deferred: Name server: host name lookup failure &lt;/h4&gt;in my maillog file.&lt;br /&gt;&lt;br /&gt;The main crox of the problem is that I set up a FC9 development server on my local network without installing Bind. At the time I didn't want to use Bind, which is a common thing not to have on a development server. However, &lt;strong&gt;sendmail doesn't look at my hosts file&lt;/strong&gt; to resolve network addresses... oh no, why be so simple! instead isendmail decides to ignore my hosts file and visits the router to find out where localhost is. Therefore, to fix this problem, you need to install bind and just setup a localhost.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;You Need to install Bind on your server to get Sendmail to work.&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;Don't rely on your hosts file. If you are unfamiliar with using Bind, on fedora you can just type; &lt;strong&gt;yum install bind bind-chroot&lt;/strong&gt;. You can setup a simple configuration using &lt;a href="http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch18_:_Configuring_DNS"&gt;this guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After you have Bind setup, you will then need to edit your network settings to make sure all DNS requests look to your server first, before going to the internet to resolve. So edit this file;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;vi /etc/sysconfig/networking/devices/ifcfg-eth0&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;and change &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;DNS1=192.168.1.1&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;to &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;DNS1=127.0.0.1&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;DNS2=192.168.1.1&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Restart your server and make sure that sendmail and bind are both up and running. Then try crossing your fingers, finding some wood to touch and then sending an email.&lt;br /&gt;&lt;br /&gt;For me, this worked a treat and shows in my case that Sendmail completely ignores my hosts file and goes straight for the servers primary DNS setting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-8582273055483872995?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/8582273055483872995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=8582273055483872995' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/8582273055483872995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/8582273055483872995'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2008/11/sendmail-statdeferred-name-server-host.html' title='Sendmail stat=Deferred: Name server: host name lookup failure'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-8203056202165549600</id><published>2008-09-19T12:33:00.000-07:00</published><updated>2008-09-19T13:10:04.888-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache VirtualDocumentRoot auto_prepend_file Automatic'/><title type='text'>Apache Automatic Sites Using VirtualDocumentRoot</title><content type='html'>&lt;p&gt;Right, so i hate having to go edit config files when i'm editing and changing loads of new sites every day. It's time consuming and it breaks up my development.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I have a Fedora linux development server setup. I have a staic ip address and I have bind setup and a domain (*.mydomain.com) with wildcard subdomains pointing to it. That allows me to make a new site on my subdomain per website i'm editing and then i can demonstrate that to clients without ftp-ing the site and uploading databases.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For example if i'm editing &lt;strong&gt;newsite.com&lt;/strong&gt;, i download a copy to my dev server, then log into my dev server apache config file and add a virtualhost for &lt;strong&gt;newsite.com.mydomain.com&lt;/strong&gt; I can then edit this version of the site, allow the client to approve the site, then ftp up my changes.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;However, if you have over 20 of these sites it gets a bit confusing in your apache file, and it also breaks up development time when you edit the file, not to mention increasing the chance of you fucking things up.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Therefore, on a recent new install of my dev server, i decided to spend some time researching into apaches ability to rewrite stuff. I use mod_rewrite quite heavily and I wondered if it allows you to edit things before apache runs any php code. After much reading of peopletrying to do stupid nonsensical things with apache that have no real point... I happend across a way of doing this using the apache &lt;strong&gt;VirtualDocumentRoot. Here's an example;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;virtualhost&amp;gt;&lt;br /&gt;&lt;br /&gt;       ServerAlias *.mydomain.com&lt;br /&gt;&lt;br /&gt;       DocumentRoot /home/www/sites&lt;br /&gt;&lt;br /&gt;       VirtualDocumentRoot /home/www/sites/%-3+/&lt;br /&gt;&lt;br /&gt;&amp;lt;/virtualhost&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, if you have &amp;lt;strong&amp;gt;sitea.com.mydomain.com&amp;lt;/strong&amp;gt; this now maps to /home/www/sites/sitea.com/.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There is one small problem with this; If you use $_SERVER['DOCUMENT_ROOT'] in php, then this causes problems as document_root point to /home/www/sites. But, there's a work around for this. You have to make a php file to reset document_root and make that file run before anything else when the server requests this page. Here's an example of the php file;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;?&lt;br /&gt;&lt;br /&gt;       $location = explode(".",$_SERVER['HTTP_HOST']);&lt;br /&gt;&lt;br /&gt;       for($i=sizeof($location)-6; $i&amp;gt;=0; $i--) $lurl = '.'.$location[$i].$lurl;&lt;br /&gt;&lt;br /&gt;       $lurl = '/'.ltrim($lurl, '.');&lt;br /&gt;&lt;br /&gt;       $_SERVER[DOCUMENT_ROOT] .= $lurl;&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The above script resets the document_root variable correctly, Now you just need to edit the Apache config file;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;virtualhost&amp;gt;&lt;br /&gt;&lt;br /&gt;       ServerAlias *.mydomain.com&lt;br /&gt;&lt;br /&gt;       DocumentRoot /home/www/sites&lt;br /&gt;&lt;br /&gt;       VirtualDocumentRoot /home/www/sites/%-3+/&lt;br /&gt;&lt;br /&gt;       &lt;strong&gt;php_admin_value auto_prepend_file /home/www/set_path.php&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/virtualhost&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Voila! You should now be able to make dev sites without having to worry about the apache config files ever again!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-8203056202165549600?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/8203056202165549600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=8203056202165549600' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/8203056202165549600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/8203056202165549600'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2008/09/apache-automatic-sites-using.html' title='Apache Automatic Sites Using VirtualDocumentRoot'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-7374858036404543877</id><published>2008-06-09T07:54:00.000-07:00</published><updated>2008-06-09T07:59:22.447-07:00</updated><title type='text'>MySQL PHP Database Ripper</title><content type='html'>Recently, I've been working on several projects where direct database access has been an issue.&lt;br /&gt;&lt;br /&gt;To get around this, i've made a php mysql Database Ripper. It reads the database schema and then prints out the table structure and information for each table.&lt;br /&gt;&lt;br /&gt;Here's the source - Enjoy :)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;/************************************&lt;br /&gt;&lt;br /&gt;db connection&lt;br /&gt;&lt;br /&gt;************************************/&lt;br /&gt;&lt;br /&gt;$host = "localhost";&lt;br /&gt;&lt;br /&gt;$user = "dbuser";&lt;br /&gt;&lt;br /&gt;$pass = "dbpassword";&lt;br /&gt;&lt;br /&gt;$dbname = "dbname";&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;$db = mysql_connect($host, $user, $pass) or die(mysql_error());&lt;br /&gt;&lt;br /&gt;mysql_select_db($dbname, $db) or die(mysql_error());&lt;/p&gt;&lt;br /&gt;&lt;p&gt;/***********************************************************/&lt;/p&gt;&lt;br /&gt;&lt;p&gt;$ic = 0;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;$lsql = "show tables;";&lt;br /&gt;&lt;br /&gt;if ($result = mysql_query($lsql)){&lt;br /&gt;&lt;br /&gt;while ($row = mysql_fetch_array($result, MYSQL_NUM)){&lt;br /&gt;&lt;br /&gt;$mySQLArray[$ic++] = $row[0];&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;mysql_free_result($result);&lt;br /&gt;&lt;br /&gt;}&lt;/p&gt;&lt;br /&gt;&lt;p&gt;foreach ($mySQLArray as $litem){&lt;br /&gt;&lt;br /&gt;$lsql = "SHOW COLUMNS FROM ".$litem.";";&lt;br /&gt;&lt;br /&gt;$lreturn .=("create table ".$litem."(\r\n");&lt;br /&gt;&lt;br /&gt;$lcount = 0;&lt;br /&gt;&lt;br /&gt;if ($result = mysql_query($lsql)){&lt;br /&gt;&lt;br /&gt;while ($row = mysql_fetch_array($result, MYSQL_NUM)){&lt;br /&gt;&lt;br /&gt;if ($lcount &amp;gt; 0) $lreturn .=(",\r\n");&lt;br /&gt;&lt;br /&gt;$lreturn .=($row[0]." ".$row[1]);&lt;br /&gt;&lt;br /&gt;if ($row[2] == "NO") $lreturn .=(" NOT NULL ");&lt;br /&gt;&lt;br /&gt;if ($row[4] != "") $lreturn .=(" default '".$row[4]."' ");&lt;br /&gt;&lt;br /&gt;if ($row[3] == "PRI") $lreturn .=(" primary key ");&lt;br /&gt;&lt;br /&gt;$lreturn .= (" ".$row[5]." ");&lt;br /&gt;&lt;br /&gt;$lcount++;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;mysql_free_result($result);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$lreturn .=(") ENGINE=InnoDB DEFAULT CHARSET=latin1;\r\n\r\n");&lt;br /&gt;&lt;br /&gt;$lsql = "select * FROM ".$litem.";";&lt;br /&gt;&lt;br /&gt;if ($result = mysql_query($lsql)){&lt;br /&gt;&lt;br /&gt;while ($row = mysql_fetch_array($result, MYSQL_NUM)){&lt;br /&gt;&lt;br /&gt;$lreturn .= "insert into ".$litem." values (";&lt;br /&gt;&lt;br /&gt;$lstr = "";&lt;br /&gt;&lt;br /&gt;foreach($row as $lrow){&lt;br /&gt;&lt;br /&gt;$lstr .= "'".mysql_real_escape_string($lrow) . "',";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$lreturn .= rtrim($lstr ,",").");\r\n";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;mysql_free_result($result);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$lreturn .= ("\r\n\r\n\r\n");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;echo($lreturn);&lt;/p&gt;&lt;br /&gt;&lt;p&gt;?&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-7374858036404543877?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/7374858036404543877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=7374858036404543877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/7374858036404543877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/7374858036404543877'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2008/06/mysql-php-database-ripper.html' title='MySQL PHP Database Ripper'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-6449519183201988347</id><published>2008-01-31T10:47:00.000-08:00</published><updated>2008-01-31T11:07:50.418-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fedora yum mysql administrator'/><title type='text'>fedora yum mysql install guide</title><content type='html'>Here is a basic setup guide for installing mysql on a fedora systemusing the package manager yum.&lt;br /&gt;&lt;br /&gt;First thing's first, you need to download and install mysql with the following command;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#&gt; yum install mysql mysql-server mysql-devel&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Next, open up your firewall on port 3306 - that's the port external connections (like mysql administrator) use to interact with the database.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#&gt; vi /etc/sysconfig/iptables&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Press i&lt;/strong&gt; (to enter insert mode) and add these lines in an appropriate place;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 3306 --state NEW -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -p udp -m state -m udp --dport 3306 --state NEW -j ACCEPT&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Press esc to stop insert mode.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Type :wq&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Next restart your firewall for the settings to take effect;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#&gt; service iptables restart&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now navigate to the default mysql-server document directory, and edit the example large confige file for mysql;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#&gt; cd /usr/share/doc/mysql-server-*/&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;#&gt; vi my-large.cnf&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Press esc&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Type :w!/etc/my.cnf&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Type :q&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You have now overwritten your basic configuration file for mysql server.  Once you have restarted the mysqld service (using &lt;strong&gt;#&gt; service mysqld restart&lt;/strong&gt;), these settings should now take effect and you should have the mysql service listening on port 3306.&lt;br /&gt;&lt;br /&gt;However, you still require a mysql database user who can access the database from an external computer (using mysql administrator) and you also need to set your root password.  For the sake of simplicity and to get you connected, i'm going to use the root user in mysql, however I would recomend you use different users to manage your server for security reasons.&lt;br /&gt;&lt;br /&gt;Anyway, here's how to set the root password;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#&gt; mysql -u root&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;use mysql&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;update user set Password=PASSWORD('yourpassword') where User like '%root%';&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;quit&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Finally, restart the mysql service, for everything to take effect;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#&gt; service mysqld restart&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Voila, a workin mysql server which you can connect from external computers to port 3306 on your server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-6449519183201988347?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/6449519183201988347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=6449519183201988347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/6449519183201988347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/6449519183201988347'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2008/01/fedora-yum-mysql-install-guide.html' title='fedora yum mysql install guide'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-1290350647807254088</id><published>2007-11-20T01:07:00.000-08:00</published><updated>2007-11-20T01:17:23.390-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 2003 Shutdown Restart example'/><title type='text'>Windows 2003 Shutdown Restart Command with Examples</title><content type='html'>Have you ever found loads of windows 2003 command examples, which say they work when the truth is they don't?&lt;br /&gt;&lt;br /&gt;Well here are a couple of examples that do shutdown or restart the Server;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Shutdown Windows 2003&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SHUTDOWN /s /d P:2:17&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Restart Windows 2003&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SHUTDOWN /r /d P:2:17&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;These two commands appear to work for me. visit this link (&lt;a href="http://www.ss64.com/nt/shutdown.html"&gt;http://www.ss64.com/nt/shutdown.html&lt;/a&gt;) for further information.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-1290350647807254088?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/1290350647807254088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=1290350647807254088' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1290350647807254088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1290350647807254088'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/11/windows-2003-shutdown-restart-command.html' title='Windows 2003 Shutdown Restart Command with Examples'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-4627212125114651765</id><published>2007-09-29T03:14:00.000-07:00</published><updated>2007-09-29T03:32:20.132-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ie6 ie7 browser resize white space css bug fixes'/><title type='text'>ie css bug fixes</title><content type='html'>Well, there are many problems that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ie&lt;/span&gt; appears to have when it comes to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;css&lt;/span&gt;. Most problems can be fixed fairly easily when you know what the problem is, so I thought &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;i'd&lt;/span&gt; list a few common fixes i use from time to time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;IE Position, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;Stretch&lt;/span&gt; or Browser &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Resize&lt;/span&gt; Problem&lt;/h2&gt;&lt;br /&gt;IE &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;stretches&lt;/span&gt; too wide or after the browser is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;resized&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ie&lt;/span&gt; doesn't reposition elements correctly.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ie&lt;/span&gt; fix&lt;/h3&gt;Apply position:relative to the body tag, the element and containing elements, which are effected by the bug. e.g. in your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;css&lt;/span&gt; file add&lt;br /&gt;&lt;br /&gt;body,&lt;br /&gt;#element_container,&lt;br /&gt;#element{position:relative;}&lt;br /&gt;&lt;br /&gt;You may also have to play around with width but the above code should work a treat!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;IE White Space Bug&lt;/h2&gt;This usually occurs when you've been floating elements around each other. This manifests itself in in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ie&lt;/span&gt; either as a big line space appears at the bottom of the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;elements&lt;/span&gt; or the elements don't &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;stretch&lt;/span&gt; the page &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;relative&lt;/span&gt; to each other.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;IE White Space Fix&lt;/h3&gt;&lt;p&gt;at the bottom of the elements, add a new block element like a paragraph tag with a style of clear:both; e.g.&lt;/p&gt;&lt;p&gt;&lt;p style="CLEAR: both"&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;You may also need to adjust the height, line height and the font size so the block element &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;doesn'&lt;/span&gt;t appear as a new line, e.g.;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="CLEAR: both; FONT-SIZE: 1px; LINE-HEIGHT: 1px; HEIGHT: 1px"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-4627212125114651765?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/4627212125114651765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=4627212125114651765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/4627212125114651765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/4627212125114651765'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/09/ie-css-bug-fixes.html' title='ie css bug fixes'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-5363500680475024788</id><published>2007-08-30T13:35:00.000-07:00</published><updated>2007-08-30T13:50:21.357-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idiot mysql password reset root fedora'/><title type='text'>MySQL Password Reset Root</title><content type='html'>AAAAAAARRRRRRRRGGGGGGGGGHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;&lt;br /&gt;If you're reading this - chances are, you're an idiot.  I know this as I am also an idiot as I installed a development server recently and forgot the root password for mysql.  Yes I should have written the password down, no I didn't. here's the steps for resetting the root password on a working linux server;&lt;br /&gt;&lt;br /&gt;1.) First login as root via ssh&lt;br /&gt;2.) kill the mysqld service and all other mysql running processes e.g.&lt;br /&gt;#&gt; service mysqld stop&lt;br /&gt;#&gt; ps waux&lt;br /&gt;&lt;br /&gt;ps waux gets a list of all running processes&lt;br /&gt;&lt;br /&gt;use kill to stop any running mysql processes eg kill 6194 (kill pid).&lt;br /&gt;&lt;br /&gt;3.) After stopping/killing mysqld, run the foillowing line;&lt;br /&gt;#&gt; mysqld_safe --skip-grant-tables &amp;&lt;br /&gt;&lt;br /&gt;4.) You are now logged into mysql safe mode.  Cut and paste the following lines&lt;br /&gt;&lt;br /&gt;mysql -u root mysql&lt;br /&gt;UPDATE user SET password=PASSWORD("your_password") WHERE User="root"; &lt;br /&gt;FLUSH PRIVILEGES;&lt;br /&gt;exit;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5.) then start up the mysqld service;&lt;br /&gt;&lt;br /&gt;#&gt; service mysqld start&lt;br /&gt;&lt;br /&gt;That's it - all done.  Now remember to write down ur password this time u idiot!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-5363500680475024788?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/5363500680475024788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=5363500680475024788' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/5363500680475024788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/5363500680475024788'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/08/mysql-password-reset-root.html' title='MySQL Password Reset Root'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-8858347869578578056</id><published>2007-08-28T11:40:00.000-07:00</published><updated>2007-08-28T12:03:46.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CURL PHP httpd problem selinux Fedora'/><title type='text'>SELinux CURL Problem</title><content type='html'>&lt;h2&gt;&lt;a href="http://suffolk-web-design.blogspot.com/2007/08/selinux-curl-problem.htm#solution"&gt;skip to solution&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Recently, I made a recursive xml sitemap generator tool, which quickly generates a sitemap, calculating how popular certain pages are related to how may linke they have internally. This helps make quick, good xml sitemaps that google likes as it follows the rough popularity that google sees of each page.&lt;br /&gt;&lt;br /&gt;So I spent about 3 hours on this script - making it proper kick ass only to discover that when I upload the script from my dev server to my live server - the fucker doesn't work! not only that, but there's nothing reported in /var/log/messages.&lt;br /&gt;&lt;br /&gt;After updating php-curl using yum and turning my firewall off with still no luck - I decided to get heavy handed and ask my server people to reinstall a newer version of fedora.&lt;br /&gt;&lt;br /&gt;so afterspending another half a day setting up ftp/httpd/iptables/mysql/php/bind/etc. I uploaded the xmlsitemap generator and it still doesn't fucking work!&lt;br /&gt;&lt;br /&gt;Oh where do I start? 'Livid' doesn't even come close - not only had i wasted the best part of a day updating my server - I didn't even manage to fix my sitemap script!!!&lt;br /&gt;&lt;br /&gt;However, i did now have a message in /var/log/messages;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;comm="httpd" dest=80 scontext=root:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket&lt;/em&gt; &lt;/p&gt;&lt;p&gt;After much googling, I found this solution;&lt;br /&gt;&lt;/p&gt;&lt;h1 id="solution"&gt;Solution&lt;/h1&gt;&lt;p&gt;in the cli, type the following&lt;/p&gt;&lt;p&gt;#&gt; getsebool -a&lt;br /&gt;#&gt; setsebool httpd_can_network_connect true&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first command displays the current SELinux settings, the second should change the SELinux setting so that httpd can access tinterweb.&lt;/p&gt;&lt;p&gt;I think this is one of thise annoying SELinux bugs that no-one really understands as there's not much on google about it - however i've found loads of people moaning about it and not getting it to work. Therefore I hope this helps someone!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-8858347869578578056?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/8858347869578578056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=8858347869578578056' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/8858347869578578056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/8858347869578578056'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/08/selinux-curl-problem.html' title='SELinux CURL Problem'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-3663926981206964682</id><published>2007-08-11T02:27:00.000-07:00</published><updated>2007-08-11T02:33:26.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi search and replace'/><title type='text'>Vi Search and Replace</title><content type='html'>Sometimes when working with Linux cli, you have to edit files and make bulk changes to configuration files.&lt;br /&gt;&lt;br /&gt;I use vi as a text editor and I thought I'd add this example fo search and replace using vi;&lt;br /&gt;&lt;br /&gt;:1,$s/sometexttoreplace/newtext&lt;br /&gt;&lt;br /&gt;In the above example, 1 represents the first line, $s represents the end line.&lt;br /&gt;&lt;br /&gt;One important thing to note is that you need to escape any characters like dots, for example;&lt;br /&gt;&lt;br /&gt;:1,$s/suffolkweb-design\.co\.uk/suffolk-web-design\.com&lt;br /&gt;&lt;br /&gt;would be the way you change domain names from suffolk-web-design.co.uk to suffolk-web-design.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-3663926981206964682?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/3663926981206964682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=3663926981206964682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3663926981206964682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3663926981206964682'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/08/vi-search-and-replace.html' title='Vi Search and Replace'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-5067410018916797667</id><published>2007-08-08T03:40:00.000-07:00</published><updated>2007-08-08T03:50:47.077-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fedora Startup Scripts init.d ntsysv'/><title type='text'>Fedora Startup Scripts</title><content type='html'>I have a fedora core box which needs to run different scripts on startup to connect to other boxes on the network.&lt;br /&gt;&lt;br /&gt;After a bit of fiddling around, I found what appears to be the best solution for me, using ntsysv and init.d.  Here's how it's done;&lt;br /&gt;&lt;br /&gt;1.) make a new file in the /etc/init.d/ directory&lt;br /&gt;2.) add your script to this file with the following lines at the top;&lt;br /&gt;#!/bin/bash&lt;br /&gt;# chkconfig: 345 85 15&lt;br /&gt;# description: of your file&lt;br /&gt;&lt;br /&gt;3.) enter this in the shell;&lt;br /&gt;chkconfig --add startup_filename&lt;br /&gt;&lt;br /&gt;4.) type ntsysv - your startup script should now be in the list, checked and ready for action!&lt;br /&gt;&lt;br /&gt;It's that easy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-5067410018916797667?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/5067410018916797667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=5067410018916797667' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/5067410018916797667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/5067410018916797667'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/08/fedora-startup-scripts.html' title='Fedora Startup Scripts'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-2941531303319558523</id><published>2007-08-03T05:20:00.000-07:00</published><updated>2007-08-03T05:33:04.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache ProxyPass IIS Wildcard'/><title type='text'>Apache Proxypass and IIS</title><content type='html'>Once upon a time, in a lad far far away... Mr Fletcher had two demonstration servers on his local network, an excellent Linux box running php/apache, also running some funky wildcard DNS Shizzle and the other box running Windows 2003 &amp; IIS.&lt;br /&gt;&lt;br /&gt;However, he only had one IP address could only demonstrate one server at any given time, until he discovered Apache's ProxyPass with added wildcards.&lt;br /&gt;&lt;br /&gt;Here's the apache Virtual Host;&lt;br /&gt;&lt;br /&gt;&lt;virtualhost&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;ServerName ms.mysite.com&lt;br /&gt;ProxyPreserveHost On&lt;br /&gt;ProxyRequests Off&lt;br /&gt;ServerAlias *.ms.mysite.com&lt;br /&gt;ProxyPass / &lt;a href="http://192.168.1.2/"&gt;http://192.168.1.2/&lt;/a&gt;&lt;br /&gt;ProxyPassReverse / &lt;a href="http://192.168.1.2/"&gt;http://192.168.1.2/&lt;/a&gt;&lt;br /&gt;&lt;/virtualhost&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;&lt;br /&gt;In this example, all subdomains of ms.mysite.com now forward onto the IIS server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-2941531303319558523?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/2941531303319558523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=2941531303319558523' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/2941531303319558523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/2941531303319558523'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/08/apache-proxypass-and-iis.html' title='Apache Proxypass and IIS'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-1804653010766210357</id><published>2007-07-27T01:40:00.000-07:00</published><updated>2007-07-27T01:48:16.024-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MYSQL time date minutes TIMESTAMPDIFF'/><title type='text'>MySQL time date difference in Minutes</title><content type='html'>Here's a handy MySQL function from finding the number of minutes since a given date.  In the following example, there is a table called message with 3 colums - id, pubdate and message;&lt;br /&gt;&lt;br /&gt;SELECT TIMESTAMPDIFF(MINUTE, pubdate, now()), id, message from message;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Messages from the last 5 minutes&lt;/h2&gt;&lt;br /&gt;You can get all messages from the last 5 minutes with the following example;&lt;br /&gt;&lt;br /&gt;SELECT TIMESTAMPDIFF(MINUTE, pubdate, now()), id, message from message where (TIMESTAMPDIFF(MINUTE, pubdate, now()) &lt; 5);&lt;br /&gt;&lt;br /&gt;This method is quite handy for systems displaying live data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-1804653010766210357?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/1804653010766210357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=1804653010766210357' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1804653010766210357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1804653010766210357'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/07/mysql-time-date-difference-in-minutes.html' title='MySQL time date difference in Minutes'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-1220033718000631157</id><published>2007-07-26T03:09:00.000-07:00</published><updated>2007-07-26T03:11:39.125-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php ip address'/><title type='text'>PHP IP Addresses</title><content type='html'>I keep finding naffexample of how to find someones ip address.&lt;br /&gt;&lt;br /&gt;However, I stumbled across this solution;&lt;br /&gt;&lt;br /&gt;$ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];&lt;br /&gt;&lt;br /&gt;echo($ip);&lt;br /&gt;&lt;br /&gt;It returns the ip address, even if somone is behind a proxy and appears to always return an ip address.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-1220033718000631157?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/1220033718000631157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=1220033718000631157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1220033718000631157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1220033718000631157'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/07/php-ip-addresses.html' title='PHP IP Addresses'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-3229826494223203008</id><published>2007-07-23T06:38:00.000-07:00</published><updated>2007-07-23T06:53:17.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Contribute port settings firewall'/><title type='text'>Adobe Contribute Port Settings</title><content type='html'>Macromedia's Contribute is essentially an ftp program made to help users with limited knowledge of web design to make new and edit existing pages to their website.&lt;br /&gt;&lt;br /&gt;Sounds Great? &lt;br /&gt;&lt;br /&gt;Well for those of you who have had to make contribute for commercial environments and have encountered networks with a firewall - things aren't always straight forward.  Lots of business networks are so secure - they prohibit contribute from accessing the internet at all.&lt;br /&gt;&lt;br /&gt;This is very important to check out your clients network before building a contribute site.&lt;br /&gt;&lt;br /&gt;Therefore You need to make sure the following ports are open on your clients pc/network;&lt;br /&gt;&lt;br /&gt;Ports;&lt;br /&gt;21&lt;br /&gt;80&lt;br /&gt;8100&lt;br /&gt;8900&lt;br /&gt;&lt;br /&gt;To test this, I would recommend asking your client to download a copy of contribute from adobe and then ask them to connect to an ftp server test page which you have setup.&lt;br /&gt;&lt;br /&gt;If you don't do this test, you run the risk of having to make a basic CMS very quickly for your client.&lt;br /&gt;&lt;br /&gt;If you need a CMS very quickly and are reading this article,  please feel free contact me - I have experience with having to make very quick, good CMS's for just this purpose!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.suffolk-web-design.co.uk/site/60/get_a_free_quote/"&gt;http://www.suffolk-web-design.co.uk/site/60/get_a_free_quote/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-3229826494223203008?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/3229826494223203008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=3229826494223203008' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3229826494223203008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/3229826494223203008'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/07/adobe-contribute-port-settings.html' title='Adobe Contribute Port Settings'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-1628829990742346277</id><published>2007-07-21T06:16:00.000-07:00</published><updated>2007-07-21T06:25:43.495-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google indexed pages'/><title type='text'>Your Indexed Pages on Google</title><content type='html'>Have you ever wanted to know what google sees when it looks at your site? Here's a search command you can use which should help.&lt;br /&gt;&lt;br /&gt;If you want to see which pages are indexed, you can run the following command as a google search;&lt;br /&gt;&lt;br /&gt;site:suffolk-web-design.co.uk - asdf&lt;br /&gt;&lt;br /&gt;The "site:" part of the search means use this site, the "-asdf" part means don't use any keywords. the result is that google pulls back all pages it has indxed on your site.&lt;br /&gt;&lt;br /&gt;This command should give you a list of all of the pages google has indexed on your site. In my experience, the most popular pages appear near the top of the search results.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.co.uk/search?hl=en&amp;q=site%3Asuffolk-web-design.co.uk+-asdf&amp;amp;meta=" target="_blank"&gt;You can click here to see the search in action&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-1628829990742346277?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/1628829990742346277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=1628829990742346277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1628829990742346277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/1628829990742346277'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/07/your-indexed-pages-on-google.html' title='Your Indexed Pages on Google'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-6942126012090872031</id><published>2007-06-06T05:27:00.000-07:00</published><updated>2007-07-12T01:22:01.810-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php png image resizing zlib error WP-SimpleViewer-Gallery'/><title type='text'>gd-png: fatal libpng error: zlib error</title><content type='html'>When upgrading php from php4 to php5, the following error occurs;&lt;br /&gt;&lt;br /&gt;gd-png: fatal libpng error: zlib error&lt;br /&gt;&lt;br /&gt;I've found the solution - so I thought i'd post it here to help others.&lt;br /&gt;&lt;br /&gt;In php5, the quality range changes for imagePNG from 0-99 to 0-9. therefore you need to change your code to relect this, e.g.&lt;br /&gt;&lt;br /&gt;imagePNG('','', 9);&lt;br /&gt;&lt;br /&gt;(instead of imagePNG('','',90)) - I divided the quality value by 10 and then round or floor the value accordingly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-6942126012090872031?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/6942126012090872031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=6942126012090872031' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/6942126012090872031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/6942126012090872031'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/06/gd-png-fatal-libpng-error-zlib-error.html' title='gd-png: fatal libpng error: zlib error'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-2859756767661794794</id><published>2007-06-05T13:27:00.000-07:00</published><updated>2007-06-05T13:32:12.208-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux password passwd change'/><title type='text'>Change Password in Linux</title><content type='html'>The password for linux can be changes using the &lt;strong&gt;passwd&lt;/strong&gt; command.  Here are a few basic examples of how to change the password from the command line;&lt;br /&gt;&lt;br /&gt;passwd   Change your own password.&lt;br /&gt;passwd ftpuser Change ftpusers' password.&lt;br /&gt;passwd -d ftpuser   Delete ftpusers' password.&lt;br /&gt;&lt;br /&gt;Short but sweet - i'd thought i'd add this as I always forget things like this!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-2859756767661794794?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/2859756767661794794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=2859756767661794794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/2859756767661794794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/2859756767661794794'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/06/change-password-in-linux.html' title='Change Password in Linux'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-4680496043300144614</id><published>2007-05-31T01:47:00.000-07:00</published><updated>2007-05-31T01:48:40.347-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='htaccess apache restricting'/><title type='text'>Apache Restricting using htaccess</title><content type='html'>Have you ever made a site you only want a few people to access?  Perhaps you have a competitor who keeps viewing your website?&lt;br /&gt;&lt;br /&gt;Well, there's several easy ways in apache to do this using the htaccess file and here they are;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Restrict Access by IP Address&lt;/h2&gt;&lt;br /&gt;Ok, there are several commands to remember when restricting by IP address. The first is that everything needs to go in limit tags;&lt;br /&gt;&lt;p&gt;&amp;lt;limit&amp;gt;&amp;lt;/limit&amp;gt;&lt;/p&gt;&lt;p&gt;Depending on the information you need you can either specify POST or GET or both as an option of the limit tag (e.g. &amp;lt;limit POST GET&amp;gt;). POST is used when getting user id's and GET is used to get information like hostnames and ip addresses.&lt;/p&gt;&lt;p&gt;The next useful commands are 'deny from' and 'allow from'. You can deny or allow from 'all' or from specific ip addresses or from hostnames e.g.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;limit GET&amp;gt;&lt;br /&gt;deny from all&lt;br /&gt;&amp;lt;/limit&amp;gt;&lt;/p&gt;&lt;p&gt;This means no-one has access to this site when placed in the htaccess file.&lt;/p&gt;&lt;p&gt;&amp;lt;h2&amp;gt;Useful Examples&amp;lt;/h2&amp;gt;&lt;/p&gt;&lt;p&gt;Allow only from a computer with an ip address of 192.168.1.10;&lt;/p&gt;&lt;p&gt;&amp;lt;limit GET&amp;gt;&lt;br /&gt;deny from all&lt;br /&gt;allow from 192.168.1.10&lt;br /&gt;&amp;lt;/limit&amp;gt;&lt;/p&gt;&lt;p&gt;Allow only from computers with an ip address in the range of 192.168.1.*&lt;/p&gt;&lt;p&gt;&amp;lt;limit GET&amp;gt;&lt;br /&gt;deny from all&lt;br /&gt;allow from 192.168.1&lt;br /&gt;&amp;lt;/limit&amp;gt;&lt;/p&gt;&lt;p&gt;Allow everyone apart from computers with hostname google.co.uk or ipaddress of 192.168.1.10&lt;/p&gt;&lt;p&gt;&amp;lt;limit GET&amp;gt;&lt;br /&gt;allow from all&lt;br /&gt;deny from google.co.uk&lt;br /&gt;deny from 192.168.1.10&lt;br /&gt;&amp;lt;/limit&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.suffolk-web-design.co.uk/"&gt;www.suffolk-web-design.co.uk/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-4680496043300144614?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/4680496043300144614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=4680496043300144614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/4680496043300144614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/4680496043300144614'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/05/apache-restricting-using-htaccess.html' title='Apache Restricting using htaccess'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-872374623232089703.post-598594175648731418</id><published>2007-05-30T04:16:00.000-07:00</published><updated>2007-05-30T04:26:34.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Suffolk Web Design Welcome'/><title type='text'>The Suffolk Web Design Blog</title><content type='html'>Welcome to the first entry of the Suffolk Web Design Blog.&lt;br /&gt;&lt;br /&gt;My name is Neil Fletcher and I own &lt;a href="http://www.suffolk-web-design.co.uk"&gt;www.suffolk-web-design.co.uk&lt;/a&gt; - a website which I use for my sole trading business Clever SEO and In case you haven't realised (by the name of my website), I'm based in Suffolk.&lt;br /&gt;&lt;br /&gt;This Blog is intended to help designers and developers alike.  I'll be posting code and tips on how to run linux webservers, partly for my own benefit, but also for anyone who happens across this blog.&lt;br /&gt;&lt;br /&gt;If you have any questions, please feel free to &lt;a href="http://www.suffolk-web-design.co.uk/site/55/contact-us/"&gt;&lt;strong&gt;contact me here&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/872374623232089703-598594175648731418?l=blog.suffolk-web-design.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.suffolk-web-design.co.uk/feeds/598594175648731418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=872374623232089703&amp;postID=598594175648731418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/598594175648731418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/872374623232089703/posts/default/598594175648731418'/><link rel='alternate' type='text/html' href='http://blog.suffolk-web-design.co.uk/2007/05/suffolk-web-design-blog.html' title='The Suffolk Web Design Blog'/><author><name>Fletch</name><uri>http://www.blogger.com/profile/11495707699470430537</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
