<?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/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Recent Technology News Blog, Washington DC Tech, DC Technology &#187; Guest Submitted</title>
	<atom:link href="http://www.zonkio.com/author/usersubmitted/feed" rel="self" type="application/rss+xml" />
	<link>http://www.zonkio.com</link>
	<description>Up-to-date tech news blog that showcases recent web development insights, photography, and tech law articles. Washington, DC Metro based internet technology news blog.</description>
	<lastBuildDate>Fri, 30 Dec 2011 22:47:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Photo: Metro Center Against Black/White DC</title>
		<link>http://www.zonkio.com/photo-metro-center-against-blackwhite-dc_1561.html</link>
		<comments>http://www.zonkio.com/photo-metro-center-against-blackwhite-dc_1561.html#comments</comments>
		<pubDate>Tue, 12 May 2009 13:16:17 +0000</pubDate>
		<dc:creator>Guest Submitted</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[black/white]]></category>
		<category><![CDATA[city]]></category>
		<category><![CDATA[metro]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[urban]]></category>

		<guid isPermaLink="false">http://www.zonkio.com/?p=1561</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_1562" class="wp-caption alignnone" style="width: 510px"><a href="http://www.zonkio.com/wp-content/uploads/2009/05/pict0011bw.jpg"><img class="size-medium wp-image-1562" title="Metro Center Station in Washington DC" src="http://www.zonkio.com/wp-content/uploads/2009/05/pict0011bw-500x375.jpg" alt="Metro Center Station in Washington DC" width="500" height="375" /></a><p class="wp-caption-text">Metro Center Station in Washington DC</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.zonkio.com/photo-metro-center-against-blackwhite-dc_1561.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://www.zonkio.com/wp-content/uploads/2009/05/pict0011bw-150x150.jpg" />
		<media:content url="http://www.zonkio.com/wp-content/uploads/2009/05/pict0011bw.jpg" medium="image">
			<media:title type="html">Metro Center Station in Washington DC</media:title>
			<media:description type="html">Metro Center Station in Washington DC</media:description>
			<media:thumbnail url="http://www.zonkio.com/wp-content/uploads/2009/05/pict0011bw-150x150.jpg" />
		</media:content>
	</item>
		<item>
		<title>PHP, Common String Functions</title>
		<link>http://www.zonkio.com/php-common-string-functions_763.html</link>
		<comments>http://www.zonkio.com/php-common-string-functions_763.html#comments</comments>
		<pubDate>Fri, 23 Jan 2009 21:59:56 +0000</pubDate>
		<dc:creator>Guest Submitted</dc:creator>
				<category><![CDATA[The Web]]></category>

		<guid isPermaLink="false">http://www.zonkio.com/?p=763</guid>
		<description><![CDATA[There are always those functions that you need to manipulate strings for whatever reason. Maybe it&#8221;s for validation purposes or sanitizing purposes or some kind of string conversion or searching. Here is a class that encapsulates alot of common string functions that I use alot. All functions that start with &#8220;is&#8221; are boolean functions: This [...]]]></description>
			<content:encoded><![CDATA[<p>There are always those functions that you need to manipulate strings for whatever reason. Maybe it&#8221;s for validation purposes or sanitizing purposes or some kind of string conversion or searching. Here is a class that encapsulates alot of common string functions that I use alot. All functions that start with &#8220;is&#8221; are boolean functions:</p>
<p><span id="more-763"></span></p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">class</span> string
<span class="br0">&#123;</span>
<span class="co4">/**
* Checks to see if string is only alphabetic
*
* @static
* @param string $value
* @param boolean $ignore_spaces
* @return boolean
* @category string
*/</span>
static <span class="kw2">function</span> isAlpha<span class="br0">&#40;</span><span class="re0">$value</span><span class="sy0">,</span> <span class="re0">$ignore_spaces</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ignore_spaces</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot; &quot;</span><span class="sy0">,</span> <span class="st0">&quot;&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">return</span> <a href="http://www.php.net/ctype_alpha"><span class="kw3">ctype_alpha</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Checks to see if string only contains letters and numbers
*
* @static
* @param string $value
* @param boolean $ignore_spaces
* @return boolean
* @category string
*/</span>
static <span class="kw2">function</span> isAlphaNum<span class="br0">&#40;</span><span class="re0">$value</span><span class="sy0">,</span> <span class="re0">$ignore_spaces</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ignore_spaces</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot; &quot;</span><span class="sy0">,</span> <span class="st0">&quot;&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">return</span> <a href="http://www.php.net/ctype_alnum"><span class="kw3">ctype_alnum</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Checks to see if a string is a hex
* @param string $value
* @return boolean
*/</span>
static <span class="kw2">function</span> isHex<span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">return</span> <a href="http://www.php.net/ctype_xdigit"><span class="kw3">ctype_xdigit</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Checks to see if a string is numeric
*
* @static
* @param string $value
* @param boolean $ignore_spaces
* @return boolean
* @category string
*/</span>
static <span class="kw2">function</span> isNumeric<span class="br0">&#40;</span><span class="re0">$value</span><span class="sy0">,</span> <span class="re0">$ignore_spaces</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ignore_spaces</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot; &quot;</span><span class="sy0">,</span> <span class="st0">&quot;&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">return</span> <a href="http://www.php.net/ctype_digit"><span class="kw3">ctype_digit</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
static <span class="kw2">function</span> isDate<span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/strtotime"><span class="kw3">strtotime</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span> <span class="sy0">!==</span> <span class="kw4">false</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Checks to see if string is a valid phone number
*
* @static
* @param string $value
* @return boolean
* @category string
*/</span>
static <span class="kw2">function</span> isPhone<span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/ereg"><span class="kw3">ereg</span></a><span class="br0">&#40;</span><span class="st0">&quot;^([0-9]( |-)?)?(\(?[0-9]{3}\)?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})$&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Checks to see if a string is an email
*
* @static
* @param string $value
* @param boolean $check_domain
* @return boolean
* @category string
*/</span>
<span class="kw2">public</span> static <span class="kw2">function</span> isEmail<span class="br0">&#40;</span><span class="re0">$value</span><span class="sy0">,</span> <span class="re0">$check_domain</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&quot;^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$check_domain</span> <span class="sy0">==</span> <span class="kw4">true</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<a href="http://www.php.net/list"><span class="kw3">list</span></a><span class="br0">&#40;</span><span class="re0">$userName</span><span class="sy0">,</span> <span class="re0">$mailDomain</span><span class="br0">&#41;</span> <span class="sy0">=</span> <a href="http://www.php.net/split"><span class="kw3">split</span></a><span class="br0">&#40;</span><span class="st0">&quot;@&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/checkdnsrr"><span class="kw3">checkdnsrr</span></a><span class="br0">&#40;</span><span class="re0">$mailDomain</span><span class="sy0">,</span> <span class="st0">&quot;MX&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="kw1">return</span> <span class="kw4">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Checks to see if a string is a valid zip code
*
* @static
* @param string $value
* @param boolean $extended
* @return boolean
* @category string
*/</span>
static <span class="kw2">function</span> isZip<span class="br0">&#40;</span><span class="re0">$value</span><span class="sy0">,</span> <span class="re0">$extended</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$extended</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/ereg"><span class="kw3">ereg</span></a><span class="br0">&#40;</span><span class="st0">&quot;^[0-9]{5}$&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/ereg"><span class="kw3">ereg</span></a><span class="br0">&#40;</span><span class="st0">&quot;^[0-9]{5}$&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span> <span class="sy0">||</span> <a href="http://www.php.net/ereg"><span class="kw3">ereg</span></a><span class="br0">&#40;</span><span class="st0">&quot;^[0-9]{5}-[0-9]{4}$&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Validates credit card number
*
* @static
* @param string $value
* @return boolean
* @category string
*/</span>
static <span class="kw2">function</span> isCreditCard<span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/ereg"><span class="kw3">ereg</span></a><span class="br0">&#40;</span><span class="st0">&quot;(^(4|5)\d{3}-?\d{4}-?\d{4}-?\d{4}|(4|5)\d{15})|(^(6011)-?\d{4}-?\d{4}-?\d{4}|(6011)-?\d{12})|(^((3\d{3}))-\d{6}-\d{5}|^((3\d{14})))&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Strips html out of a string
*
* @static
* @param string $value
* @category string
*/</span>
static <span class="kw2">function</span> stripHTML<span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$value</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#123;</span>0<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="re0">$breaks</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;&lt;br&gt;&quot;</span><span class="sy0">;</span>
<span class="re0">$breaks</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;&lt;br /&gt;&quot;</span><span class="sy0">;</span>
<span class="re0">$search</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'@&lt;script[^&gt;]*?&gt;.*?&lt;/script&gt;@si'</span><span class="sy0">,</span>  <span class="co1">// Strip out javascript</span>
<span class="st_h">'@&lt;style[^&gt;]*?&gt;.*?&lt;/style&gt;@siU'</span>    <span class="co1">// Strip style tags properly</span>
<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="re0">$search</span><span class="sy0">,</span> <span class="st_h">''</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/str_ireplace"><span class="kw3">str_ireplace</span></a><span class="br0">&#40;</span><span class="re0">$breaks</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es1">\r</span><span class="es1">\n</span>&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/trim"><span class="kw3">trim</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/strip_tags"><span class="kw3">strip_tags</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/html_entity_decode"><span class="kw3">html_entity_decode</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="sy0">,</span> <span class="kw4">ENT_QUOTES</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/addslashes"><span class="kw3">addslashes</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Cleans out script tags out of HTML
*
* @static
* @param string $value
* @category string
*/</span>
static <span class="kw2">function</span> cleanHTML<span class="br0">&#40;</span><span class="sy0">&amp;</span><span class="re0">$value</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="re0">$search</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'@&lt;script[^&gt;]*?&gt;.*?&lt;/script&gt;@si'</span><span class="sy0">,</span>  <span class="co1">// Strip out javascript</span>
<span class="st_h">'@&lt;style[^&gt;]*?&gt;.*?&lt;/style&gt;@siU'</span>    <span class="co1">// Strip style tags properly</span>
<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="re0">$search</span><span class="sy0">,</span> <span class="st_h">''</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$value</span> <span class="sy0">=</span> <a href="http://www.php.net/htmlentities"><span class="kw3">htmlentities</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
* Encodes all non alpha numeric characters in a URL with the '%' sign
*
* @static
* @param string $url
* @return string
* @example string.php how to use;
* @category string
*/</span>
static <span class="kw2">function</span> <a href="http://www.php.net/urlencode"><span class="kw3">UrlEncode</span></a><span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/strpos"><span class="kw3">strpos</span></a><span class="br0">&#40;</span><span class="re0">$url</span><span class="sy0">,</span> <span class="st_h">'?'</span><span class="br0">&#41;</span> <span class="sy0">===</span> <span class="kw4">false</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="re0">$url</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">else</span>
<span class="br0">&#123;</span>
<span class="re0">$startpos</span>  <span class="sy0">=</span> <a href="http://www.php.net/strpos"><span class="kw3">strpos</span></a><span class="br0">&#40;</span><span class="re0">$url</span><span class="sy0">,</span> <span class="st0">&quot;?&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$tmpurl</span>    <span class="sy0">=</span> <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$url</span><span class="sy0">,</span> 0 <span class="sy0">,</span> <span class="re0">$startpos</span><span class="sy0">+</span>1<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$qryStr</span>    <span class="sy0">=</span> <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$url</span><span class="sy0">,</span> <span class="re0">$startpos</span><span class="sy0">+</span>1<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$qryvalues</span> <span class="sy0">=</span> <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;&amp;&quot;</span><span class="sy0">,</span> <span class="re0">$qryStr</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$qryvalues</span> <span class="kw1">as</span> <span class="re0">$value</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="re0">$buffer</span>    <span class="sy0">=</span> <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;=&quot;</span><span class="sy0">,</span> <span class="re0">$value</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$buffer</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span> <span class="sy0">=</span> <a href="http://www.php.net/urlencode"><span class="kw3">urlencode</span></a><span class="br0">&#40;</span><span class="re0">$buffer</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$new_query_values</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <a href="http://www.php.net/implode"><span class="kw3">implode</span></a><span class="br0">&#40;</span><span class="st0">&quot;=&quot;</span><span class="sy0">,</span> <span class="re0">$buffer</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="re0">$finalqrystr</span> <span class="sy0">=</span><a href="http://www.php.net/implode"><span class="kw3">implode</span></a><span class="br0">&#40;</span><span class="st0">&quot;&amp;&quot;</span><span class="sy0">,</span> <span class="re0">$new_query_values</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$finalURL</span>    <span class="sy0">=</span><span class="re0">$tmpurl</span> <span class="sy0">.</span> <span class="re0">$finalqrystr</span><span class="sy0">;</span>
<span class="kw1">return</span> <span class="re0">$finalURL</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
*
* @param $length
* @return string
*/</span>
static <span class="kw2">function</span> generateID<span class="br0">&#40;</span><span class="re0">$length</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="re0">$random_id_length</span> <span class="sy0">=</span> <span class="re0">$length</span><span class="sy0">;</span>
<span class="re0">$rnd_id</span> <span class="sy0">=</span> <a href="http://www.php.net/crypt"><span class="kw3">crypt</span></a><span class="br0">&#40;</span><a href="http://www.php.net/uniqid"><span class="kw3">uniqid</span></a><span class="br0">&#40;</span><a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span>1<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$rnd_id</span> <span class="sy0">=</span> <a href="http://www.php.net/strip_tags"><span class="kw3">strip_tags</span></a><span class="br0">&#40;</span><a href="http://www.php.net/stripslashes"><span class="kw3">stripslashes</span></a><span class="br0">&#40;</span><span class="re0">$rnd_id</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$rnd_id</span> <span class="sy0">=</span> <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot;.&quot;</span><span class="sy0">,</span><span class="st0">&quot;&quot;</span><span class="sy0">,</span><span class="re0">$rnd_id</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$rnd_id</span> <span class="sy0">=</span> <a href="http://www.php.net/strrev"><span class="kw3">strrev</span></a><span class="br0">&#40;</span><a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot;/&quot;</span><span class="sy0">,</span><span class="st0">&quot;&quot;</span><span class="sy0">,</span><span class="re0">$rnd_id</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$rnd_id</span> <span class="sy0">=</span> <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$rnd_id</span><span class="sy0">,</span>0<span class="sy0">,</span><span class="re0">$random_id_length</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">return</span> <span class="re0">$rnd_id</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>This class has been documented using the phpdoc specification so that if you are using an IDE such as Eclipse PDT it will give you more direction. This class ecapsulates all of these functions and mimics namespaces for PHP. PHP 5.3 and above has namespaces as a part of the core of PHP, but for right now, static methods are the way to go for compatability sake.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonkio.com/php-common-string-functions_763.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" medium="image" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" medium="image" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" medium="image" />
	</item>
		<item>
		<title>The Javascript Injection Problem</title>
		<link>http://www.zonkio.com/the-javascript-injection-problem_685.html</link>
		<comments>http://www.zonkio.com/the-javascript-injection-problem_685.html#comments</comments>
		<pubDate>Tue, 20 Jan 2009 20:50:58 +0000</pubDate>
		<dc:creator>Guest Submitted</dc:creator>
				<category><![CDATA[The Web]]></category>
		<category><![CDATA[Javascript injection]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.zonkio.com/?p=685</guid>
		<description><![CDATA[What is it? Javascript injection is a commonly ignored security issue. Basically it is the idea that you can execute javascript in your address bar, or one of the numerous plugins that accompany web browsers such as greasemonkey, to change the DOM in any way you wish. So whats the big deal? Well the bottom [...]]]></description>
			<content:encoded><![CDATA[<h2>What is it?</h2>
<p>Javascript injection is a commonly ignored security issue. Basically it is the idea that you can execute javascript in your address bar, or one of the numerous plugins that accompany web browsers such as greasemonkey, to change the DOM in any way you wish. So whats the big deal? Well the bottom line is that there really shouldn&#8217;t be a big deal. This should not affect your web application in any way if you develop it right. However, there is alot of problems if you don&#8217;t understand the weakness.<br />
<span id="more-685"></span></p>
<h2>A Scenario</h2>
<p>I recently was working with a e-commerce form. The form had alot of hidden inputs and one of them being &#8220;price&#8221;. The issue with this is the fact that it is very easy to change<br />
<span style="text-decoration: underline;">anything</span> in the DOM. For instance, lets say you are a user that is using the ecommerce form to purchase something. You see in the code that you have:</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="html4strict" style="font-family:monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/form.html"><span class="kw2">form</span></a> <span class="kw3">method</span><span class="sy0">=</span><span class="st0">'post'</span> <span class="kw3">action</span><span class="sy0">=</span><span class="st0">'process.php'</span>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/input.html"><span class="kw2">input</span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">'hidden'</span> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">'price'</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">'price'</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/input.html"><span class="kw2">input</span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">'submit'</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">'Buy'</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/form.html"><span class="kw2">form</span></a>&gt;</span></pre></div></div>
<p>Assuming (of course) there is more fields in this form; the most interesting one &#8211; as a hacker &#8211; would be the &#8220;price&#8221; field. This indicates that the processing script depends on the html field (which is coming from the client) to process the price. So we (the hacker) now have a way to change this. Simply type:</p>
<p><div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="javascript" style="font-family:monospace;">javascript<span class="sy0">:</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'price'</span><span class="br0">&#41;</span>.<span class="me1">value</span> <span class="sy0">=</span> .01</pre></div></div><br />
in the address bar and hit &#8220;enter&#8221;. This changes the price from 300 to .01 and since the server script depends on this field, you will be charged 1 penny instead of $300. This is great news if your a hacker, but very bad news if your the web developer.</p>
<h2>The Ramifications</h2>
<p>The ramifications for a developer is that you must take care to only receive data from the client that you absolutely need <span style="text-decoration: underline;">from</span> the client. There is a lot of data that should be managed by sessions or database and not be sent to the client as this could be easily be modified by anyone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonkio.com/the-javascript-injection-problem_685.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" medium="image" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" medium="image" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" medium="image" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" medium="image" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" medium="image" />
		<media:content url="http://www.zonkio.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" medium="image" />
	</item>
	</channel>
</rss>

