<?xml version="1.0" encoding="iso-8859-1"?>
<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>CrankBerry Blog &#187; PHP Script</title>
	<atom:link href="http://www.crankberryblog.com/tag/php-script/feed" rel="self" type="application/rss+xml" />
	<link>http://www.crankberryblog.com</link>
	<description>Sharing ideas on web design, development and the internet economy</description>
	<lastBuildDate>Fri, 27 Aug 2010 17:43:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Function to replace variable value in URL</title>
		<link>http://www.crankberryblog.com/2010/function-to-replace-variable-value-in-url</link>
		<comments>http://www.crankberryblog.com/2010/function-to-replace-variable-value-in-url#comments</comments>
		<pubDate>Thu, 19 Aug 2010 08:00:05 +0000</pubDate>
		<dc:creator>Jerry Low</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[PHP Script]]></category>
		<category><![CDATA[Variable]]></category>

		<guid isPermaLink="false">http://www.crankberryblog.com/?p=386</guid>
		<description><![CDATA[Passing variables through the URL is awesome but how do you update, say, the id or the page when there's twenty different variables (index.php?id=2325213&#038;page=30&#038;view=210&#038;sort=213&#038;user=231221). Here's a quick function to create a new URL string that will replace values of specific variables. You can also remove variables which are not necessary.]]></description>
			<content:encoded><![CDATA[<p>Passing variables through the URL is awesome but how do you update, say, the id or the page when there&#039;s twenty different variables (index.php?id=2325213&#038;page=30&#038;view=210&#038;sort=213&#038;user=231221). Here&#039;s a quick function to create a new URL string that will replace values of specific variables. You can also remove variables which are not necessary.</p>
<p>First of all though you&#039;ll need this function here. This function will spit out the page name for you. If you are using htaccess rewrite for .htm then replace index.php with index.htm:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">function</span> getPage<span class="br0">&#40;</span><span class="re0">$page_url</span>, <span class="re0">$ex_qs</span>=<span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Filtering Page</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$get_page</span> = <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$page_url</span>, strripos<span class="br0">&#40;</span><span class="re0">$page_url</span>, <span class="st0">&#039;/&#039;</span><span class="br0">&#41;</span><span class="nu0">+1</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Position of The ?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <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="st0">&#039;.&#039;</span> . <span class="re0">$get_page</span>, <span class="st0">&#039;?&#039;</span><span class="br0">&#41;</span> == <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$get_page</span> = <span class="st0">&#039;index.htm&#039;</span> . <span class="re0">$get_page</span>; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Exempt Query String</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ex_qs</span>==<span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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">$get_page</span>, <span class="st0">&#039;?&#039;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$get_page</span> = <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$get_page</span>, <span class="nu0">0</span>, <a href="http://www.php.net/strpos"><span class="kw3">strpos</span></a><span class="br0">&#40;</span><span class="re0">$get_page</span>, <span class="st0">&#039;?&#039;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;&nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//They Want Only Query String</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span><span class="re0">$ex_qs</span>==<span class="nu0">2</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//There is A Query String</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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">$get_page</span>, <span class="st0">&#039;?&#039;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$currentQS</span> = <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$get_page</span>, <a href="http://www.php.net/strpos"><span class="kw3">strpos</span></a><span class="br0">&#40;</span><span class="re0">$get_page</span>, <span class="st0">&#039;?&#039;</span><span class="br0">&#41;</span><span class="nu0">+1</span>, <a href="http://www.php.net/strlen"><span class="kw3">strlen</span></a><span class="br0">&#40;</span><span class="re0">$get_page</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$currentQS</span> = <span class="st0">&#034;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$get_page</span> = <span class="re0">$currentQS</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$get_page</span>;<br />
<span class="br0">&#125;</span></div>
<p>Now for the function to replace variables:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">function</span> varURL<span class="br0">&#40;</span><span class="re0">$variables</span>, <span class="re0">$subtract_variables</span> = <span class="kw2">NULL</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Get Current Page</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gl_current_page</span> = getPage<span class="br0">&#40;</span><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#039;REQUEST_URI&#039;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gl_current_page_nqs</span> = getPage<span class="br0">&#40;</span><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#039;REQUEST_URI&#039;</span><span class="br0">&#93;</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$gl_current_ext</span> = getPage<span class="br0">&#40;</span><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#039;REQUEST_URI&#039;</span><span class="br0">&#93;</span>, <span class="nu0">2</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//If There&#039;s Extention in the Current Page</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$gl_current_ext</span>!=<span class="st0">&#034;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co1">//Return Extension</span><br />
&nbsp; &nbsp; <span class="re0">$returnExt</span> = <span class="re0">$gl_current_page</span>;<br />
&nbsp; &nbsp; <span class="re0">$currentExt</span> = <span class="st0">&#039;?&#039;</span> . <span class="re0">$gl_current_ext</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co1">//ADDING VAR *****************************************</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$variables</span>!=<span class="st0">&#034;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//If There Are Multiple Variables</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <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">$variables</span>, <span class="st0">&quot;&amp;&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Explode The String</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$explodeVar</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="re0">$variables</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$explodeVar</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="re0">$variables</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Check if Variables Changed</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$explodeVar</span> <span class="kw1">as</span> <span class="re0">$currentVar</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Not Empty</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$currentVar</span>!=<span class="st0">&#034;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Explode The Var</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$currentExplode</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="re0">$currentVar</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Find In Current String</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st0">&#039;/[<span class="es0">\?</span>|<span class="es0">\&#038;</span>]&#039;</span>.<span class="re0">$currentExplode</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="st0">&#039;=/&#039;</span>, <span class="re0">$currentExt</span><span class="br0">&#41;</span> &gt; <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Replace</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$currentExt</span> = <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st0">&#039;/&#039;</span>.<span class="re0">$currentExplode</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="st0">&#039;=[^<span class="es0">\&#038;</span>]*/&#039;</span>, <span class="re0">$currentVar</span>, <span class="re0">$currentExt</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Not In String Add to it</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$currentExt</span> .= <span class="st0">&#039;&amp;&#039;</span> . <span class="re0">$currentVar</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; <span class="co1">//Subtracting Var *****************************************</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$subtract_variables</span> != <span class="kw2">NULL</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//If There Are Multiple Variables</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <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">$subtract_variables</span>, <span class="st0">&quot;&amp;&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Explode The String</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$explodeVar</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="re0">$subtract_variables</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$explodeVar</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="re0">$subtract_variables</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Subtracting Them</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$explodeVar</span> <span class="kw1">as</span> <span class="re0">$currentVar</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Explode The Var</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$currentExplode</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="re0">$currentVar</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Find In Current String</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st0">&#039;/(&amp;|<span class="es0">\?</span>)&#039;</span>.<span class="re0">$currentExplode</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="st0">&#039;=/&#039;</span>, <span class="re0">$currentExt</span><span class="br0">&#41;</span> &gt; <span class="nu0">0</span><span class="br0">&#41;</span> <span class="re0">$currentExt</span> = <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st0">&#039;/(&amp;|<span class="es0">\?</span>)&#039;</span>.<span class="re0">$currentExplode</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="st0">&#039;=([^&amp;|$]+)/&#039;</span>, <span class="st0">&quot;$1&quot;</span>, <span class="re0">$currentExt</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Removing Duplicate</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$currentExt</span> = <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st0">&#039;/<span class="es0">\?</span>&amp;/&#039;</span>, <span class="st0">&#039;?&#039;</span>, <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st0">&#039;/&amp;&amp;/&#039;</span>, <span class="st0">&#039;&amp;&#039;</span>, <span class="re0">$currentExt</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co1">//Build Return Extention</span><br />
&nbsp; &nbsp; <span class="re0">$returnExt</span> = <span class="re0">$gl_current_page_nqs</span> . <span class="re0">$currentExt</span>;<br />
&nbsp; &nbsp; <br />
<span class="co1">//No Extention</span><br />
<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$returnExt</span> = <span class="re0">$gl_current_page_nqs</span> . <span class="st0">&#039;?&#039;</span>. <span class="re0">$variables</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co1">//Returning</span><br />
<span class="kw1">return</span> <span class="re0">$returnExt</span>;</p>
<p><span class="br0">&#125;</span></div>
<p>To use the function just use the following examples:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">//Replace the id with 5 and name with Berry</span><br />
&lt;a href=<span class="st0">&quot;&lt;?php varURL(&#039;id=5&amp;name=Berry&#039;); ?&gt;&quot;</span>&gt;Link&lt;/a&gt;</p>
<p><span class="co1">//Remove the id variables &#8211; just set the =1 the one will automatically be replaced anything</span><br />
&lt;a href=<span class="st0">&quot;&lt;?php varURL(&#034;, id=1); ?&gt;&quot;</span>&gt;Link&lt;/a&gt;</p>
<p><span class="co1">//Replace the id with 5 and remove the name variable</span><br />
&lt;a href=<span class="st0">&quot;&lt;?php varURL(&#039;id=5&#039;, &#039;name=Berry&#039;); ?&gt;&quot;</span>&gt;Link&lt;/a&gt;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.crankberryblog.com/2010/function-to-replace-variable-value-in-url/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Random row from your MySQL table with PHP, alternative to ORDER BY rand()</title>
		<link>http://www.crankberryblog.com/2010/random-row-from-your-mysql-table-with-php-alternative-to-order-by-rand</link>
		<comments>http://www.crankberryblog.com/2010/random-row-from-your-mysql-table-with-php-alternative-to-order-by-rand#comments</comments>
		<pubDate>Thu, 22 Apr 2010 21:28:04 +0000</pubDate>
		<dc:creator>Jerry Low</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Script]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://www.crankberryblog.com/?p=379</guid>
		<description><![CDATA[Working with MySQL and PHP is awesome. Its one of the best way to manage your data, but once in a while you may want to do some randomizing. One problem I came across recently was how to select a random row from your MySQL table with PHP. Using the ORDER BY rand() method in your query maybe a bit slow so here's what we've got.]]></description>
			<content:encoded><![CDATA[<p>Working with MySQL and PHP is awesome. Its one of the best way to manage your data, but once in a while you may want to do some randomizing. One problem I came across recently was how to select a random row from your MySQL table with PHP. Using the ORDER BY rand() method in your query maybe a bit slow so here&#039;s what we&#039;ve got.</p>
<h3>The Premade Method</h3>
<p>As I mentioned in the beginning. MySQL actually has a premade method that allows you to select a random row by querying for it.</p>
<div class="dean_ch" style="white-space: wrap;"><a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;SELECT * FROM table ORDER BY rand() LIMIT 0,1&quot;</span><span class="br0">&#41;</span>;</div>
<p>This method is great but if you are randomizing from a large table this method is not very efficient and with a high volume of queries it really puts a strain on your DB.</p>
<h3>The New Method &#8211; Randomizing 1 Entry</h3>
<p>Now here&#039;s the new solution by selecting a random row with the offset. This method will query exactly to the random entry; thus, making this process much faster.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$query</span> = <span class="st0">&quot;SELECT * FROM table&quot;</span><br />
<span class="re0">$num_rows</span> = <a href="http://www.php.net/mysql_num_rows"><span class="kw3">mysql_num_rows</span></a><span class="br0">&#40;</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span> <span class="re0">$query</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span>;</p>
<p><span class="co1">//Random Number</span><br />
<span class="re0">$rand_row</span> = <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">0</span>, <span class="re0">$num_rows</span> &#8211; <span class="nu0">1</span><span class="br0">&#41;</span>;</p>
<p><span class="co1">//Selecting the Random Row</span><br />
<span class="re0">$rand_row</span> = <span class="re0">$query</span> .= <span class="st0">&quot; LIMIT $rand_row, 1&quot;</span>;</div>
<p>Now you can modify the $query line to include your filters and sorting stuff, whatever you need.</p>
<h3>The New Method &#8211; Randomizing More than 1 Entry</h3>
<p>The above method right now can only select a single row. What if you want to randomized more than one item. Here&#039;s a method to select multiple items without overlap.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">//Set the Amount of Random Rows you want</span><br />
<span class="re0">$rand_amount</span> = <span class="nu0">5</span>;</p>
<p><span class="re0">$query</span> = <span class="st0">&quot;SELECT * FROM table&quot;</span><br />
<span class="re0">$num_rows</span> = <a href="http://www.php.net/mysql_num_rows"><span class="kw3">mysql_num_rows</span></a><span class="br0">&#40;</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span> <span class="re0">$query</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span>;</p>
<p><span class="co1">//Make sure you have more than the amount of random count you want</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$num_rows</span> &lt;= <span class="re0">$rand_amount</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//An Array of Numbers Choosen</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rand_array</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Do IT!!</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span> = <span class="nu0">1</span>; <span class="re0">$i</span> &gt;= <span class="re0">$rand_amount</span>; <span class="re0">$i</span>++ <span class="br0">&#41;</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">do</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rand_added</span> = <span class="kw2">FALSE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rand_num</span> = <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">0</span>, <span class="re0">$num_rows</span> &#8211; <span class="nu0">1</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Should We Add to Array</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!<a href="http://www.php.net/in_array"><span class="kw3">in_array</span></a><span class="br0">&#40;</span><span class="re0">$rand_num</span>, <span class="re0">$rand_array</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rand_array</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="re0">$rand_num</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rand_added</span> = <span class="kw2">TRUE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">while</span> <span class="br0">&#40;</span>!<span class="re0">$rand_added</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//You now have a set of random row numbers to choose from</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Display The Result of What you have</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$rand_array</span> <span class="kw1">as</span> <span class="re0">$rand_num</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$new_query</span> = <span class="re0">$query</span> . <span class="st0">&quot; LIMIT $rand_num, 1&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Displaying What you have</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current_row</span> = <a href="http://www.php.net/mysql_fetch_array"><span class="kw3">mysql_fetch_array</span></a><span class="br0">&#40;</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span> <span class="re0">$new_query</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
<p>To be honest you can use the multiple randomizer and just set the random amount to 1 but the other method saves you like 20 lines of code. Imagine how much faster that could be!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crankberryblog.com/2010/random-row-from-your-mysql-table-with-php-alternative-to-order-by-rand/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automated MySQL database backup with PHP and cronjob</title>
		<link>http://www.crankberryblog.com/2010/automated-mysql-database-backup-with-php-and-cronjob</link>
		<comments>http://www.crankberryblog.com/2010/automated-mysql-database-backup-with-php-and-cronjob#comments</comments>
		<pubDate>Fri, 16 Apr 2010 17:04:36 +0000</pubDate>
		<dc:creator>Jerry Low</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web Owners]]></category>
		<category><![CDATA[Cronjob]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP Script]]></category>

		<guid isPermaLink="false">http://www.crankberryblog.com/?p=373</guid>
		<description><![CDATA[At some point of working on your website you'll want to back up you MySQL database. This is they key for all of you building dynamic sites. If one day your server goes down or something you may have the files backed up but without the database you'll have to start from scratch again. If you operate a very slow-paced site then manual back up is fine but if you want to backup your database daily then it becomes tedious. I, myself is lazy so I came up with a PHP and Cronjob solution to automatically backup MySQL database.]]></description>
			<content:encoded><![CDATA[<p>At some point of working on your website you&#039;ll want to back up you MySQL database. This is they key for all of you building dynamic sites. If one day your server goes down or something you may have the files backed up but without the database you&#039;ll have to start from scratch again. If you operate a very slow-paced site then manual back up is fine but if you want to backup your database daily then it becomes tedious. I, myself is lazy so I came up with a PHP and Cronjob solution to automatically backup MySQL database.</p>
<h3>Automating It</h3>
<p><strong>What you need?</strong> The first thing you need to know how to do it set cronjobs. If you don&#039;t know how to do that you can <a href="http://www.crankberryblog.com/2009/setting-php-cron-job-with-crontab" title="Learn to set cronjobs">learn how to set cronjobs here</a>. The cronjob is what will automate your server to run the script and how often to run it.</p>
<h3>The Files</h3>
<p>All you&#039;ll need is two files to make this work. The first file, <strong>mysqldump.php</strong> can be grabbed from <a href="http://www.creativefactory.it/lab/">CreativeFactory.it</a>. The next thing you need is my backup.php file. Just create a file called <strong>backup.php</strong> and dump the following script inside.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">&lt;?php</span></p>
<p><span class="co1">//The File Name You Want To Use</span><br />
<span class="re0">$fileName</span> = <span class="st0">&#039;Filename&#039;</span>;</p>
<p><span class="co1">//Global</span><br />
<span class="re0">$sqlhost</span> = <span class="st0">&#039;localhost&#039;</span>;<br />
<span class="re0">$sqluser</span> = <span class="st0">&#039;db_user&#039;</span>;<br />
<span class="re0">$sqlpass</span> = <span class="st0">&#039;db_password&#039;</span>;<br />
<span class="re0">$sqldb</span> = <span class="st0">&#039;db_name&#039;</span>;</p>
<p><span class="co1">//**********************************</span><br />
<span class="co1">//You Don&#039;t Need to Edit This</span><br />
<span class="co1">//**********************************</span></p>
<p><span class="co1">//Today&#039;s Timestamp</span><br />
<span class="re0">$today_ts</span> = <a href="http://www.php.net/strtotime"><span class="kw3">strtotime</span></a><span class="br0">&#40;</span><span class="st0">&quot;now&quot;</span><span class="br0">&#41;</span>;</p>
<p>
<span class="re0">$backupDate</span> = <a href="http://www.php.net/date"><span class="kw3">date</span></a><span class="br0">&#40;</span><span class="st0">&#039;y.m.d.h.i&#039;</span>, <span class="re0">$today_ts</span><span class="br0">&#41;</span>;<br />
<span class="re0">$backupFile</span> = &nbsp;<span class="re0">$backupDate</span>.<span class="st0">&#039;- &#039;</span>.<span class="re0">$fileName</span>.<span class="st0">&#039;.txt&#039;</span>;</p>
<p><span class="co1">//Connect to mysql server</span><br />
<span class="re0">$connessione</span> = @<a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="re0">$sqlhost</span>,<span class="re0">$sqluser</span>,<span class="re0">$sqlpass</span><span class="br0">&#41;</span>;</p>
<p><span class="co1">//Include class</span><br />
<span class="kw1">require_once</span><span class="br0">&#40;</span><span class="st0">&#039;mysqldump.php&#039;</span><span class="br0">&#41;</span>;</p>
<p><span class="co1">//Create new instance of MySQLDump</span><br />
<span class="re0">$dumper</span> = <span class="kw2">new</span> MySQLDump<span class="br0">&#40;</span><span class="re0">$sqldb</span><span class="br0">&#41;</span>;</p>
<p><span class="co1">//If you want to write the MySQL dump to file</span><br />
<span class="re0">$dumper</span>-&gt;<span class="me1">writeDump</span><span class="br0">&#40;</span><span class="re0">$backupFile</span><span class="br0">&#41;</span>;</p>
<p><span class="kw2">?&gt;</span></div>
<h3>The Setup</h3>
<p>Configure the first file variables of the script and then just leave the rest. Put the backup.php and mysqldump.php in the same folder where you want the back up files to be dumped. Set the cronjob to run backup.php you don&#039;t need to worry about mysqldump.php. That&#039;s it, it&#039;ll automatically backup.</p>
<h3>Possible Problems</h3>
<p>The problems that you may experience is the MySQL privileges. If your account doesn&#039;t have enough privilege then you may not be able to properly query the database. Another problem maybe the CHMOD of the folder you&#039;re backing up to. You need to have write access into that folder.</p>
<h3>Recovering from Backup</h3>
<p>To recover you database just log into your phpMyAdmin, open the database you want to recover. Select the import tab and just browse for the file. If I recall the file itself should overwrite tables that are already in place if not then you may have to drop all the tables first.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crankberryblog.com/2010/automated-mysql-database-backup-with-php-and-cronjob/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP password strength detector script</title>
		<link>http://www.crankberryblog.com/2010/php-password-strength-detector-script</link>
		<comments>http://www.crankberryblog.com/2010/php-password-strength-detector-script#comments</comments>
		<pubDate>Wed, 17 Feb 2010 08:23:34 +0000</pubDate>
		<dc:creator>Jerry Low</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Script]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.crankberryblog.com/?p=333</guid>
		<description><![CDATA[If you operate a user registration script on your website you may want to ensure users are protected. There are certain aspects of this you cannot control such as the user's self selected password. Here I have a script that will detect the user's password strength and base on that you could reject the password or just make notice to the user their password's strength.

<img src="http://www.crankberryblog.com/images/password-strength-detector.jpg" alt="PHP Password Strength Detector Script" />]]></description>
			<content:encoded><![CDATA[<p>If you operate a user registration script on your website you may want to ensure users are protected. There are certain aspects of this you cannot control such as the user&#039;s self selected password. Here I have a script that will detect the user&#039;s password strength and base on that you could reject the password or just make notice to the user their password&#039;s strength.</p>
<p><img src="http://www.crankberryblog.com/images/password-strength-detector.jpg" alt="PHP Password Strength Detector Script" /></p>
<p>Basically we&#039;re checking against a few things here and we give a rating to each criteria and then add up the final score to see where they rank. Here is what we&#039;ll be checking against:</p>
<ul>
<li>Length &#8211; 10 Points</li>
<li>Lower Case Characters &#8211; 20 Points</li>
<li>Upper Case Characters &#8211; 20 Points</li>
<li>Numbers &#8211; 20 Points</li>
<li>Special Characters &#8211; 30 Points</li>
</ul>
<p></p>
<p>The points are given based on how much value they may add to the password. Enough talking I present you the function:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">function</span> password_strength<span class="br0">&#40;</span><span class="re0">$password</span>, <span class="re0">$display</span> = <span class="kw2">TRUE</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Strength Scoring</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pass_score</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pass_len</span> = <span class="kw2">FALSE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pass_lc</span> = <span class="kw2">FALSE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pass_uc</span> = <span class="kw2">FALSE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pass_num</span> = <span class="kw2">FALSE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pass_weird</span> = <span class="kw2">FALSE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Pad</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$password</span> = <span class="nu0">0</span> . <span class="re0">$password</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Check Length</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/strlen"><span class="kw3">strlen</span></a><span class="br0">&#40;</span><span class="re0">$password</span><span class="br0">&#41;</span>&gt;<span class="nu0">6</span><span class="br0">&#41;</span> <span class="re0">$pass_len</span> = <span class="kw2">TRUE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Check Lowercase Characters</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span> = <span class="nu0">97</span>; <span class="re0">$i</span> &lt;=<span class="nu0">122</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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">$password</span>, <a href="http://www.php.net/chr"><span class="kw3">chr</span></a><span class="br0">&#40;</span><span class="re0">$i</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$pass_lc</span> = <span class="kw2">TRUE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Check Uppercase Characters</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span> = <span class="nu0">65</span>; <span class="re0">$i</span> &lt;=<span class="nu0">90</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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">$password</span>, <a href="http://www.php.net/chr"><span class="kw3">chr</span></a><span class="br0">&#40;</span><span class="re0">$i</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$pass_uc</span> = <span class="kw2">TRUE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Check Numbers</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span> = <span class="nu0">48</span>; <span class="re0">$i</span> &lt;=<span class="nu0">57</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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">$password</span>, <a href="http://www.php.net/chr"><span class="kw3">chr</span></a><span class="br0">&#40;</span><span class="re0">$i</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$pass_num</span> = <span class="kw2">TRUE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Check Weird Characters</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span> = <span class="nu0">33</span>; <span class="re0">$i</span> &lt;=<span class="nu0">126</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Excempt</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re0">$i</span>&gt;<span class="nu0">47</span> &amp;&amp; <span class="re0">$i</span>&lt;<span class="nu0">58</span><span class="br0">&#41;</span> || <span class="br0">&#40;</span><span class="re0">$i</span>&gt;<span class="nu0">64</span> &amp;&amp; <span class="re0">$i</span>&lt;<span class="nu0">91</span><span class="br0">&#41;</span> || <span class="br0">&#40;</span><span class="re0">$i</span>&gt;<span class="nu0">96</span> &amp;&amp; <span class="re0">$i</span>&lt;<span class="nu0">123</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Null</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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">$password</span>, <a href="http://www.php.net/chr"><span class="kw3">chr</span></a><span class="br0">&#40;</span><span class="re0">$i</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$pass_weird</span> = <span class="kw2">TRUE</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Points</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$pass_len</span><span class="br0">&#41;</span> <span class="re0">$pass_score</span> = <span class="re0">$pass_score</span> + <span class="nu0">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$pass_lc</span><span class="br0">&#41;</span> <span class="re0">$pass_score</span> = <span class="re0">$pass_score</span> + <span class="nu0">20</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$pass_uc</span><span class="br0">&#41;</span> <span class="re0">$pass_score</span> = <span class="re0">$pass_score</span> + <span class="nu0">20</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$pass_num</span><span class="br0">&#41;</span> <span class="re0">$pass_score</span> = <span class="re0">$pass_score</span> + <span class="nu0">20</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$pass_weird</span><span class="br0">&#41;</span> <span class="re0">$pass_score</span> = <span class="re0">$pass_score</span> + <span class="nu0">30</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Displaying</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$display</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#039;&lt;div style=&quot;width: 210px; height: 15px; border: 1px solid #919191; padding: 1px; font-size: 9px; color: #FFFFFF; font-family: Arial;&quot;&gt;&#039;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$pass_score</span> &lt;= <span class="nu0">40</span><span class="br0">&#41;</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#039;&lt;div style=&quot;width: 65px; height: 13px; background: #910e0e; padding: 2px 0 0 5px;&quot;&gt;WEAK&lt;/div&gt;&#039;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$pass_score</span> &gt; <span class="nu0">40</span> &amp;&amp; <span class="re0">$pass_score</span> &lt; <span class="nu0">70</span><span class="br0">&#41;</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#039;&lt;div style=&quot;width: 135px; height: 13px; background: #ceb827; padding: 2px 0 0 5px;&quot;&gt;AVERAGE&lt;/div&gt;&#039;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$pass_score</span> &gt;= <span class="nu0">71</span><span class="br0">&#41;</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#039;&lt;div style=&quot;width: 205px; height: 13px; background: #3ca01a; padding: 2px 0 0 5px;&quot;&gt;STRONG&lt;/div&gt;&#039;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#039;&lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#039;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$pass_score</span>;<br />
<span class="br0">&#125;</span></div>
<p>The script itself has a built in display bar which will visuallize how strong or weak the password maybe which could turn off. Here&#039;s an example of calling the script:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$password</span> = <span class="st0">&quot;GoodBoy&quot;</span>;</p>
<p><span class="co1">//Showing the Password Strength with Visual Bar</span><br />
password_strength<span class="br0">&#40;</span><span class="re0">$password</span><span class="br0">&#41;</span>;</p>
<p><span class="co1">//Not Showing anything at all but storing strength as a variable</span><br />
<span class="re0">$strength</span> = password_strength<span class="br0">&#40;</span><span class="re0">$password</span>, <span class="kw2">FALSE</span><span class="br0">&#41;</span>;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.crankberryblog.com/2010/php-password-strength-detector-script/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Secure PHP login without database</title>
		<link>http://www.crankberryblog.com/2009/secure-php-login-without-database</link>
		<comments>http://www.crankberryblog.com/2009/secure-php-login-without-database#comments</comments>
		<pubDate>Fri, 23 Oct 2009 22:55:09 +0000</pubDate>
		<dc:creator>Jerry Low</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Security]]></category>
		<category><![CDATA[PHP Script]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.crankberryblog.com/?p=143</guid>
		<description><![CDATA[Although not recommended but maybe for some reason you need to create a PHP login without the use of any database (SQL). For some reason you maybe scared to approach, but here I made a script that is fairly secure without utilizing any database at all. It allows users to login and stay logged in. If you are one of those people then here's the script for you. ]]></description>
			<content:encoded><![CDATA[<p>Although not recommended but maybe for some reason you need to create a PHP login without the use of any database (SQL). For some reason you maybe scared to approach, but here I made a script that is fairly secure without utilizing any database at all. It allows users to login and stay logged in. If you are one of those people then here&#039;s the script for you.</p>
<p>Now this script does not use any external files to store user names and password as it opens up more security flaws for hackers, so everything is managed in an array within the PHP. If somebody was able to get a hold of your PHP file this will compromise things but the chances of that happening is fairly close to utilizing a database. </p>
<p><strong>Features</strong></p>
<ul>
<li>Utilizes cookies to give users ability to stay logged in across multiple pages</li>
<li>Secure login algorithm mitigates hacking attempts</li>
</ul>
<p><strong>Drawbacks</strong></p>
<p>Now by not utilizing a database there are some drawbacks and they are:</p>
<ul>
<li>Users cannot change password and user names manually</li>
<li>Users can attempt login as many times as they want</li>
</ul>
<p>With that said, it means that usernames and passwords must be managed by an admin. If this is still something for you. If this is not for you wait around because I will convert this script into a database version in the future.</p>
<h3>Less Talk More Script</h3>
<p>Installation:</p>
<p>Just download all the necessary files which includes:</p>
<ul>
<li>_login.php</li>
<li>_login_page.php</li>
<li>_login_class.php</li>
<li>_login_users.php</li>
<li>login.php</li>
<li>logout.php</li>
</ul>
<p>Once you put these in your root folder you need to edit the users and settings. Open up _login_users.php and you&#039;ll see:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">&lt;?php</span></p>
<p><span class="co1">//My Login Script</span><br />
<span class="co1">//Attach this to any page that requires Login</span></p>
<p>
<span class="co1">//Users and Settings</span><br />
<span class="re0">$domain_code</span> = <span class="st0">&#039;website&#039;</span>;&nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">//Alpha Numeric and no space</span><br />
<span class="re0">$random_num_1</span> = <span class="nu0">20</span>;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Pick a random number between 1 to 500</span><br />
<span class="re0">$random_num_2</span> = <span class="nu0">565</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Pick a random number between 500 to 1000</span><br />
<span class="re0">$random_num_3</span> = <span class="nu0">3</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Pick a random number between 1 to 3</span></p>
<p><span class="co1">//Usernames can contain alphabets, numbers, hyphens and underscore only</span><br />
<span class="co1">//Set users below &#8211; Just add &#034; =&gt; &#034; with the first &#034; being</span><br />
<span class="co1">//the username and the second &#034; after the =&gt; being the password.</span><br />
<span class="co1">//Its an array so add an , after every password except for the</span><br />
<span class="co1">//last one in the list. As shown below</span><br />
<span class="co1">//Eg. $users = array(</span><br />
<span class="co1">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#039;user1&#039; =&gt; &#039;password&#039;,</span><br />
<span class="co1">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#039;user2&#039; =&gt; &#039;password&#039;</span><br />
<span class="co1">//&nbsp; &nbsp; &nbsp; );</span></p>
<p><span class="re0">$users</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#039;user1&#039;</span> =&gt; <span class="st0">&#039;password&#039;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#039;user2&#039;</span> =&gt; <span class="st0">&#039;password&#039;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>;</p>
<p>
<span class="kw2">?&gt;</span></div>
<p>Modify the domain code and three random numbers. The three random numbers is the key that makes login <em>secure and unique</em> to your website only. Then at the bottom you can create all of your users.</p>
<p>Now in every page that you require the user to login just add the following code to the very top of the page, exactly on line 1.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">&lt;?php</span> <span class="kw1">require</span><span class="br0">&#40;</span><span class="st0">&#039;_login.php&#039;</span><span class="br0">&#41;</span>; <span class="kw2">?&gt;</span></div>
<p>That&#039;s pretty much all you need to do to install the secure login script. The only other thing if you want is you can edit _login_page.php. That&#039;s the page people see when they need to login.</p>
<p><strong>Login and Logout</strong></p>
<p>You can lead users to login and logout with links to login.php and logout.php as such.</p>
<div class="dean_ch" style="white-space: wrap;">&lt;a href=&quot;login.php&quot;&gt;Login&lt;/a&gt; | &lt;a href=&quot;logout.php&quot;&gt;Logout&lt;/a&gt;</div>
<p><strong>Displaying Macors</strong></p>
<p>In this case the only macro you can call up is the username after they have logged in. You can call it in a welcome back message like this (placed in your HTML).</p>
<div class="dean_ch" style="white-space: wrap;">Welcome back <span class="kw2">&lt;?php</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$login</span>-&gt;<span class="me1">username</span>; <span class="kw2">?&gt;</span></div>
<p><strong>Download the files:</strong><br />
<a href="http://www.crankberryblog.com/files/php-login-without-database.zip">PHP Login Without Database.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.crankberryblog.com/2009/secure-php-login-without-database/feed</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
	</channel>
</rss>
