<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Positron Ideas Manufacturing &#187; Technology Made Simple</title>
	<atom:link href="http://pimteam.net/category/technology-made-simple/feed/" rel="self" type="application/rss+xml" />
	<link>http://pimteam.net</link>
	<description>Bobby Handzhiev on Web, Technology And Small Business</description>
	<lastBuildDate>Wed, 27 Jul 2011 09:56:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>SEO-Friendly Ajax</title>
		<link>http://pimteam.net/seo-friendly-ajax/</link>
		<comments>http://pimteam.net/seo-friendly-ajax/#comments</comments>
		<pubDate>Sun, 01 May 2011 19:19:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology Made Simple]]></category>

		<guid isPermaLink="false">http://pimteam.net/?p=76</guid>
		<description><![CDATA[Loading parts of your content with Ajax is cool, but the problem is search engines don&#8217;t quite follow javascript links. Here is very simple way to solve this problem. 1. Use links with onclick attribute like this: &#60;a href=&#8221;some_url&#8221; onclick=&#8221;loadContent(page);return false;&#8221;&#62;Load Page&#60;/a&#62; The search engines will follow the URL you have given to the &#8220;href&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Loading parts of your content with Ajax is cool, but the problem is search engines don&#8217;t quite follow javascript links.</p>
<p>Here is very simple way to solve this problem. </p>
<p>1. Use links with onclick attribute like this:</p>
<p>&lt;a href=&#8221;some_url&#8221; onclick=&#8221;loadContent(page);return false;&#8221;&gt;Load Page&lt;/a&gt;</p>
<p>The search engines will follow the URL you have given to the &#8220;href&#8221; attribute. The browser will not follow it because of the &#8220;return false&#8221; statement in the onclick.</p>
<p>If you are using click handler with jQuery or similar library, follow the same logic.</p>
<p>Your ajax function (in this case called loadContent) should also call the same &#8220;some_url&#8221;</p>
<p>2. Make sure your system makes difference beetween calling some_url by ajax and calling it normally. This can happen very easy if you add a POST parameter to your ajax request. Then on the server side you can simply check whether the paremeter is there or not.</p>
<p>3. If the request comes by ajax, return only the piece of content that must be loaded in the ajax placeholder in your original page.</p>
<p>If the request does not come by ajax, load a full page with navigation and everything. Why is this needed? Because search engines may index these direct URLs and send traffic there. When real visitor lands on such page you want them to see your full site design with header, footer and navigation, and not just the piece of content that the ajax call needs to load.</p>
<p>I think there&#8217;s no need of examples, but if it&#8217;s unclear let me know in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://pimteam.net/seo-friendly-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Ask For Tech Help</title>
		<link>http://pimteam.net/how-to-ask-for-tech-help/</link>
		<comments>http://pimteam.net/how-to-ask-for-tech-help/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 21:55:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology Made Simple]]></category>

		<guid isPermaLink="false">http://pimteam.net/?p=66</guid>
		<description><![CDATA[Here are some of the worst ways: - &#8220;Hey, this software is giving me errors! Fix it ASAP!&#8221; Comment: What errors? Which software? Don&#8217;t think that the tech guy is in your head. - &#8220;Open this URL: xxxxxxxxxxxxx. Go to A. Then do B. Then click on the green triangle. Then login as XXX/YYY. Try [...]]]></description>
			<content:encoded><![CDATA[<h2>Here are some of the worst ways:</h2>
<p>- &#8220;Hey, this software is giving me errors! Fix it ASAP!&#8221;<br />
<em>Comment:</em> What errors? Which software? Don&#8217;t think that the tech guy is in your head.</p>
<p>- &#8220;Open this URL: xxxxxxxxxxxxx. Go to A. Then do B. Then click on the green triangle. Then login as XXX/YYY. Try to add ZZZ as a friend. See what&#8217;s happening!&#8221;<br />
<em>Comment:</em> Why the heck didn&#8217;t you just tell me that you were seeing an error? </p>
<p>- &#8220;The feature XYZ is not working!!!&#8221;<br />
<em>Comment:</em> What exactly is not working? Is it giving an error? Is the screen going blank? How did you understand it&#8217;s not working? </p>
<p>- &#8220;I&#8217;m doing this and that and then the program does that and this&#8221;.<br />
<em>Comment:</em> So&#8230; why are you telling me this? Is there something wrong in what have happened and if yes, what is wrong?</p>
<p>- &#8220;I saw the code, you are using XYZ (recursion, global variable, function instead of class or whatever he thinks is wrong). This is not the right way, I have a friend in Oracle and they are using ZYX!&#8221;<br />
<em>Comment: just because the guys in Oracle use something, it doesn&#8217;t mean it&#8217;s good for your case.</em></p>
<h2>Here is the right way to ask for tech help when there is a problem:</h2>
<p>&#8220;I have a problem with XYZ. It should do A, but it does B. Here is how to reproduce:&#8230; (if asked)&#8221;</p>
<p>Or to elaborate a little bit: start with the problem. Don&#8217;t tell me to go somewhere and do this or that but tell me what exactly is wrong and why do you think it&#8217;s wrong. If there has been an error, copy it and send it to me. If the program is showing a blank screen, tell me it&#8217;s a blank screen. If the function is returning wrong result, tell me that and let me know what you think is the right result. Don&#8217;t just tell me &#8220;it doesn&#8217;t work&#8221;. This makes the tech support mad and doesn&#8217;t bring any useful information. If asked, be ready to explain how to reproduce the error. </p>
<p>Following this pattern you will get your problem solved quickly. Often the tech guys can fix a problem in a minute if you give them the SQL error you have seen on the screen and can lose hours trying to figure out what eventually you could have done so it resulted in some error.</p>
]]></content:encoded>
			<wfw:commentRss>http://pimteam.net/how-to-ask-for-tech-help/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Very Relaxed PHP Framework Released</title>
		<link>http://pimteam.net/new-very-relaxed-php-framework-released/</link>
		<comments>http://pimteam.net/new-very-relaxed-php-framework-released/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 22:17:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology Made Simple]]></category>

		<guid isPermaLink="false">http://pimteam.net/2008/12/17/new-very-relaxed-php-framework-released/</guid>
		<description><![CDATA[Celeroo-Frame is a little, fast and very relaxed PHP MVC framework. Some developers would even say it&#8217;s not a framework but a collection of libraries and coding practices. It&#8217;s ok to call it that &#8211; the most important thing is it helps you build PHP/MySQL applications really fast. Celeroo-Frame can be downloaded here. Celeroo-Frame is a result of mine [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.celeroo.com/frame/frame.html">Celeroo-Frame</a> is a little, fast and very relaxed <strong>PHP MVC framework</strong>. Some developers would even say it&#8217;s not a framework but a collection of libraries and coding practices. It&#8217;s ok to call it that &#8211; the most important thing is it helps you build PHP/MySQL applications <strong>really fast</strong>. <span class="Apple-style-span" style="font-weight: bold">Celeroo-Frame</span> can be downloaded <a href="http://www.celeroo.com/frame/frame.html">here</a>. <span class="Apple-style-span" style="font-weight: bold">Celeroo-Frame </span>is a result of mine and <a href="http://axaya.net">Axaya</a>&#8216;s years of reusing and optimizing code in real live applications. Initially we didn&#8217;t aim to create a framework &#8211; it just happened as a result of real work. So you will not find as many libraries, tools and magic as in the other PHP frameworks, but you will certainly find a lot more freedom.While it implies certain way of doing the things, there are virtually no restrictions to what you may want to do and change. Unlike the other frameworks, its core is directly part of your application so you can change everything.The reason Celeroo-Frame was developed and released is to help you achieve really rapid development of web applications. The learning curve is extremely short and coding with it, I believe, is real fun. I recommend you to check the information at <a href="http://celeroo.com/blog">Celeroo blog</a> as there is full documentation. Your feedback will be appreciated. Note that Celeroo-Frame is in Beta stage in the sense that it has just been packaged as a framework. (By the way <a href="http://celeroo.com">Celeroo</a> also uses Celeroo-Frame. You will hear more about Celeroo pretty soon).</p>
]]></content:encoded>
			<wfw:commentRss>http://pimteam.net/new-very-relaxed-php-framework-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Six Ajax Problems That Make Your Application Look Dumb</title>
		<link>http://pimteam.net/six-ajax-problems-that-make-your-application-look-dumb/</link>
		<comments>http://pimteam.net/six-ajax-problems-that-make-your-application-look-dumb/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 20:55:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology Made Simple]]></category>

		<guid isPermaLink="false">http://pimteam.net/2008/06/26/six-ajax-problems-that-make-your-application-look-dumb/</guid>
		<description><![CDATA[Do you remember how websites looked 3-4 years ago? There was no Ajax at all, maybe only some fancy useless HTML. Is it now better? In general, I think yes. But Ajax is often being a bit abused, and what&#8217;s worst people want Ajax in their web applications no matter why. This forces many web [...]]]></description>
			<content:encoded><![CDATA[<p>Do you remember how websites looked 3-4 years ago? There was no Ajax at all, maybe only some fancy useless HTML. Is it now better? In general, I think yes. But Ajax is often being a bit abused, and what&#8217;s worst people want Ajax in their web applications no matter why. This forces many web developers put ajax everywhere often without to consider several serious issues.</p>
<h3>1. Ajax does not declare functions</h3>
<p>If you hope to declare functions in Ajax loaded javascripts and call them during execution time you&#8217;ll get an unpleasant surprise. It does not work. You need to declare your functions in the loaded page, not in the ajax response. However if you want to call existing functions in your ajax-generated code, no worries, go ahead.</p>
<h3>2. IE caches GET requests</h3>
<p>Internet Explorer knows how to cache the ajax response and is not afraid to do it. In fact it loves cache so much that you won&#8217;t be able to use the dynamic effect of Ajax call to the database if you send your request by GET. If your ajax calls the database, stupid IE keeps returning cached data even if you refresh the entire page. </p>
<p>Solution: Use POST calls. I know it&#8217;s slower, but how does it matter when GET does not work well?</p>
<h3>3. Ajax does not upload files</h3>
<p>If you have an ajax loaded page and you want to include a file upload field in it, I have &#8220;great&#8221; news for you: it does not work. What, is it not news? Poor you, you have already realized one of the ugliest limitations of ajax. Because of it, the developers need to all kind of gimmicks or use third party scripts with hidden iframes to make file upload works. That&#8217;s far away of web standards, user friendly code and search engines.</p>
<p>Hey, if all your users are geeks who browse with Firefox and like to poke config files, you can use <a href="http://www.captain.at/ajax-file-upload.php" target=_blank>this idea</a>. Cool, eh?</p>
<h3>4. Ajax causes memory leaks</h3>
<p>See <a href="http://ajaxian.com/archives/biggest-ajax-problem" target=_blank>here</a>.</p>
<h3>5.Â  How To Make Back/Forward Buttons Work On Ajax Page?</h3>
<p>No, this is not a rhetorical question, I am really asking you how. Because I don&#8217;t know. Wait, I asked Google and he said <a href="http://www.contentwithstyle.co.uk/Articles/38/fixing-the-back-button-and-enabling-bookmarking-for-ajax-apps" target=_blank>this</a>. Does it look simple to you?</p>
<h3>Ajax Sucks For SEO</h3>
<p>If all you care is to make fancy website, go ahead, use ajax everywhere. If you partner with popular websites or have big bucks for advertising, you&#8217;ll have no problems. What, do you say you are on a budget and hope to get visitors from the search engines? Forget either about Ajax or about Google. </p>
<p>Do you know more things that Ajax makes to help you look dumb? Go ahead, share them.</p>
<p>P.S. No, I am not saying don&#8217;t use ajax. I&#8217;m just pointing few things that suck. </p>
]]></content:encoded>
			<wfw:commentRss>http://pimteam.net/six-ajax-problems-that-make-your-application-look-dumb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin For First Time Visitors On Your Blog</title>
		<link>http://pimteam.net/wordpress-plugin-for-first-time-visitors-on-your-blog/</link>
		<comments>http://pimteam.net/wordpress-plugin-for-first-time-visitors-on-your-blog/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 16:55:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology Made Simple]]></category>

		<guid isPermaLink="false">http://pimteam.net/2008/03/12/wordpress-plugin-for-first-time-visitors-on-your-blog/</guid>
		<description><![CDATA[I just wrote a simple plugin for WordPress which lets you display some text, HTML code and/or images to your first time visitors. It works with a cookie, so you know, some may see it more than once. Enjoy the plugin here.]]></description>
			<content:encoded><![CDATA[<p>I just wrote a simple plugin for WordPress which lets you display some text, HTML code  and/or images to your first time visitors. It works with a cookie, so you know, some may see it more than once.</p>
<p><a href="http://pimteam.net/firsttimer-wordpress-plugin/">Enjoy the plugin here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pimteam.net/wordpress-plugin-for-first-time-visitors-on-your-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use Ajax To Stop Spammers</title>
		<link>http://pimteam.net/use-ajax-to-stop-spammers/</link>
		<comments>http://pimteam.net/use-ajax-to-stop-spammers/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 19:45:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology Made Simple]]></category>

		<guid isPermaLink="false">http://pimteam.net/2008/02/21/use-ajax-to-stop-spammers/</guid>
		<description><![CDATA[Some time ago I wrote about how to stop spammers without Captcha. The technique described there works pretty sweet on several sites already, but there is a way to go even further. The Problem Well to be frank, the spam protection described in the previous post works at 100% already in several sites. But in [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago I wrote about <a href="http://pimteam.net/2007/09/01/how-to-stop-the-spammers-without-captcha-case-study/">how to stop spammers without Captcha</a>. The technique described there works pretty sweet on several sites already, but there is a way to go even further.</p>
<h3>The Problem</h3>
<p>Well to be frank, the spam protection described in the previous post works at  100% already in several sites.  But in theory if you use that tactic the spammers can easily go around it. They can build a script especially for your site which to check the value in your javascript function and place it in the hidden field.</p>
<h3>Let&#8217;s make things better</h3>
<p>Let&#8217;s involve some Ajax to make the spammer&#8217;s life even harder. What if instead of using a hardcoded value for the hidden field, you use a key/value combination from a database.  When loading your web form, retrieve a single key/value pair from the database.  Put the $key in $_SESSION so you have it after submit. Use the key for an ajax function like this (for easy ajax I use <a href="http://script.aculo.us" target="_blank">Scripaculous</a>):</p>
<p>new Ajax.Request(&#8220;?action=ajax_retrieve_value.php&#8221;<br />
{<br />
method:&#8217;post&#8217;,<br />
parameters: {ajaxkey: &#8216;&lt;?=$key?&gt;&#8217;},<br />
onSuccess: function(transport)<br />
{<br />
var response = transport.responseText || &#8220;no response text&#8221;;<br />
$(&#8216;hidden_field&#8217;).value=response;<br />
}<br />
});</p>
<p>The script <strong>ajax_retrieve_value.php </strong>will retrieve the value corresponding to the key and the javascript function places it in the hidden field.</p>
<p>On submitting the form all you need to do is to run another query and see if the key which is in $_SESSION corresponds to the value coming from the hidden field.</p>
<p>If your <strong>ajax_retrieve_value.php</strong> checks $_SERVER[REMOTE_ADDR] and allow only the IP of your server, you are spam-proof. Without Captcha at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://pimteam.net/use-ajax-to-stop-spammers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Stop Using PHP Template Engines Once And For All (Why Smarty Is Evil)</title>
		<link>http://pimteam.net/stop-using-php-template-engines-once-and-for-all-why-smarty-is-evil/</link>
		<comments>http://pimteam.net/stop-using-php-template-engines-once-and-for-all-why-smarty-is-evil/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 22:12:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology Made Simple]]></category>

		<guid isPermaLink="false">http://pimteam.net/2008/01/06/stop-using-php-template-engines-once-and-for-all-why-smarty-is-evil/</guid>
		<description><![CDATA[Do you know why PHP was initially created? I am sure you do, but many programmers have forgotten. The first purpose of PHP was to create simple dynamic web pages. Who knows why (seriously, do you know WHY?) groups of PHP developers keep working on PHP template engines which are supposed to help separating the [...]]]></description>
			<content:encoded><![CDATA[<p>Do you know why PHP was initially created? I am sure you do, but many programmers have forgotten. The first purpose of PHP was to create <em>simple dynamic web pages.</em></p>
<p>Who knows why (seriously, do you know WHY?) groups of PHP developers keep working on PHP template engines which are supposed to help separating the  program logic from the design. One good sample of such useless effort is <a href="http://www.smarty.net/" target="_blank">Smarty.</a></p>
<h3>So Why Smarty Is Evil?</h3>
<p>What exactly is <strong>Smarty </strong>and the similar template engines doing and why is it so bad for your programs to use them? Let me just shoot few reasons:</p>
<ul>
<li><strong>Adding one more language to learn.</strong> <strong>Smarty</strong> has its own language which has to be used in the templates whenever you need control flow structures etc. <em>How exactly is this better than using PHP itself?</em></li>
<li><strong>Putting presentation code in your logic. </strong>They claim to avoid that and at the same time require you to &#8220;load&#8221; all the variables before you can use them in the template. The absurdic <strong>$smarty-&gt;assign </strong>may take more lines in your code than you need for the program logic.</li>
<li><strong>Messing Javascripts. </strong>Some of the template engines (you guesses it, Smarty again!)  don&#8217;t let you write normal javascript code in the templates because that crashes their own parser. <em>How convenient!</em></li>
</ul>
<p>It&#8217;s hard to believe, but most programmers would visit <a href="http://www.smarty.net/whyuse.php" target="_blank">Why Use Smarty</a> page and take everything said there for real. However I prefer to think myself:</p>
<p><em>&#8220;Designers can&#8217;t break application code. They can mess with the templates all  they want, but the code stays intact. The code will be tighter, more secure and  easier to maintain.&#8221;</em></p>
<p>- Really? Designers <strong>can </strong>break the application code, because the templates (view layer if you use MVC) contain logic themselves. In no way the template engines protect you from that</p>
<p><em>&#8220;With presentation on its own layer, designers can modify or completely  redesign it from scratch, all without intervention from the programmer&#8221;</em></p>
<p>- Big fat lie. The programmer needs to load all variables, prepare arrays and do presentation related work in the controller layer. The presentation is not on its own layer so the designers often need the programmer&#8217;s help.</p>
<p><em>&#8220;Programmers aren&#8217;t messing with templates. They can go about maintaining the  application code, changing the way content is acquired, making new business  rules, etc. without disturbing the presentation layer.&#8221;</em></p>
<p>- See all the points aboe. The programmers do mess with the templates.</p>
<p><em>&#8220;Templates are a close representation of what the final output will be, which is an intuitive approach. Designers don&#8217;t care </em><em>how the content got to the template. If you have extraneous data in the template such as an SQL statement, this opens the risk of breaking application code by accidental deletion or alteration by the designer.&#8221;</em></p>
<p>-  If the programmer puts SQL statement in their view layer, then they simply need some education. Using simple PHP templates you can and should keep all the logic away from the presentation layer. You don&#8217;t need Smarty, Fast templates or similar misconceptions.</p>
<h3>So How Do You Go Without Template Engines?</h3>
<p>PHP is template language itself. You don&#8217;t need another one. Just separate your logic from your presentation. Keep your logic in a php script, then your presentation in HTML template. When you need control flow in the HTML file, just use pieces of PHP code.Â  It&#8217;s really as simple as that. In your PHP script you can use <em>includeÂ </em> or <em>require </em>to display the template. All the variables which are in the scope of the script will be available in the template as well. No loading required, no messy presentation code in the controller layer.</p>
<p>If you need samples, just let me know (hint, use the comment option).</p>
]]></content:encoded>
			<wfw:commentRss>http://pimteam.net/stop-using-php-template-engines-once-and-for-all-why-smarty-is-evil/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>How To Stop The Spammers Without CAPTCHA? (Case Study)</title>
		<link>http://pimteam.net/how-to-stop-the-spammers-without-captcha-case-study/</link>
		<comments>http://pimteam.net/how-to-stop-the-spammers-without-captcha-case-study/#comments</comments>
		<pubDate>Sat, 01 Sep 2007 16:17:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology Made Simple]]></category>

		<guid isPermaLink="false">http://freelance-employment-help.com/blog/2007/09/01/how-to-stop-the-spammers-without-captcha-case-study/</guid>
		<description><![CDATA[You know the CAPTCHA images (called also Turing codes) are used everywhere &#8211; on blogs, forums, registration and contact forms &#8211; to stop spammers. They work almost perfect. But they are boring. The Captcha can significantly decrease the rate of feedback (comments) you get on your blog, the contact inquiries you receive, the registrations on [...]]]></description>
			<content:encoded><![CDATA[<p>You know the <a href="http://en.wikipedia.org/wiki/Captcha" target="_blank">CAPTCHA</a> images (called also Turing codes) are used everywhere &#8211; on blogs, forums, registration and contact forms &#8211; to stop spammers. They work almost perfect.</p>
<h3>But they are boring.</h3>
<p>The Captcha can significantly decrease the rate of feedback (comments) you get on your blog, the contact inquiries you receive, the registrations on your membership site or even the orders on your e-store.</p>
<p>They are discriminative to people who can&#8217;t see well and often confuse these who are not used to them.</p>
<p>Some Captcha-s are hard to be &#8220;decoded&#8221; even from a well seeing person.</p>
<p>By rough estimate requiring the users to enter Turing code can decrease their participation with <strong>up to 50% percents</strong>.</p>
<p>There are some other methods to stop the spam bots, which are less discriminative than the Captcha. For example some blogs will ask you &#8220;How much is 1 + 5&#8243; or &#8220;Is the fire hot or cold?&#8221; to check if you are human and not a bot. These methods are good, but they also require the active participation of the user and can push them off.</p>
<h3>The Elegant Solution To Stop Spam Bots</h3>
<p>I implemented this solution for a site which was using custom coded by me CMS system. There were no Turing codes or any other tools to prevent from spamming and the site quickly get flooded with spam comments.</p>
<p>Let me take you straight to the solution. It sopped 100% of the spam comments:</p>
<ol>
<li>Create a hidden field in the feedback (comment, registration or whatever) form</li>
<li>Add Javascript code which fills some specific value in this field when the document get loaded</li>
<li>When the form is submitted, check if the hidden field has exactly the value which should have been filled with the Javascript code. If it does not have it, then the comment is spam.</li>
</ol>
<p>Here is an example:</p>
<p><strong> &lt;script language=&#8221;javascript&#8221;&gt;<br />
function cheatSpammers()<br />
{<br />
//give the hidden field some meaningful name, like for example &#8220;website&#8221;. The spambot<br />
//will fill it with some crap or will ignore it      document.getElementById(&#8220;website&#8221;).value=&#8221;http://google.com/&#8221;;<br />
}<br />
&lt;/script&gt; </strong></p>
<p>Now in the body, start the function:</p>
<p><strong> &lt;body onload=&#8221; cheatSpammers();&#8221;&gt;</strong></p>
<p>Then in the contact/comment form, add the hidden field. We will not make it &#8220;hidden&#8221;, to avoid smarter bots which can mark such field as suspicious. Instead, we&#8217;ll make it hidden with CSS:</p>
<p><strong>&lt;style type=&#8221;text/css&#8221;&gt;<br />
.websitefield<br />
{<br />
display:none;<br />
}<br />
&lt;/style&gt; </strong></p>
<p><strong> &lt;input type=&#8221;text&#8221; class=&#8221;websitefield&#8221; name=&#8221;website&#8221;&gt;</strong></p>
<p>This is VERY simple and it works 100%. The spam bots cannot run Javascript. Only browsers can do.</p>
<p>Of course, if a spammer write a spam bot especially for your site, they can just take the value from the javascript and fill it. But the spammers use generic bots for many sites, so this simple solution works perfectly.</p>
<p>Do you have even better ideas how to outsmart the spammers? Please share!</p>
]]></content:encoded>
			<wfw:commentRss>http://pimteam.net/how-to-stop-the-spammers-without-captcha-case-study/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

