<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CUYFRnszcCp7ImA9WxBUFE8.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937</id><updated>2010-03-01T16:58:37.588+11:00</updated><title>Code-Tips.com</title><subtitle type="html">Web Development, PHP, Web Application Development, HTML, CSS, JavaScript, ASP.NET, XML, VB, .NET Framework, Internet Marketing and SEO</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.code-tips.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.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><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Code-tipscom-WebDevelopmentProgramming" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="code-tipscom-webdevelopmentprogramming" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0EDSXgycCp7ImA9WxBQF08.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-3314072593031254689</id><published>2010-01-17T22:55:00.003+11:00</published><updated>2010-01-17T23:01:18.698+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-17T23:01:18.698+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mod_rewrite" /><category scheme="http://www.blogger.com/atom/ns#" term="Tips and Tricks" /><category scheme="http://www.blogger.com/atom/ns#" term=".htaccess" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Apache" /><title>Apache mod_rewrite (.htaccess) - Rewrite or Redirect Request URLs if page not found, or no www</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BzG3MQyKunDYbtEFnHD_foEhYy8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BzG3MQyKunDYbtEFnHD_foEhYy8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BzG3MQyKunDYbtEFnHD_foEhYy8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BzG3MQyKunDYbtEFnHD_foEhYy8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Apache mod_rewrite (.htaccess) - Request rewrites &amp;amp; redirects to site root if page or directory not found

There are many scenarios where mod_rewrite can be used on a web server to improve usability, optimise for search engines, perform redirects based of specific criteria and much more.  The following are some examples of how to configure .htaccess files on an Apache web server to alter requests and actions taken by the web server, including configuring the server to redirect to the site root (or other specified page) if a page or directory is not found, configuring the server to convert components of a http request into query string parameters to be passed to a specific page/script for processing and display (without altering the original address entered into the browser).  Other examples demonstrate common uses of mod rewrite such as configuring conditions and rules to ensure that the mod_rewrite engine affects requests that contain specific criteria, including working with, and handling multiple domain names using .htaccess and mod_rewrite.  This allows you to configure redirects or rewrites based on the domain or subdomain entered such as forwarding "host.com" to "www.host.com" if the www was not included in the request.  Some explanations of the special characters used to build the expressions used in conditions and rules are also explained.

Apache mod_rewrite Examples:

Redirect to site root if page not foundConvert part of a request to Query String Parameters to pass to a different page on the serverRedirect to include www (HTTP/1.1 301 Moved Permanently)
mod_rewrite - Background &amp;amp; General Information

Operators:
&gt; : is lexically greater
= : is lexically equal
!  : not

CondPatterns
-d : is a Directory
-f  : is a regular file
-s : is a regular file with size
-l : is a symbolic link
-F : is existing file via subrequest
-U : is existing URL via subrequest

eg. 
RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d

The above...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/pntUO9EAlIo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/3314072593031254689/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2010/01/apache-modrewrite-htaccess-rewrite-or.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/3314072593031254689?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/3314072593031254689?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2010/01/apache-modrewrite-htaccess-rewrite-or.html" title="Apache mod_rewrite (.htaccess) - Rewrite or Redirect Request URLs if page not found, or no www" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUcGQH0_eyp7ImA9WxBQEE8.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-5095796821724998994</id><published>2010-01-09T15:44:00.014+11:00</published><updated>2010-01-09T18:43:41.343+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-09T18:43:41.343+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RSS Generator" /><category scheme="http://www.blogger.com/atom/ns#" term="Php" /><category scheme="http://www.blogger.com/atom/ns#" term="Php RSS 2 Writer" /><category scheme="http://www.blogger.com/atom/ns#" term="RSS Writer" /><category scheme="http://www.blogger.com/atom/ns#" term="RSS" /><category scheme="http://www.blogger.com/atom/ns#" term="Free Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Free Php Scripts" /><category scheme="http://www.blogger.com/atom/ns#" term="XMLWriter" /><title>Php RSS2Writer (v2.0) - Generate RSS 2.0 Feed - Usage Instructions &amp; Download</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kMTjvzW2GnB_6dRRxbFX5QFmn5Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kMTjvzW2GnB_6dRRxbFX5QFmn5Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kMTjvzW2GnB_6dRRxbFX5QFmn5Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kMTjvzW2GnB_6dRRxbFX5QFmn5Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Generate RSS 2.0 Compatible feeds in Php, using the Free Php RSS2Writer Class.

The Php RSS2Writer class has been updated.  Version 2.0 includes improved usability when using the RSS2Writer class to generate an RSS Feed from website or database content, as well as additional functionality required to generate valid RSS 2.0 Feeds.

Download Php RSS2Writer - Version 2.0
The download page also provides some additional information about the class and sample controller.









Details of the Php RSS 2.0 Writer Package:

RSS2Writer.php
The package incudes the RSS2Writer class file that contains the functions and variables required to produce a valid RSS 2.0 compatible feed using Php.

sampleController.php
The sample controller script provides examples for using the class and functions, including additional information about optional elements that can be added to a feed channel or individual item.  Basic instructions are provided in the sample controller to help get started using the class.


Php RSS2Writer Usage
The following are instructions with examples for using the Php RSS2Writer class to generate RSS 2.0 compatible feeds using Php.  The data added to the feed could be from a website, database, etc. that is accessible using a Php script.

Download the PhpRSS2Writer Package and copy the RSS2Writer.php file to your web server.


In the Php script that will serve the RSS Feed:

1. Include the RSS2Writer Class:

require_once("RSS2Writer.php"); 
//or
//include("RSS2Writer.php");


2. Initiate the an RSS2Writer Object:
When the RSS2Writer Object is constructed, the Title, Description and link for the Feed channel are provided as parameters when constructing the object.

$rss2_writer = new RSS2Writer('Feed Title', 'Feed Description', 'feed url');


3. Add additional information to the Channel (optional ) such as categories, copyright information, or the generator used to generate the RSS feed content.

//Add channel data to the feed 
$rss2_writer-&gt;addCategory("RSS...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/09JZe9bKobM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/5095796821724998994/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2010/01/php-rss2writer-v20-generate-rss-20-feed.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/5095796821724998994?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/5095796821724998994?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2010/01/php-rss2writer-v20-generate-rss-20-feed.html" title="Php RSS2Writer (v2.0) - Generate RSS 2.0 Feed - Usage Instructions &amp; Download" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_JM4uDCJg_GI/S0gZ6x-_e1I/AAAAAAAAALU/VDYcMwg6eo4/s72-c/rss.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;AkINR3YzeSp7ImA9WxBRF0g.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-7918651898794773433</id><published>2010-01-06T17:12:00.005+11:00</published><updated>2010-01-06T17:16:36.881+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-06T17:16:36.881+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Date Time" /><category scheme="http://www.blogger.com/atom/ns#" term="Php" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Resources" /><category scheme="http://www.blogger.com/atom/ns#" term="Date Difference" /><category scheme="http://www.blogger.com/atom/ns#" term="References" /><category scheme="http://www.blogger.com/atom/ns#" term="Date calculation" /><title>Php Date Time - 7 Methods to Calculate the Difference between 2 dates</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RjpuLpcQMrVZS5MRhMTzhxayBSw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RjpuLpcQMrVZS5MRhMTzhxayBSw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RjpuLpcQMrVZS5MRhMTzhxayBSw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RjpuLpcQMrVZS5MRhMTzhxayBSw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Calculate the difference between two Dates (and time) using Php. The following page provides 7 methods for calculating the difference between two dates using Php, as well as some additional related resources to help with Date/Time calculations and manipulation using Php.

Depending on the type of server running Php (Windows/IIS/Apache, Unix/Apache), standard date methods provided by Php can sometimes produce inconsitent or incorrect results. The various methods provided on the page below cater for different scenarios where date/time calculations need to be made using Php to calculate the difference between dates.

See Php Date Time - 7 Methods to Calculate the Difference between 2 dates for details.&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/VkbEWVJ-SZ4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/7918651898794773433/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2010/01/php-date-time-7-methods-to-calculate.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/7918651898794773433?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/7918651898794773433?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2010/01/php-date-time-7-methods-to-calculate.html" title="Php Date Time - 7 Methods to Calculate the Difference between 2 dates" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0ACRX89fCp7ImA9WxBRE04.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-7953424219487826211</id><published>2009-12-23T20:23:00.004+11:00</published><updated>2010-01-01T20:56:04.164+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-01T20:56:04.164+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Improve website performance" /><category scheme="http://www.blogger.com/atom/ns#" term="Tips and Tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="Website Performance" /><category scheme="http://www.blogger.com/atom/ns#" term="Performance Tips" /><title>Improve Performance for Websites with a Database Back-end &amp; Dynamic Content</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dr3yWIltUrvTEcKuIk6R3bR3_Gk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dr3yWIltUrvTEcKuIk6R3bR3_Gk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dr3yWIltUrvTEcKuIk6R3bR3_Gk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dr3yWIltUrvTEcKuIk6R3bR3_Gk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Improve Performance for Websites with a Database Back-end &amp;amp; Dynamic Content

How to improve the performance of web pages, and the overall performance of a website by minimise front-end processing and additional server/client DNS requests required to fully load each page.

Identify the areas/scripts for a website which are frequently usedIdentify scripts which take the longest time to process or loadIdentify DNS Requests that can be removed from front-end pagesCreate scripts to perform background processing, then store website content (HTML) in a database table.Replace code in scripts to retrieve the pre-formatted content from a database 
The techniques described below focus on reducing the processing requirements and DNS requests required to generate and load a page for both the server-side and client-side aspects of a web application or website.  The steps explain how to identify, and reduce the amount of processing required by the front-end server of a website by performing background tasks to complete processing which would usually take a long time to complete.  This includes identifying scripts/pages which are frequently used, and considering reducing the loading time by retrieving pre-prepared html from a database instead of processing and displaying from the front-end script.  The background tasks will periodically execute scripts which will perform the processing required to generate and store the pre-formatted html in a database table ready for retrieval when loading the web page.

The techniques explained below will be most effective when the databases for a website are hosted on the same server or farm.

 1. Identify the areas/scripts for a website which are frequently used Identifying the areas of a website which a re most used allows you to prioritise pages in an order which development time will be most beneficial.  Spending a lot of time optimising scripts that are not frequently used on the website is not good use of your time.

Website Traffic...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/etk5d70-kk8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/7953424219487826211/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/12/improve-performance-for-websites-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/7953424219487826211?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/7953424219487826211?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/12/improve-performance-for-websites-with.html" title="Improve Performance for Websites with a Database Back-end &amp; Dynamic Content" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEACR3Y7eip7ImA9WxBSFE0.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-3204478528948480357</id><published>2009-12-19T01:54:00.012+11:00</published><updated>2009-12-22T00:39:26.802+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-22T00:39:26.802+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Keyword Research" /><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="Web Marketing" /><category scheme="http://www.blogger.com/atom/ns#" term="Key Phrase Targeting" /><category scheme="http://www.blogger.com/atom/ns#" term="Search Engine Optimisation" /><title>SEO Tips: Keyword Research, Target Key Phrases, Site Navigation</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c_fof6dRyr65n88OLRCJYr3C-A0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c_fof6dRyr65n88OLRCJYr3C-A0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c_fof6dRyr65n88OLRCJYr3C-A0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c_fof6dRyr65n88OLRCJYr3C-A0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;SEO Tips for Website &amp;amp; Database Application Development

I wanted to share a few of my experiences with developing websites and database applications in relation to optimising the structure, navigation, layout and content of websites to help increase rankings in popular search engines, including Google, Bing and Yahoo.  Some key areas covered include designing and developing a website to have a logical page hierarchy and navigation paths.  I have developed a range of websites both static and interactive with a database or sometimes file system back-end to enable content to be published and maintained dynamically.

The Search Engine Optimisation techniques described below are based on my own personal experiences with various methods of building a dynamic website.  Any concepts or conclusions reached are a result of my own research, experimentation and opinion.  As there are numerous factors involved when Search Engines rank a site or page, there may be factors other than the techniques which I perceived to be the reason for an increase in search engine ranking.  If you have a different opinion, or would like to discuss the techniques below, feel free to post a reply to the thread.

Keyword Research &amp;amp; Targeting Optimising the content on your site by targeting specific keywords and key phrases is a common and very effective technique to increase traffic to your site. The following are some thing to consider when optimising content and pages to target specific keywords and key phrases.

Target Achievable Key Phrases

Online/Web Marketing is a competitive industry.  Generally, the more generic and short a key phrase becomes, the more competition you will face in order to achieve top 10 results in search engines with the key phrase.  You are much more likely to achieve top 10 results for targeted key phrases if they are specific to the overall topic of content on a page.  You should try to write about something specific that also applies to a general category.  ...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/keV3t61FXAc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/3204478528948480357/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/12/seo-tips-for-website-database.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/3204478528948480357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/3204478528948480357?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/12/seo-tips-for-website-database.html" title="SEO Tips: Keyword Research, Target Key Phrases, Site Navigation" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkcGRXozfSp7ImA9WxBRE0k.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-2857635551922244395</id><published>2009-12-16T20:12:00.000+11:00</published><updated>2010-01-01T21:00:24.485+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-01T21:00:24.485+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Affiliates" /><title>Affiliates</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JiZqsjGHOCuvIbpVErCBW-F54kM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JiZqsjGHOCuvIbpVErCBW-F54kM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JiZqsjGHOCuvIbpVErCBW-F54kM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JiZqsjGHOCuvIbpVErCBW-F54kM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Addon Solutions
Website Design and Development firm providing website designing services with hire dedicated web developers / programmers for Php, Asp.Net, Ajax, Java, Joomla, Drupal, WordPress, Magento, OsCommerce, Zencart, Mobile Application Developer, iPhone Application Developer, Android Application Developer / Programmer and SEO/SEM


WebmasterHub.net
Tools and resources for web development / programming, graphic and web design web marketing (SEO) and SharePoint.  WebmasterHub.net provide a free Bulk Ping service to submit multiple sites/blogs to over 100 directories for free.  Join the WebmasterHub.net community for free use the Bulk Pinger, WebmasterHub.net Forums or submit a new resource to the resource directory.


Web-Resource.org
SharePoint &amp;amp; InfoPath, Web Development &amp;amp; Programming and SEO (Search Engine Optimisation) / Web Marketing resources.  SharePoint forums and popular blogs, Programming forums and blogs, SEO forums and communities.  Free Php Scripts, free SharePoint Web Parts.


SharePoint Development &amp;amp; Administration (Blog)
SharePoint &amp;amp; InfoPath Form development, integration and management tips and tutorials,  SharePoint Administration tutorials, SharePoint Designer Tutorials, Workflow development tips and tutorials.  Learn how to develop and customise SharePoint environments.&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/ZCLcPAROw8I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/2857635551922244395/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/09/affiliates.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/2857635551922244395?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/2857635551922244395?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/09/affiliates.html" title="Affiliates" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0YCQHk5eyp7ImA9WxBRGUw.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-6744808069824956271</id><published>2009-12-16T00:36:00.003+11:00</published><updated>2010-01-08T11:39:21.723+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-08T11:39:21.723+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Administration" /><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Free Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoPath" /><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting" /><category scheme="http://www.blogger.com/atom/ns#" term="Resources" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Resources" /><category scheme="http://www.blogger.com/atom/ns#" term="References" /><title>Web Programming, SEO &amp; SharePoint Resources</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ocubZ4D8RjTFPcDVyOqU0PAXFO8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ocubZ4D8RjTFPcDVyOqU0PAXFO8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ocubZ4D8RjTFPcDVyOqU0PAXFO8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ocubZ4D8RjTFPcDVyOqU0PAXFO8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Web-Resource.org - SharePoint, Web Programming &amp;amp; SEO Resources  Web-resource.org provide a range of resources from around the web for Web Development &amp;amp; Programming, SharePoint &amp;amp; InfoPath Development and Search Engine Optimisation.  Resources have been hand selected by the team at Web-Resource.org, and suggested by users. 

    SharePoint &amp;amp; InfoPath Resources   A range of tools and resources are provided by Web-Resource.org for Administering, Designing, Customising and Developing a SharePoint environment.  Resources include a range of articles with tips, how to's, tutorials, third party utilities for administering and developing SharePoint.  Tutorials are also available to help with InfoPath form development and integration with SharePoint.     SharePoint Design &amp;amp; Customisation resources include tutorials for creating and customising Data View Web Parts to display data from SharePoint lists which is formatted based on metadata values for each list item.  This includes the ability to format rows of a task list for example, to set the background or text colour of the task item to a color which represents the priority or amount of time until due.  The articles specifically describe how to format tasks based on the due date and other fields.  An overdue item can be formatted with a red background and bold text.  Items which are due within three days are formatted orange, 1 week: yellow, 1 month: green.  When the conditional formatting is combined with sorting and grouping, a Data View can display a large amount of information in a logical and readable format.  
   SharePoint Administration resources include tips and techniques for configuring SharePoint environments of various sizes, migrating content and configuration databases, tips and techniques to help when troubleshooting errors and issues with a SharePoint environment and much more.  Other administrative tips and resources include configuring profile imports for multiple Active Directory...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/UF6pzyHoX_I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/6744808069824956271/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/12/web-programming-seo-sharepoint.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/6744808069824956271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/6744808069824956271?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/12/web-programming-seo-sharepoint.html" title="Web Programming, SEO &amp; SharePoint Resources" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkYFQn8-eip7ImA9WxNQFko.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-3583846769854706585</id><published>2009-09-22T23:31:00.000+10:00</published><updated>2009-09-23T11:41:53.152+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T11:41:53.152+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VBScript" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Xml" /><category scheme="http://www.blogger.com/atom/ns#" term="JScript" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoPath" /><category scheme="http://www.blogger.com/atom/ns#" term="Programming Tips" /><title>InfoPath Code - Loop through items in a secondary data source from a SharePoint List</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5NOStK9ZwbBejtjMVD3nS05fmTI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5NOStK9ZwbBejtjMVD3nS05fmTI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5NOStK9ZwbBejtjMVD3nS05fmTI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5NOStK9ZwbBejtjMVD3nS05fmTI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The article linked below demonstrates using JScript or VBScript, how to loop through items in a secondary data source until one is found which either contains a specific value, or has a specific value for a known attribute.



InfoPath - Update Repeating Elements in a Secondary Data Source



For example, when populating a CAML template with data from an InfoPath form so that it can be submitted to SharePoint, each field in the CAML template is a "field" element, which uses the value of the "name" attribute to determine which column/field in the SharePoint list to map to. The function (JScript or VBScript) in the linked article loops through each field element in the CAML XML data source until it finds the required field, by testing if the name attribute matches the name of the field/column to map data to. it then sets the value of the field element to the value of a field in the main data source of the InfoPath form.



Discussion relating to article include a solution to a scenario which required using the code provided in the article to loop through items in an InfoPath Form's secondary data source from a SharePoint list until the an item containing a specific value in the text column was found. 



If found, the code was then re-used to populate the CAML template with data required to update the SharePoint list item. If the item was not found, a separate CAML template is populated with the data required to create a new SharePoint list item.



When the form is submitted, rules are configured with conditions to test if a new item is to be created in the SharePoint list, or updated if the item already exists. Two separate CAML templates are used here which required a separate data connection to submit the data to the SharePoint list using the Lists Web Service (updateListItem method) of the SharePoint site. Only one of the two submit data connections are executed to create or update a SharePoint list item as required.



See InfoPath Code&amp;nbsp;-&amp;nbsp;Loop...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/7O7X2_McOUE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/3583846769854706585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/09/infopath-code-loop-through-items-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/3583846769854706585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/3583846769854706585?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/09/infopath-code-loop-through-items-in.html" title="InfoPath Code - Loop through items in a secondary data source from a SharePoint List" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0cBQXczeip7ImA9WxNRE0w.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-8471471539390426164</id><published>2009-09-04T22:27:00.001+10:00</published><updated>2009-09-07T19:17:30.982+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T19:17:30.982+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="Disaster Recovery" /><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><category scheme="http://www.blogger.com/atom/ns#" term="PhpMyadmin" /><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting" /><category scheme="http://www.blogger.com/atom/ns#" term="PhpBB3" /><title>Fix Corrupt Table in PhpBB3 MySQL Database - Grant Administrator/Founder using PhpMyAdmin</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ikUPfjc6162SSp4ctmB1YA0lLqI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ikUPfjc6162SSp4ctmB1YA0lLqI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ikUPfjc6162SSp4ctmB1YA0lLqI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ikUPfjc6162SSp4ctmB1YA0lLqI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;How to fix corrupt table in PhpBB3 Database using PhpMyAdmin (phpbb_users table corrupt in PhpBB3 forum).How to add a forum administrator/founder using PhpMyAdmin. PhpBB3 is used for a forum application. The forums were all working fine until I started receiving the following SQL error when trying to access the forum website:

Can't open file: 'phpbb_users.MYI'. (errno: 145) [1016]

The users table in the database had become corrupt or deadlocked. When looking at the database tables used by the PhpBB3 forums via PhpMyAdmin, I noticed that the "phpbb_users" table had an error number (145) when trying to retrieve data about the table, and on the summary page which displays all tables in the selected database the phpbb_users table status was "in use".
Important: The following was my solution to the unknown problem which caused the database to become corrupt. If you are experiencing similar problems or are receiving the same error message (SQL Error 1016 Can't open file: 'phpbb_users.MYI'. (errno: 145) [1016] ), there are a number of different possiblities which may have caused the corruption. Also, the extent of
damage to the database will also determine the chance of PhpMyAdmin or similar being able to repair the table without affecting the overall functionality of the application or database. In some cases, you won't be able to repair the damaged table, and as a result will be required to retore the entire database from a working backup in order to have the forums functioning again.  
Please understand that the steps I have taken to solve this problem may not work in different situations or server environments. The steps were successful in this specific scenario, but do risk causing more problems or corruption to the database particularly if the underlying cause of the initial database corruption still exists.  Continue at your own risk.

If possible, export as much of the database as possible (all tables except the corrupted) prior to performing any repairs on the...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/ANy0oCZGalE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/8471471539390426164/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/09/fix-corrupt-table-in-phpbb3-mysql.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/8471471539390426164?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/8471471539390426164?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/09/fix-corrupt-table-in-phpbb3-mysql.html" title="Fix Corrupt Table in PhpBB3 MySQL Database - Grant Administrator/Founder using PhpMyAdmin" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEIEQXgzeip7ImA9WxBSFkk.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-6763063397827575820</id><published>2009-08-08T12:17:00.005+10:00</published><updated>2009-12-24T20:21:40.682+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T20:21:40.682+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Forms" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoPath" /><category scheme="http://www.blogger.com/atom/ns#" term="Programming Tips" /><title>InfoPath - Programming Tips - InfoPath Form Development</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y59GNL8CdvKMfAN-4G3Lq7AvdhA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y59GNL8CdvKMfAN-4G3Lq7AvdhA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y59GNL8CdvKMfAN-4G3Lq7AvdhA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y59GNL8CdvKMfAN-4G3Lq7AvdhA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;When should code be used in an InfoPath form and when should it be avoided?

There is no simple answer to this question, as it comes down to a matter of personal preference. This article is aimed at reducing the development time for InfoPath forms of various scales. The following are some tips to help you make the right decision.

Firstly, I should note that InfoPath is a great tool for creating electronic forms, as many features are provided to including data connections to external sources (Database, SharePoint, etc.), data validation and conditional formatting which allow complex forms to be created and submitted without using any code.

I my opinion, as an InfoPath form becomes more complex the efficiency of the form's development is reduced when avoiding using code. This is due to the amount of mouse clicking required to set default values, create rules and apply formatting conditions to individual elements in a data source, or controls on the form template. If code is not a strength and you don't mind a bit of clicking, then this probably isn't a bad way to go as it does have a major benefit which is often overlooked: The Logic Inspector. If all, or most form functionality can be created without using code, the Logic Inspector will reflect the amount of detail put into the form's design as well as giving an overview of any functions if code is used. It allows you to see at a glance, as well as print details of any validation, field calculations, rules or programming used across the entire form.

Code is Reusable
InfoPath form code can be written to allow reuse in multiple forms which may have completely different requirements for functionality and layout. Developing to enable code reuse will prove to be a significant benefit to any developer. Having access to code that you know that works as well as an intimate understanding of how it works will save a many hours of development, as well as providing building blocks for further development.

It will take...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/iIcFc_NE8X4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/6763063397827575820/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/08/infopath-programming-tips-infopath-form.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/6763063397827575820?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/6763063397827575820?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/08/infopath-programming-tips-infopath-form.html" title="InfoPath - Programming Tips - InfoPath Form Development" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;AkINQ3Y9cSp7ImA9WxNRFEw.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-4973849560928229342</id><published>2009-08-06T22:28:00.001+10:00</published><updated>2009-09-09T00:03:12.869+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-09T00:03:12.869+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Bulk Submit" /><category scheme="http://www.blogger.com/atom/ns#" term="Free Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Resources" /><title>Php XML-RPC Bulk Ping Sites and Directories - FREE SEO</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cLokVUIrdiYtI25_UCLoeLQnXeI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cLokVUIrdiYtI25_UCLoeLQnXeI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cLokVUIrdiYtI25_UCLoeLQnXeI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cLokVUIrdiYtI25_UCLoeLQnXeI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;WebmasterHub.net - FREE SEO - Submit to Directories

Only recently launched, WebmasterHub.net provide FREE SEO including a bulk ping service to submit sites, blogs and/or RSS feeds. The bulk ping service uses XML-RPC and the weblogUpdates.ping, or weblogUpdates.extendedPing method if available. The service currently pings around 50 popular directories, but is still evolving.

See my blog post XML-RPC Blog Ping for more details of the development the bulk ping service using Php and MySQL. The free service is written in Php, and utilises the Weblog_Pinger class, which has been developed to ignore ping requests if the server has already been pinged recently (5 minutes) to help avoid being banned from submitting to a particular site or directory. Additional functionality developed includes storing and retrieving XML- RPC server and site/blog details from a database, allowing the system to evolve as well as making it easy to update or add new servers blogs and sites.

A list of the XML-RPC servers being pinged using the WebmasterHub.net bulk pinger will be published on the website soon. To suggest a new server, please send details of the server (web address and port if non- standard) using the feedback form on the site (see below for link). I will try to have any new server suggestions added within a day or two.

The service is hosted for free at WebmasterHub.net to members. Registration is quick, easy and FREE, an email address, login and password is all that's required. Please feel free to comment by providing feedback on the site ( http://www.webmasterhub.net/contact.php ), or by emailing support at support@webmasterhub.net .

WebmasterHub.net also provide a resource directory for webmasters, web developers and designers which cover many areas relating to web development (including SharePoint and InfoPath). Members can add new resources and sites to the directory, which will be listed instantly. Content is reviewed and removed if deemed inappropriate. Users can also...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/foJV1X_Z6YU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/4973849560928229342/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/08/php-xml-rpc-bulk-ping-sites-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/4973849560928229342?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/4973849560928229342?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/08/php-xml-rpc-bulk-ping-sites-and.html" title="Php XML-RPC Bulk Ping Sites and Directories - FREE SEO" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkADRXo_eCp7ImA9WxJaE0U.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-2157734585525186649</id><published>2009-08-01T18:22:00.003+10:00</published><updated>2009-08-04T20:12:54.440+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-04T20:12:54.440+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="Blog Tips" /><title>SEO Tips for Beginners</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NX6cIC-qeAObCA2l84ZMnCZ9igA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NX6cIC-qeAObCA2l84ZMnCZ9igA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NX6cIC-qeAObCA2l84ZMnCZ9igA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NX6cIC-qeAObCA2l84ZMnCZ9igA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;A few SEO (Search Engine Optimisation) tips for webmasters and bloggers. 

SEO (Search Engine Optimisation) Tips and Tools&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/ofkTiUMwVEs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/2157734585525186649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/08/seo-tips-for-beginners.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/2157734585525186649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/2157734585525186649?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/08/seo-tips-for-beginners.html" title="SEO Tips for Beginners" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEMDRns5eSp7ImA9WxBSFkk.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-4512898449047710446</id><published>2009-07-04T10:43:00.009+10:00</published><updated>2009-12-24T20:21:17.521+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T20:21:17.521+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Design" /><category scheme="http://www.blogger.com/atom/ns#" term="Free Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Resources" /><title>WebmasterHub.net - Webmasters Developers and Designers</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QGHEA7WkmHQ7b6dueLL5wMA2cTc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QGHEA7WkmHQ7b6dueLL5wMA2cTc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QGHEA7WkmHQ7b6dueLL5wMA2cTc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QGHEA7WkmHQ7b6dueLL5wMA2cTc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;WebmasterHub.net is live!! WebmasterHub.net offers a directory of resources, tools and tutorials for webmasters, web developers and designers.

Register for free to receive free Search Engine Optimisation (SEO) including access to submit a site or resource to the resource directory and the Webmasterhub.net Bulk Pinger to bulk submit your site or blog to many popular sites and directories.&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/QInN_pxLnik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/4512898449047710446/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/07/webmasterhubnet-webmasters-developmers.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/4512898449047710446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/4512898449047710446?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/07/webmasterhubnet-webmasters-developmers.html" title="WebmasterHub.net - Webmasters Developers and Designers" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUAFRXozcSp7ImA9WxJQGUk.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-4214426032922141615</id><published>2009-06-02T21:20:00.007+10:00</published><updated>2009-06-02T21:55:14.489+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-02T21:55:14.489+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Php" /><category scheme="http://www.blogger.com/atom/ns#" term="Php Sessions" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster Tools" /><title>Php: Manage session times using code - Expiration / Timeout script</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lXQiUpcVV571b6n2dz7rUItezn8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lXQiUpcVV571b6n2dz7rUItezn8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lXQiUpcVV571b6n2dz7rUItezn8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lXQiUpcVV571b6n2dz7rUItezn8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The following article demonstrates how to take control of php session times by including a php script into pages on your site. 
This can be useful if you don't have access to the php installation and the php.ini configuration file, as it gives you the flexibility to choose the length of php sessions on your site without requiring access to the server or config. 
Usage: 
When a user is successfully logged into your site, store the time that the user logged in into a session variable $_SESSION['last_use'].

The following php script session_timer.php needs to be included on all pages of the site, or at least all pages that require the user to be logged in. The session_start() function is included at the top the session_timer.php script. This means that it is not required at the top of any page which includes session_timer.php.




 session_start();
 $maxSeconds = 600;    //maximum session time in seconds

 if (isset($_SESSION['user_id']) &amp;amp;&amp;amp; isset($_SESSION['last_use']))
 {
  //Destroy if session older than maxSeconds (default 600 seconds)
  if (($_SESSION['last_use']+$maxSeconds) &amp;lt; time())
  {
   //Session has expired: Destroy
   session_destroy();
   
   //Get the current request URI
   $page = $_SERVER['REQUEST_URI'];
   
   //Reload the current page in case it has been cached
   Header ("Location: $page");
  }
  else
  {
   //Session still active and valid.
   // - Update / Refresh session
   $_SESSION['last_use'] = time();
  }
 }
 else
 {
  //Required session variables not set.  Destroy
  session_destroy();
 }



Each time the user requests a page on the site, the current time is checked against the last use time ($_SESSION['last_use']). If over 600 seconds (10 minutes) have passed, the session is destroyed and the page reloaded (in case it is cached). If less than 10 minutes have passed, the last use session variable is reset to the current time to keep the sssion going.
&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/XsMgO8D_Nh0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/4214426032922141615/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/06/php-manage-session-times-using-code.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/4214426032922141615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/4214426032922141615?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/06/php-manage-session-times-using-code.html" title="Php: Manage session times using code - Expiration / Timeout script" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;D0AHQ3Y-fip7ImA9WxJQF0s.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-6039951602077736449</id><published>2009-05-31T20:05:00.007+10:00</published><updated>2009-05-31T20:28:52.856+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-31T20:28:52.856+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><category scheme="http://www.blogger.com/atom/ns#" term="Browser Compatibility" /><title>IE / Firefox Alignment Issues Solved</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xEhZbaxK-m60WNpyUVPYtubrwak/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xEhZbaxK-m60WNpyUVPYtubrwak/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xEhZbaxK-m60WNpyUVPYtubrwak/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xEhZbaxK-m60WNpyUVPYtubrwak/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;When testing the layout of a website template that I was creating in Internet Explorer (IE) and Firefox, I had a lot of trouble getting both browsers to display the content as required.

The main content is a fixed width, which is in a panel (div) that should be centered. Setting the css property text-align to "center" works for IE, but not Firefox. After doing some research, I found that FireFox has a specific CSS attribute to center align content: "-moz-center". This fixed the problem for Firefox, but the everything was left aligned in IE. After a bit of playing around with combinations of styles and attributes I managed to have both Internet Explorer and Firefox render the page properly using the same style sheet and set of styles.

My solution:
Set the alignment for Firefox in the attached stylesheet for the required div elements:
text-align: -moz-center
Set the alignment for Internet Explorer using the align attribute of the div element:
&amp;lt;div align="center" &amp;gt;
&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/S7_3RJY1YpA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/6039951602077736449/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/05/ie-firefox-alignment-issues-solved.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/6039951602077736449?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/6039951602077736449?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/05/ie-firefox-alignment-issues-solved.html" title="IE / Firefox Alignment Issues Solved" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0UEQ38_cCp7ImA9WxJQEkw.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-925850994746264659</id><published>2009-05-25T12:08:00.003+10:00</published><updated>2009-05-25T12:40:02.148+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-25T12:40:02.148+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Blog Tips" /><title>Search Engine Optimization (SEO) for Blogger</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hmefFBacVBn8IQ2AXPFNb0YuXMk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hmefFBacVBn8IQ2AXPFNb0YuXMk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hmefFBacVBn8IQ2AXPFNb0YuXMk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hmefFBacVBn8IQ2AXPFNb0YuXMk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Looking to increase visits to your blog? While doing a little research around SEO for my own blogs, I came accross the following article by Mike which offers a method of adding keyword and description metatags.

Blogger SEO Tip: Use Post Labels as Meta Keywords 

The code incorporates conditions to show the labels / tags for a post as keywords if a post page is being viewed. If the blog homepage or a search page is being viewed, the blogs keywords abd description are used.&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/V4DI9sJ8bDA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/925850994746264659/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/05/search-engine-optimization-seo-for.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/925850994746264659?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/925850994746264659?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/05/search-engine-optimization-seo-for.html" title="Search Engine Optimization (SEO) for Blogger" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;D0MERX0-cSp7ImA9WxJQEk8.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-833825765636044334</id><published>2009-05-23T15:13:00.008+10:00</published><updated>2009-05-25T14:23:24.359+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-25T14:23:24.359+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="Php" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="PEAR" /><category scheme="http://www.blogger.com/atom/ns#" term="RSS" /><category scheme="http://www.blogger.com/atom/ns#" term="Free Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Xml" /><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster Tools" /><title>XML-RPC Blog Ping</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dRGyw38lOrUGgtpXZ-Fr8wXzaXM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dRGyw38lOrUGgtpXZ-Fr8wXzaXM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dRGyw38lOrUGgtpXZ-Fr8wXzaXM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dRGyw38lOrUGgtpXZ-Fr8wXzaXM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I am developing a Php script which uses the Weblog_Pinger class written in php by Rogers Cadenhead. The script currently logs all pings to a MySQL database table, but is controlled using a single php script which calls the ping_ping_o_matic function for each site. I noticed that once more than about 20 sites were being pinged, the script sometimes timed out.

Instead of adjusting settings in php.ini or the web server, I decided to implement the Weblog_Pinger class with a controller which uses a MySQL database to store addresses to servers which support XML-RPC pings. The database will also store details of the blogs / rss feeds being submitted. When commencing the bulk ping, a dialog will allow a selection from the list of blogs / rss feeds, and the "changes url" for each selection to be specified. The php interface will also allow XML-RPC servers and additional blogs or rss feeds to the database.

I am currently trying a few methods of processing the large number of XML-RPC pings without the script timing out. Such as a main php script which calls another script which processes a subset (10 or 15 at a time) of the full list of servers until all have been pinged. Very Clunky. 

While searching for an alternative solution I came accross a free and complete Java application which does exactly what I am trying to achieve: Free XML-RPC blog ping site submitter: "Blog Ping", posted by Wayne Horkan. It can ping up to 1000 XML-RPC servers at a time. Documentation supporting the Java application also provides general information regarding Search Engine Optimization (SEO), which is valuable if attempting to increase hits to your blog / site.&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/HLKVfy_O1o4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/833825765636044334/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/05/xml-rpc-blog-ping.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/833825765636044334?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/833825765636044334?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/05/xml-rpc-blog-ping.html" title="XML-RPC Blog Ping" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total></entry><entry gd:etag="W/&quot;CUMGRHk4fCp7ImA9WxJQEEs.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-5159762585552400107</id><published>2009-05-22T17:31:00.004+10:00</published><updated>2009-05-23T17:23:45.734+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-23T17:23:45.734+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="Php" /><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster Tools" /><title>SEO - Crawler interpreting external links</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oSegNJyXB5nYm-Afcg-rPPHCzss/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oSegNJyXB5nYm-Afcg-rPPHCzss/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oSegNJyXB5nYm-Afcg-rPPHCzss/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oSegNJyXB5nYm-Afcg-rPPHCzss/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The following is in relation to my previous post Php: Log Clicks on Links to External Sites.

The post demonstrates how to log a clock on a link pointing to an external address. This may cause some search engines to get confused when crawling the page, as the link will be pointing the the load.php script on your site, when it actually reads and takes the user to an external site.

A solution for this would be to use the actual address of the external site as the value for the href attribute, and call a javascript function which changes the href value to toint to the redirect script which logs click / hit statistics. Links would then appear to search engine crawlers to point to the correct address, and not a page on your site. If javascript is not enabled, the user will still reach the required destination, but statistics for the click will not be logged.

&amp;lt;a id="item-3" href="http://www.google.com" onclick="logStats('3')" &amp;gt;Google&amp;lt;/a&amp;gt;

Javascript:

function logStats(item_id)
{
var url = document.getElementById("item-" + item_id);
var address = url.href;
url.href = "load.php?id=" + item_id;
}&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/hDr278fmhXI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/5159762585552400107/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/05/ensure-links-on-your-site-are.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/5159762585552400107?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/5159762585552400107?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/05/ensure-links-on-your-site-are.html" title="SEO - Crawler interpreting external links" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkIGRnk-eyp7ImA9WxJRGUw.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-5214784226930738596</id><published>2009-05-21T22:10:00.009+10:00</published><updated>2009-05-21T22:55:27.753+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-21T22:55:27.753+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="Php" /><category scheme="http://www.blogger.com/atom/ns#" term="PEAR" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster Tools" /><title>Php: Log Clicks on Links to External Sites</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IE8bnx8kUFg8eiKNpI1Jq8ye4V4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IE8bnx8kUFg8eiKNpI1Jq8ye4V4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IE8bnx8kUFg8eiKNpI1Jq8ye4V4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IE8bnx8kUFg8eiKNpI1Jq8ye4V4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The following demonstrates a method of logging clicks on hyperlinks to external sites using Php and MySQL. This can be used to generate statistics for content on your site such as "Popular links/sites", or keeping track of a frequent user or member's actions (ie. Recently Browsed).

The Php uses the PEAR MDB2 Package to create a connection to the database. For information on installing or using PEAR and the MDB2 package, see http://pear.php.net/.
Once the processing has completed for the item/link, the user is redirected to the address of the selected url.load.php



&amp;lt;?php

require_once('include/DbController.php');

$url = "";
$item_id = null;

//Create/get an instance of the DBController
$db = DbController::instance();

//get item url from query string
if(isset($_GET['id']))
{

 $item_id = $_GET['id'];
 //Get url of item
 
 if ($item_id != "")
 {
  $item = $db-&amp;gt;getItem($item_id);
  
  if(empty($item))
  {
   $url = "./";
  }
  else
  {
   $url = $item['url'];
   
   //log hit statistics
   //Not currently logging members
   $success =  $db-&amp;gt;logStats($item_id, NULL);
   
   /*
   //Debug
   if ($success == true)
   {
    print "Logged Successfully&amp;lt;br/&amp;gt;";
   }
   else
   {
    print "Logging Failed&amp;lt;br/&amp;gt;";
   */
  }
 }
 else //No id supplied - redirect to site root
 {
  $url = "./";
 }
}
else //No url found - redirect to site root
{
 $url = "./";
}


 Header ("Location: $url");
//print $url;

?&amp;gt;








DBController.phpThe DBController class provides a constructor, which uses MDB2 to construct a DSN and connect to the database.  When the instance() method is called, an instance is created if required, or retured if an instance exists. Currently, the id, the current date/time and member id is captured for each click on a hyperlink or item.


&amp;lt;?php
require_once('MDB2.php');

class DbController {

  private static $instance;
 private $db;
 
 //This function is called to create an instance of
 //the DBController class, or return the instance if...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/vvpXbw24SDs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/5214784226930738596/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/05/php-log-clicks-on-links-to-external.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/5214784226930738596?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/5214784226930738596?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/05/php-log-clicks-on-links-to-external.html" title="Php: Log Clicks on Links to External Sites" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUcGQXY7fip7ImA9WxJQEkw.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-4061536944737613919</id><published>2009-05-09T22:44:00.007+10:00</published><updated>2009-05-25T12:03:40.806+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-25T12:03:40.806+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Php" /><category scheme="http://www.blogger.com/atom/ns#" term="XML Reader" /><category scheme="http://www.blogger.com/atom/ns#" term="Free Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Xml" /><title>XML Parser</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VYy9UWQGy8Ve4QvnvXaJbVsXOMU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VYy9UWQGy8Ve4QvnvXaJbVsXOMU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VYy9UWQGy8Ve4QvnvXaJbVsXOMU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VYy9UWQGy8Ve4QvnvXaJbVsXOMU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The following php code processes an xml file and displays contents in the browser. Each element is displayed, followed by the name and value of any attributes. The text value will be disaplyed on if the element is not empty. 

It uses various methods from the XMLReader class (php), to move through each element and attribute of the xml document displaying each element and attribute name, and any values.


Contents of sample.xml



&amp;lt;?xml version="1.0" ?&amp;gt;
&amp;lt;group name="Group 1"&amp;gt;
 &amp;lt;person&amp;gt;
  &amp;lt;name&amp;gt;Sam&amp;lt;/name&amp;gt;
 &amp;lt;/person&amp;gt;
 &amp;lt;person&amp;gt;
  &amp;lt;name&amp;gt;John&amp;lt;/name&amp;gt;
  &amp;lt;name something="asdjasd" /&amp;gt;
 &amp;lt;/person&amp;gt;
&amp;lt;/group&amp;gt;





Php code:



&amp;lt;?php

  //Load the xml file
  $styleDoc = new XMLReader();
  $styleDoc-&gt;open("sample.xml");
 
  //Find the first element
  while ($styleDoc-&gt;name == "") {
   $styleDoc-&gt;read();
  }
 
  //Save the name of the first/parent element
  $parentNode = $styleDoc-&gt;name;
 
  //Process each element/attribute in the xml file
  do {
  
   if ($styleDoc-&gt;name != "#text") {//Skip text in between elements
    print $styleDoc-&gt;name;
   
    if ($styleDoc-&gt;hasAttributes){
     $numAttributes = $styleDoc-&gt;attributeCount;
    
     //Loop through attributes
     for ($i = 0; $i moveToAttributeNo($i);
      print "       " . $styleDoc-&gt;name . ": " . $styleDoc-&gt;value;
     }
    }
    //Move to the element's vlaue
    $styleDoc-&gt;read();
   
    //Print the element's value
    print "
   -  " . $styleDoc-&gt;value . "
";
   }
   $styleDoc-&gt;read();
  
  }while ($styleDoc-&gt;name != $parentNode);
 
  //Print the closing parent node
  print $styleDoc-&gt;name;
?&gt;







Output:




group name: Group 1
-

person
-

name
- Sam
name
-

person
-

person
-

name
- John
name
-

name something: asdjasd
-

person
-

group
&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/bk3iHAHeDS4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/4061536944737613919/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/05/xml-parser.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/4061536944737613919?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/4061536944737613919?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/05/xml-parser.html" title="XML Parser" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CU8CSXg_eSp7ImA9WxJSE0k.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-1127320215675513534</id><published>2009-05-03T18:34:00.008+10:00</published><updated>2009-05-03T19:44:28.641+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-03T19:44:28.641+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Utilities" /><category scheme="http://www.blogger.com/atom/ns#" term="Web Design" /><category scheme="http://www.blogger.com/atom/ns#" term="Free Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Webmaster Tools" /><title>Free online webmaster, web development and web design tools and resources</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4G17-2gYF5qI6rX3wtBEOh4eq0c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4G17-2gYF5qI6rX3wtBEOh4eq0c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4G17-2gYF5qI6rX3wtBEOh4eq0c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4G17-2gYF5qI6rX3wtBEOh4eq0c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The following is a set of free tools and resources which can be used to help create valid and attractive websites in a short amount of time.

Online XML Schema Generator:
http://www.xmlforasp.net/CodeBank/System_Xml_Schema/BuildSchema/BuildXMLSchema.aspx
This is an online xml schema generation tool. Raw xml or a hyperlink to an xml document can be supplied to the interface which is then processed to generate an xml schema based on the supplied xml. 

Creating Online
http://www.creatingonline.com/webmaster
Creating Online is a site which provide an extensive set of free online webmaster tools and archives.

Creating Online – Webmaster Tools Index
· Online Web Page Maker
· Online Flash Tools
· HTML Code Validator
· Free Email Form Maker
· Frames Generator
· CSS Generator
· Scrollbar Color Generator
· Pop-Up Window Maker
· Button Generator
· Mouseover Image Generator
· Tooltip Menu Generator
· Free Javascripts 
· Free Backgrounds
· Free Buttons
· Free Bullets
· Free Bars
· Free Icons
· Free Site Stats
· Free Hit Counters
· Free Auto Responders
· Free Live Help / Chat
· Free Visitor Tracker
· Link Monitoring
· Best Affiliate Programs 
(links from http://www.creatingonline.com/webmaster/ last tested on 3rd May 2009)



GRSites.com
http://www.grsites.com/
GRSites.com provides a set of Web Design tools which aid in creating aesthetic imagery for your site. All of the tools are online, making it accessible from anywhere. Register for free to receive a GRSites folder to store anything you create using the GRSites.com tools.

GRSites.com Online Generators:Button Maker
Generate aesthetic buttons with hover animation if required. Select colours, size, effects, text, hover behavior and much more to create great looking buttons for your site.
Logo Maker
Generate your own logo images for your site.
Menu Maker
Select from a range of menu templates, including horizontal/vertical navigation, tabs and dropdown menus. Customise styles to suite your site.
Template Maker
Generate...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/9w6wmZl69sU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/1127320215675513534/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/05/free-online-webmaster-web-development.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/1127320215675513534?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/1127320215675513534?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/05/free-online-webmaster-web-development.html" title="Free online webmaster, web development and web design tools and resources" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;Ck4DSXo4eyp7ImA9WxBREUk.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-7748999090768075150</id><published>2009-04-21T21:14:00.007+10:00</published><updated>2009-12-30T13:42:58.433+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-30T13:42:58.433+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VB.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="String Manipulation" /><category scheme="http://www.blogger.com/atom/ns#" term="VBA" /><category scheme="http://www.blogger.com/atom/ns#" term="VBScript" /><title>VBScript String Clean function - remove or replace illegal characters</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0Ocbch5xOAITW_71qRlYajM1xGM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0Ocbch5xOAITW_71qRlYajM1xGM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0Ocbch5xOAITW_71qRlYajM1xGM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0Ocbch5xOAITW_71qRlYajM1xGM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The following VBScript / VBA function removes illegal characters from a string and returns a clean string. Illegal characters are replaced by a space by default, but can be set to replace specific characters with another string/character. The function can be used to remove characters not supported in filenames and directory names of the file system, SharePoint lists, etc.

A string is passed to the function which may or may not contain illegal characters declared in an array at the beginning of the function. If illegal characters exist in the string , they will be replaced by a space or a specified string. Once all illegal characters have been removed the function returns the cleaned string.Feel free to utilise or develop this code. If you use this please reference this blog ( http://www.Code-Tips.com ).



'-----------------------------------------------------------------------------------
'++ clean(strToClean)
'
' Description: Remove illegal characters from string for using as directory and file names in file system
' as well as SharePoint List items
'
' File System Illegal Characters: ? : * ? " &amp;lt; &amp;gt;
' SharePoint Illegal Characters: ~ # % &amp;amp; * { } \ : &amp;lt; &amp;gt; ? / + " . _
'
' Input: String: strToClean
' Returns: Formatted String
'-----------------------------------------------------------------------------------

Function clean(strToClean)

'Remove illegal characters ?:*?"&amp;lt;&amp;gt;
charArray = Array("?","/","\",":","*","""","&amp;lt;","&amp;gt;","","&amp;amp;","#","~","%","{","}","+","_",".")

   ' Debug: Display illegal Characters
   '----------------------------------------
   ' For Each ch in charArray
   ' msgbox (ch)
   ' Next
   '----------------------------------------

arraySize = UBound(charArray) 'get the size of the character array
tmpstr = strToClean 'store string in tempporary variable


cont = True 'repeat string check for current character
current = 0 'store current array index

'Loop through illegal character array until all illegal chars removed from...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/gPy-yg9S8MI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/7748999090768075150/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/04/vbscript-string-clean-function-remove.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/7748999090768075150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/7748999090768075150?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/04/vbscript-string-clean-function-remove.html" title="VBScript String Clean function - remove or replace illegal characters" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;DUQHSXszeip7ImA9WxBQEEw.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-1370121787650315972</id><published>2009-04-13T19:34:00.018+10:00</published><updated>2010-01-09T17:08:58.582+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-09T17:08:58.582+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RSS Generator" /><category scheme="http://www.blogger.com/atom/ns#" term="Php" /><category scheme="http://www.blogger.com/atom/ns#" term="RSS Writer" /><category scheme="http://www.blogger.com/atom/ns#" term="RSS" /><category scheme="http://www.blogger.com/atom/ns#" term="Xml" /><category scheme="http://www.blogger.com/atom/ns#" term="XMLWriter" /><title>Free Php RSS 2.0 feed generator class (RSS2Writer)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IlQHprH3MKfIOH3TCzNzA0I5Eh8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IlQHprH3MKfIOH3TCzNzA0I5Eh8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IlQHprH3MKfIOH3TCzNzA0I5Eh8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IlQHprH3MKfIOH3TCzNzA0I5Eh8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;[Edit: 9th January 2010] 
This Class has now been updated to Version 2.  The information provided in this post is now out of date.  Please see the Php RSS2Writer Class page for information about the updated version (Version 2.0).

Updated Version (2.0): Php RSS 2 Writer - Download and Usage Instructions

----------------------------------------------------
The following class provides basic functionality required to dynamically generate an RSS 2.0 feed using Php.

This script may be used or developed at your own risk as long as it is referenced appropriately. Please post any comments or suggestions for improvement to this article.

The main RSS 2 Writer class is the RSS2Writer class in RSS2Writer.php, which contains functions that required to generate RSS 2.0 feeds. Comments throughout the code provide information about using the class and functions.

The sampleController.php file provides detailed information as well as examples of how to use the class. Any functionality requirements are noted in the sample controller.

The Php scripts are available for download here:
Free Download: Php RSS2 Writer 

Simple RSS2Writer (v1.0) and sample controller
(c) Copyright Daniel Soutter
Written on the 13th April 2009

Blog: http://dsoutter.blogspot.com/

This script may be used or developed at your own risk as long as it is 
referenced appropriately.
Please post any comments or suggestions for improvement to 
my blog (above).

References: http://www.phpbuilder.com/board/showthread.php?t=10356853
http://forum.tvphp.net/archive/index.php/t-8305.html
http://www.w3schools.com/Schema/schema_example.asp
http://cyber.law.harvard.edu/rss/rss.html

I am currently working on a generic RSSWriter that generates RSS 1.0, 2.0 
and ATOM feeds. I propose to use this class to generate feeds of dynamic
website content.


Contents of RSS2Writer.php

class RSS2Writer
{

//Declare variables 
var $xml; // Used to store the rss xml
var $itemOpen = false; // Boolean value to determine if an item...&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/7jNs2UKqzhE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/1370121787650315972/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/04/php-rss-20-feed-generator-class.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/1370121787650315972?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/1370121787650315972?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/04/php-rss-20-feed-generator-class.html" title="Free Php RSS 2.0 feed generator class (RSS2Writer)" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;D0EERXszfip7ImA9WxVUGEU.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-967560987194062291</id><published>2009-03-24T20:00:00.004+11:00</published><updated>2009-03-24T20:06:44.586+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-24T20:06:44.586+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VBA" /><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><category scheme="http://www.blogger.com/atom/ns#" term="VBScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Outlook" /><category scheme="http://www.blogger.com/atom/ns#" term="Macro" /><title>Microsoft Outlook: Calling VBA Class Module function using VBScript</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CqoQHM3pF84A-qlmr2WTtzuXRHQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CqoQHM3pF84A-qlmr2WTtzuXRHQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CqoQHM3pF84A-qlmr2WTtzuXRHQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CqoQHM3pF84A-qlmr2WTtzuXRHQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Although it is not recommended by Microsoft (see below), a procedure can be created in VBA (Visual Basic for Applications) and called using VBScript (Visual Basic Scripting Edition).  By default, VBA is not initialised disabled when Outlook is started for performance reasons.  If Outlook is started and an item opened (containing VBScript which calls a VBA procedure in the ThisOutlookSession Class Module), an error will occur as the required VBA procedure/function will not be available.  For procedures to be called from the ThisOutlookSession module, security settings need to be adjusted to allow the macros to run.    To call a VBA procedure in the ThisOutlookSession module from VBScript, create an Outlook.Application object, which will then allow the procedure to be called.
    Example:    ThisOutlookSession Module (VBA):  Public Sub sendMessage(ByVal message As String)  MsgBox (message)  End Sub    Outlook Form Code (VBScript):  Function Item_Close()    Set myOlApp = CreateObject("Outlook.Application")  myOlApp.sendMessage("Test")    End Function    When the form/item is closed, the VBScript Item_Close() event is triggered which then calls the sendMessage() procedure in the ThisOutlookSession module, passing the required message as a string.
Quoted From Microsoft http://support.microsoft.com/?kbid=221827   "You cannot directly call a procedure stored in a module other than ThisOutlookSession."    "You can also use the standard Visual Basic syntax to create and call a function, and you can also pass arguments by value or by reference. You cannot directly call a procedure stored in a module other than ThisOutlookSession.

This functionality is available only as a side effect of the architecture of Outlook and the object model. It was not intended to be available as part of Outlook development environment. Because of known issues regarding this functionality, Microsoft recommends that you do not create a solution based on this functionality."         &lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/4DJPGrxikhg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/967560987194062291/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/03/microsoft-outlook-calling-vba-class.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/967560987194062291?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/967560987194062291?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/03/microsoft-outlook-calling-vba-class.html" title="Microsoft Outlook: Calling VBA Class Module function using VBScript" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DEIBRXs9eyp7ImA9WxNaFEQ.&quot;"><id>tag:blogger.com,1999:blog-3808846106371591937.post-7637651970941621697</id><published>2009-03-21T23:07:00.001+11:00</published><updated>2009-11-29T23:09:14.563+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-29T23:09:14.563+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Privacy Policy" /><title>Privacy Policy</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VGXQ9gQcbqugaYkrZCOqCYJUWcw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VGXQ9gQcbqugaYkrZCOqCYJUWcw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VGXQ9gQcbqugaYkrZCOqCYJUWcw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VGXQ9gQcbqugaYkrZCOqCYJUWcw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Third-party advertising companies are used to serve ads when you visit this blog. These companies may use information (not including your name, address, email address, or telephone number) about your visits to this and other websites in order to provide advertisements about goods and services of interest to you. If you would like more information about this practice and to know your choices about not having this information used by these companies, click here.&lt;br/&gt;
&lt;br/&gt;
Please click the title to view the full article.&lt;img src="http://feeds.feedburner.com/~r/Code-tipscom-WebDevelopmentProgramming/~4/rDDBn42ufGk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.code-tips.com/feeds/7637651970941621697/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.code-tips.com/2009/03/privacy.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/7637651970941621697?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3808846106371591937/posts/default/7637651970941621697?v=2" /><link rel="alternate" type="text/html" href="http://www.code-tips.com/2009/03/privacy.html" title="Privacy Policy" /><author><name>Daniel</name><uri>http://www.blogger.com/profile/07274977002584498975</uri><email>webmasterhub.net@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="17671573689688497804" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
