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

<channel>
	<title>Ivan Villareal &#187;  &#8211; Ivan Villareal</title>
	<atom:link href="http://ivanvillareal.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ivanvillareal.com</link>
	<description>IT stuff and more...</description>
	<lastBuildDate>Tue, 01 Nov 2011 23:00:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Create a multiuser git repository with gitolite</title>
		<link>http://ivanvillareal.com/development/create-a-multiuser-git-repository-with-gitolite/</link>
		<comments>http://ivanvillareal.com/development/create-a-multiuser-git-repository-with-gitolite/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 22:57:54 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[repository]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=253</guid>
		<description><![CDATA[I use git for almost all my developments, is fast, it works locally, and I can even use it as a quick deployment tool, by adding hooks, but when it [...]]]></description>
			<content:encoded><![CDATA[<p>I use git for almost all my developments, is fast, it works locally, and I can even use it as a quick deployment tool, by adding hooks, but when it comes to sharing a repository to other developers, I don&#8217;t like the idea of creating a user account in the system for each developer, so the easiest and fastest way to solve this issue for me is using <a href="https://github.com/sitaramc/gitolite">gitolite</a>.</p>
<p>In this post I will describe the steps needed to setup a central repository for multiple users. I&#8217;m using Centos 5.5 as server and debian as a workstation</p>
<h2>Create a user account in the server and install git</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>bp ~<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># useradd -m git </span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>bp ~<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># passwd git</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>bp ~<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># yum install git</span></pre></div></div>

<h2>Copy your public key from our workstation to the server</h2>
<p>If you don&#8217;t know how to setup an ssh passwordless login, take a look <a href="http://ivanvillareal.com/linux/setting-up-ssh-keys-for-passwordless-login/">here</a></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>scorpion:~$ <span style="color: #c20cb9; font-weight: bold;">scp</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa.pub <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>bp.com:~<span style="color: #000000; font-weight: bold;">/</span>ivan.pub</pre></div></div>

<h2>Clone gitolite into the server</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>scorpion:~$ <span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>bp
<span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>bp: ~$ <span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">git</span>:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>sitaramc<span style="color: #000000; font-weight: bold;">/</span>gitolite
<span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>bp: ~$ <span style="color: #7a0874; font-weight: bold;">cd</span> gitolite
<span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>bp: ~$ src<span style="color: #000000; font-weight: bold;">/</span>gl-system-install
<span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>bp: ~$ gl-setup ~<span style="color: #000000; font-weight: bold;">/</span>ivan.pub</pre></div></div>

<h2>Go to the workstation to manage the git repo</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>scorpion:~$ <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> git<span style="color: #000000; font-weight: bold;">/</span>bprepo
ivan<span style="color: #000000; font-weight: bold;">@</span>scorpion:~$ <span style="color: #7a0874; font-weight: bold;">cd</span> git<span style="color: #000000; font-weight: bold;">/</span>bprepo
ivan<span style="color: #000000; font-weight: bold;">@</span>scorpion:~$ <span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>bp:gitolite-admin</pre></div></div>

<p>At this point we have 2 folders inside gitolite-admin conf/ and keydir/ the first one is used to create new repositories or add users to repositories the second one is for adding each user public key.</p>
<p>Once you have added new repositories and users you need to do a
<pre>git push origin master</pre>
<p> on each new repo</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/development/create-a-multiuser-git-repository-with-gitolite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NFS Mac OSX Lion</title>
		<link>http://ivanvillareal.com/osx/nfs-mac-osx-lion/</link>
		<comments>http://ivanvillareal.com/osx/nfs-mac-osx-lion/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 19:37:57 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[nfs]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/uncategorized/nfs-mac-osx-lion/</guid>
		<description><![CDATA[I was in the need of sharing files from a mac osx 10.7 and some linux servers, so I tought this would be a simple process just like in linux, [...]]]></description>
			<content:encoded><![CDATA[<p>I was in the need of sharing files from a mac osx 10.7 and some linux servers, so I tought this would be a simple process just like in linux, but I found some issues that prevented me to mount exported dirs to the mac or setup a nfsd on the mac OS, this is more a reminder to my self about how I was able to perform that.</p>
<p>Case 1 &#8211; Mac OSX as NFS server:</p>
<p>this problem with this one is that the syntax of the exports is different from what I know, but after changing some options I was able to export the Users folder on the mac with the following line:</p>
<pre>/Users -alldirs -network 192.168.0.0 -mask 255.255.0.0</pre>
<p>to mount the above on my linux box I used this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>orion:~$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> nfs macbox:Users<span style="color: #000000; font-weight: bold;">/</span>ivan<span style="color: #000000; font-weight: bold;">/</span> ivanomac</pre></div></div>

<p>Only problem found was the weird group and user numbers, so that needs to be mapped out, but because I was only to get some files from the mac I didn’t bother doing that.</p>
<p>Case 2 &#8211; Linux NFS server Mac OSX client:</p>
<p>This case is because I have a dev vm, and I need to do constant changes from the mac, the linux flavor of the vm is Ubuntu Server 11.04 and to get the nfs server running I did the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">scorpion ~<span style="color: #666666; font-style: italic;"># apt-get install nfs-kernel-server nfs-common portmap</span>
scorpion ~<span style="color: #666666; font-style: italic;"># echo “/var/www 192.168.0.0/16(rw,no_subtree_check,no_root_squash)” &amp;gt;&amp;gt; /etc/exports</span>
scorpion ~<span style="color: #666666; font-style: italic;"># exportfs -a</span></pre></div></div>

<p>and on the mac I ran the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>ivan<span style="color: #000000; font-weight: bold;">@</span>kunglao:~<span style="color: #007800;">$sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> nfs <span style="color: #660033;">-o</span> resvport,<span style="color: #007800;">vers</span>=<span style="color: #000000;">4</span> scorpion:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www scorpion</pre></div></div>

<p>with the above I was able to view the files on the ubuntu server, however when I mounted the same export on another ubuntu machine I got the uid/gid wrong, to fix that I just ran the idmapd service on the client machine.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">orion ~ <span style="color: #666666; font-style: italic;"># service idmapd start</span>
orion ~<span style="color: #666666; font-style: italic;"># mount -t nfs scorpion:/var/www scorpion</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/osx/nfs-mac-osx-lion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl script to manage virtual hosts</title>
		<link>http://ivanvillareal.com/linux/perl-script-to-manage-virtual-hosts/</link>
		<comments>http://ivanvillareal.com/linux/perl-script-to-manage-virtual-hosts/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 19:54:57 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vhost]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=237</guid>
		<description><![CDATA[I did this script a while back, and I&#8217;ve been using it on gentoo, ubuntu and centos distros with a few changes, this can be extended to add new functionality, [...]]]></description>
			<content:encoded><![CDATA[<p>I did this script a while back, and I&#8217;ve been using it on gentoo, ubuntu and centos distros with a few changes, this can be extended to add new functionality, and it may contain bugs, but so far it has worked for me pretty well, I can add/remove virtual hosts very quickly.</p>
<p>To use this script you only need the packages File::Path and Getopt::Long; both of them are already on newer distros, just put the script somewhere I have it in /usr/local/bin and call it with sudo.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>orion:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>vhosts$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> vhost-updater.pl <span style="color: #660033;">--add</span> <span style="color: #660033;">--domain</span> test.orion</pre></div></div>

<p>This is the output:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Creating docroot <span style="color: #c20cb9; font-weight: bold;">dir</span>: <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>vhosts<span style="color: #000000; font-weight: bold;">/</span>test.orion<span style="color: #000000; font-weight: bold;">/</span>public_html 
Creating log <span style="color: #c20cb9; font-weight: bold;">dir</span>: <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>vhosts<span style="color: #000000; font-weight: bold;">/</span>test.orion<span style="color: #000000; font-weight: bold;">/</span>logs 
Site File: <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span>test.orion 
Creating Vhost... 
Adding host test.orion 
Run <span style="color: #ff0000;">'/etc/init.d/apache2 reload'</span> to activate new configuration<span style="color: #000000; font-weight: bold;">!</span>
Restarting apache 
 <span style="color: #000000; font-weight: bold;">*</span> Restarting web server apache2
 ... waiting    ...done.</pre></div></div>

<p>Once it has finished, point your browser to http://test.orion, and you&#8217;re done.</p>
<p>Enjoy!</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl -w</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#############################################################</span>
<span style="color: #666666; font-style: italic;"># The purpose of this script is to add/remove				# </span>
<span style="color: #666666; font-style: italic;"># virtual hosts easily, this script runs 					#</span>
<span style="color: #666666; font-style: italic;"># on Ubuntu/Debian withouth modifications. 					#</span>
<span style="color: #666666; font-style: italic;">#         													#	</span>
<span style="color: #666666; font-style: italic;">#         													#	</span>
<span style="color: #666666; font-style: italic;"># Author Ivan Villareal ivaano@gmail.com					#</span>
<span style="color: #666666; font-style: italic;">#         													#	</span>
<span style="color: #666666; font-style: italic;">#############################################################</span>
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> File<span style="color: #339933;">::</span><span style="color: #006600;">Path</span> <span style="color: #000066;">qw</span><span style="color: #009900;">&#40;</span>mkpath rmtree<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Getopt<span style="color: #339933;">::</span><span style="color: #006600;">Long</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #b1b100;">our</span> <span style="color: #0000ff;">$ipAddress</span>        <span style="color: #339933;">=</span> <span style="color: #ff0000;">'127.0.0.1'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">our</span> <span style="color: #0000ff;">$apacheConfigDir</span>  <span style="color: #339933;">=</span> <span style="color: #ff0000;">'/etc/apache2'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">our</span> <span style="color: #0000ff;">$sitesAvailable</span>   <span style="color: #339933;">=</span> <span style="color: #ff0000;">'sites-available'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">our</span> <span style="color: #0000ff;">$docRootPrefix</span>    <span style="color: #339933;">=</span> <span style="color: #ff0000;">'/var/www/vhosts'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">our</span> <span style="color: #0000ff;">$docRoot</span>          <span style="color: #339933;">=</span> <span style="color: #ff0000;">'public_html'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">our</span> <span style="color: #0000ff;">$logsDir</span>          <span style="color: #339933;">=</span> <span style="color: #ff0000;">'logs'</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$del</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">''</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$add</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">''</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$domain</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">''</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">getpwuid</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$&lt;</span> <span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">ne</span> <span style="color: #ff0000;">'root'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Script needs root privileges <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">unless</span> <span style="color: #009900;">&#40;</span>GetOptions <span style="color: #009900;">&#40;</span>
		<span style="color: #ff0000;">'del'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">\$del</span><span style="color: #339933;">,</span> 
		<span style="color: #ff0000;">'add'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">\$add</span><span style="color: #339933;">,</span> 
		<span style="color: #ff0000;">'domain=s'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">\$domain</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> usage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    usage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#print $paramResults;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$add</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">$del</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$domain</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$add</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            createVhost<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$domain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$del</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            deleteVhost<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$domain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        usage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    usage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> usage <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">&lt;</span>USAGE
This program will add <span style="color: #b1b100;">or</span> remove apache virtual hosts<span style="color: #339933;">.</span>
&nbsp;
usage<span style="color: #339933;">:</span> vhost<span style="color: #339933;">-</span>updater<span style="color: #339933;">.</span>pl <span style="color: #009900;">&#91;</span><span style="color: #339933;">--</span>add <span style="color: #339933;">|</span> <span style="color: #339933;">--</span>del<span style="color: #009900;">&#93;</span> <span style="color: #339933;">--</span>domain newhost<span style="color: #339933;">.</span>tld 
USAGE
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> returnVhostPaths
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$vhost</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@dir</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\//</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$docRootPrefix</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%res</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@dir</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$vhost</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$hostDir</span> <span style="color: #339933;">=</span> <span style="color: #000066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">@dir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$res</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'docRoot'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$hostDir</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$docRoot</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$res</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'logsDir'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$hostDir</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">'/'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$logsDir</span><span style="color: #339933;">;</span>
	<span style="color: #0000ff;">$res</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'hostDir'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$hostDir</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">#todo dir validation</span>
    <span style="color: #0000ff;">@dir</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\//</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$apacheConfigDir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@dir</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$sitesAvailable</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@dir</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$vhost</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$res</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'apacheConfig'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">@dir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066;">return</span> <span style="color: #0000ff;">%res</span><span style="color: #339933;">;</span>   
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> createVhost <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$vhost</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">#first create the docRoot</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%vhostInfo</span> <span style="color: #339933;">=</span> returnVhostPaths<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$vhost</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    informOut<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Creating docroot dir: $vhostInfo{'docRoot'}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    mkpath<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$vhostInfo</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'docRoot'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$user</span> <span style="color: #339933;">=</span> <span style="color: #000066;">getlogin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$uid</span>  <span style="color: #339933;">=</span> <span style="color: #000066;">getpwnam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$user</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$gid</span>  <span style="color: #339933;">=</span> <span style="color: #000066;">getgrnam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$user</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">chown</span> <span style="color: #0000ff;">$uid</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$gid</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$vhostInfo</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'hostDir'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">chown</span> <span style="color: #0000ff;">$uid</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$gid</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$vhostInfo</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'docRoot'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    informOut<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Creating log dir: $vhostInfo{'logsDir'}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    mkpath<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$vhostInfo</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'logsDir'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    informOut<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Site File: $vhostInfo{'apacheConfig'}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$vhostContent</span> <span style="color: #339933;">=</span> <span style="color: #cc0000; font-style: italic;">&lt;&lt; &quot;EOF&quot;;
&lt;VirtualHost *:80&gt;
    ServerName $vhost
    DocumentRoot $vhostInfo{'docRoot'}
    &lt;directory $vhostInfo{'docRoot'}&gt;
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    &lt;/directory&gt;
        ErrorLog $vhostInfo{'logsDir'}/error_log
        CustomLog $vhostInfo{'logsDir'}/access_log &quot;%h %l %u %t \\&quot;%r\\&quot; %&gt;s %b \\&quot;%{Referer}i\\&quot; \\&quot;%{User-agent}i\\&quot;&quot;
        LogLevel debug
&nbsp;
&nbsp;
EOF</span>
    informOut<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Creating Vhost...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">open</span> FILE<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&gt;&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$vhostInfo</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'apacheConfig'</span><span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #0000ff;">$!</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> FILE <span style="color: #0000ff;">$vhostContent</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">close</span> FILE<span style="color: #339933;">;</span>
&nbsp;
    informOut<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Adding host $vhost&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">open</span> FILE<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&gt;&gt;&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'/etc/hosts'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #0000ff;">$!</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> FILE <span style="color: #0000ff;">$ipAddress</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">$vhost</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">close</span> FILE<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$output</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`/usr/sbin/a2ensite $vhost`</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #0000ff;">$output</span><span style="color: #339933;">;</span>
&nbsp;
    restartApache<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">#print $vhostConten t;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> restartApache
<span style="color: #009900;">&#123;</span>
    informOut<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Restarting apache&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$output</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`/etc/init.d/apache2 restart`</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #0000ff;">$output</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> deleteVhost
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$vhost</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%vhostInfo</span> <span style="color: #339933;">=</span> returnVhostPaths<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$vhost</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    informOut<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Removing $vhost from hosts file&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">open</span> IN<span style="color: #339933;">,</span> <span style="color: #ff0000;">'&lt; '</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'/etc/hosts'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #0000ff;">$!</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@hostsFile</span> <span style="color: #339933;">=</span> <span style="color: #009999;">&lt;IN&gt;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">close</span> IN<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@contents</span> <span style="color: #339933;">=</span> <span style="color: #000066;">grep</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!/^</span>127<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>1<span style="color: #0000ff;">\t</span><span style="color: #0000ff;">$vhost</span><span style="color: #339933;">/,</span> <span style="color: #0000ff;">@hostsFile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066;">open</span> FILE<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&gt;&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'/etc/hosts'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #0000ff;">$!</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> FILE <span style="color: #0000ff;">@contents</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">close</span> FILE<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$output</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`/usr/sbin/a2dissite $vhost`</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #0000ff;">$output</span><span style="color: #339933;">;</span>
&nbsp;
    informOut<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Removing  $vhostInfo{'apacheConfig'} file&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$vhostInfo</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'apacheConfig'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    restartApache<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot; manually remove $vhostInfo{'docRoot'}... <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> informOut <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$message</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;$message <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/linux/perl-script-to-manage-virtual-hosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic multi form on same page with jQuery and PHP</title>
		<link>http://ivanvillareal.com/development/dynamic-multi-form-on-same-page-with-jquery-and-php/</link>
		<comments>http://ivanvillareal.com/development/dynamic-multi-form-on-same-page-with-jquery-and-php/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 20:13:50 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[multform]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=201</guid>
		<description><![CDATA[This is a little demo of a small app that allow us to have several forms displayed on the same page, organized by sections, a static multiform can be easily [...]]]></description>
			<content:encoded><![CDATA[<p>This is a little demo of a small app that allow us to have several forms displayed on the same page, organized by sections, a static multiform can be easily created by putting the form contents on divs and hiding them, then when the user clicks on a specific section we hide the previous div, and show the new one, we can wrap it up everything inside a big form, and submit that.</p>
<p>The approach I did for having this same functionality allows me to:</p>
<ul style="text-indent: 5px; list-style-position: inside; list-style-type: square; padding: 6px; margin: 20px;">
<li>Save each section form before editing a new one</li>
<li>Change any form inputs depending on received data</li>
<li>Validate in the front and backend each section</li>
</ul>
<p>The main disadvantage is that for each section I&#8217;ll do an ajax call, to submit and retrieve the form.</p>
<p>The first thing I did was to write the main html layout I did a simple 2 column layout to use the left block as a form navigator and the right block to show the actual form.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;left_block_box&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;left_block_title&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		 Form Steps
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;edit_step_box&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;table</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;100%&quot;</span> <span style="color: #000066;">cellspacing</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">cellpadding</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">border</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;font-size: 11px;&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;stepTable&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tr</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;stepSelected&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;formStep&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				 Name
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;stepEdit&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;span</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;formstep1&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;pointer placeEdit&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Edit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;formStep&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				 Address
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;stepEdit&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;span</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;formstep2&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;pointer placeEdit&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Edit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;formStep&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				 Interests:
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;td</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;stepEdit&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;span</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;formstep3&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;pointer placeEdit&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Edit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/td<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tr<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/table<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>I&#8217;ve used a table so I can navigate more easily the DOM with jquery, but this can be changed an ul and it will work the same, the next thing I wrote was the other column wrapper the right block which will holde the actual form retrieved from the server.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;right_block_box&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;right_block_title&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;formTitle&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		 Form 1
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;multiform_part&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		 Aqui va la forma
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;form_step_nav_wrap&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;form_step_nav&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;form_step_left&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Previous Step&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;prevStepBtn&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;form_step_right&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Next Step&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;nextStepBtn&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Preview Data&quot;</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;display: none&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;previewBtn&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Once I had my basic layout I started with the javascript functionality, the first thing was to create a function that allow me to move from one form to another, passing current form values to the calling script and displaying the new form.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> selectStep<span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> thisStep <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">children</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//get current form data to be passed later</span>
	<span style="color: #003366; font-weight: bold;">var</span> curr <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.stepSelected&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">children</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">':eq(1)'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">children</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> formData <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#form_&quot;</span><span style="color: #339933;">+</span>curr<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//add class to selected step </span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#stepTable tr&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stepSelected'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">parent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stepSelected'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//put name of step that is going to be edited </span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#formTitle&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.stepSelected :eq(0)&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.multiform_part&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Loading...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//send data to php, and draw new form</span>
	$.<span style="color: #660066;">post</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'processForm.php'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		step<span style="color: #339933;">:</span> thisStep<span style="color: #339933;">,</span> saveData<span style="color: #339933;">:</span> curr<span style="color: #339933;">,</span> formData<span style="color: #339933;">:</span> formData
	<span style="color: #009900;">&#125;</span>
	<span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//draw new form</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.multiform_part&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>This was easy, then I just binded a click event to each step</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">// handle the edit  link on each step</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.stepEdit&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>index<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            selectStep<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>And now I have a functional multiform pane, that gets its form from php, the backend was also ver simple to make:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$step</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'step'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$formData</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'formData'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$step</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">//$_SESSION[$step] = $data;</span>
	<span style="color: #000088;">$fields</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;'</span><span style="color: #339933;">,</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fields</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$field</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$keyVal</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'='</span><span style="color: #339933;">,</span> <span style="color: #000088;">$field</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">urldecode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$keyVal</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$val</span> <span style="color: #339933;">=</span> <span style="color: #990000;">urldecode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$keyVal</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$step</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$val</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$formData</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$formStep</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'saveData'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$formStep</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'formData'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$step</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$step</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'formstep1'</span><span style="color: #339933;">:</span>
					<span style="color: #000088;">$html</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;&lt;&lt;</span>FORM
					<span style="color: #339933;">&lt;</span>form id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;form_<span style="color: #006699; font-weight: bold;">{$step}</span>&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;form_<span style="color: #006699; font-weight: bold;">{$step}</span>&quot;</span><span style="color: #339933;">&gt;</span>
					<span style="color: #339933;">&lt;</span>fieldset<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>legend<span style="color: #339933;">&gt;</span>Personal information<span style="color: #339933;">&lt;/</span>legend<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-req&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-firstname&quot;</span><span style="color: #339933;">&gt;</span>First name<span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-firstname&quot;</span> id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-firstname&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-firstname']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-opt&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-middlename&quot;</span><span style="color: #339933;">&gt;</span>Middle name<span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-middlename&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-middlename&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-middlename']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-req&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-lastname&quot;</span><span style="color: #339933;">&gt;</span>Last name<span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-lastname&quot;</span> id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-lastname&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-lastname']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;/</span>fieldset<span style="color: #339933;">&gt;</span>
&nbsp;
&nbsp;
		FORM<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$html</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'formstep2'</span><span style="color: #339933;">:</span>
					<span style="color: #000088;">$html</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">&lt;&lt;</span>FORM
					<span style="color: #339933;">&lt;</span>form id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;form_<span style="color: #006699; font-weight: bold;">{$step}</span>&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;form_<span style="color: #006699; font-weight: bold;">{$step}</span>&quot;</span><span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;</span>fieldset<span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;</span>legend<span style="color: #339933;">&gt;</span>Address <span style="color: #339933;">&lt;/</span>legend<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-opt&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-addr&quot;</span><span style="color: #339933;">&gt;</span>Address<span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-addr&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-addr&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-addr']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-opt&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-city&quot;</span><span style="color: #339933;">&gt;</span>City or Town<span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-city&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-city&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-city']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-opt&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-state&quot;</span><span style="color: #339933;">&gt;</span>State<span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-state&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-state&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-state']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-req&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-zipcode&quot;</span><span style="color: #339933;">&gt;</span>Zip code<span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-zipcode&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-zipcode&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-zipcode']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;/</span>fieldset<span style="color: #339933;">&gt;</span>
&nbsp;
		FORM<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$html</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'formstep3'</span><span style="color: #339933;">:</span>
					<span style="color: #000088;">$html</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">&lt;&lt;</span>FORM
					<span style="color: #339933;">&lt;</span>form id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;form_<span style="color: #006699; font-weight: bold;">{$step}</span>&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;form_<span style="color: #006699; font-weight: bold;">{$step}</span>&quot;</span><span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;</span>fieldset<span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;</span>legend<span style="color: #339933;">&gt;</span>Interests <span style="color: #339933;">&lt;/</span>legend<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-opt&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-int1&quot;</span><span style="color: #339933;">&gt;</span>Interest <span style="color: #cc66cc;">1</span><span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-int1&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-int1&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-int1']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-opt&quot;</span><span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>label <span style="color: #b1b100;">for</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-int2&quot;</span><span style="color: #339933;">&gt;</span>Interest <span style="color: #cc66cc;">2</span><span style="color: #339933;">:&lt;/</span>label<span style="color: #339933;">&gt;</span>
		      <span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-int2&quot;</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;fm-int2&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{<span style="color: #006699; font-weight: bold;">$_SESSION</span>[<span style="color: #006699; font-weight: bold;">$step</span>]['fm-int2']}&quot;</span><span style="color: #339933;">/&gt;</span>
		    <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
		    <span style="color: #339933;">&lt;/</span>fieldset<span style="color: #339933;">&gt;</span>
&nbsp;
		FORM<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$html</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'getAllData'</span><span style="color: #339933;">:</span>
					<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;h3&gt;Saved Data&lt;/h3&gt;'</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Finally I&#8217;ve added some css styles to make it &#8220;pretty&#8221; and add some other js functionality to navigate back and forth.</p>
<p>You can checkout the working solution <a href="http://ivanvillareal.com/samples/multiform">here</a>, or get the files <a href="http://ivanvillareal.com/samples/multiform.tar.bz2">here</a> this demo saves user data in session, and the session is destroyed each time you load the index page.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/development/dynamic-multi-form-on-same-page-with-jquery-and-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Script to copy data from MySQL to postgreSQL</title>
		<link>http://ivanvillareal.com/development/script-to-copy-data-from-mysql-to-postgres/</link>
		<comments>http://ivanvillareal.com/development/script-to-copy-data-from-mysql-to-postgres/#comments</comments>
		<pubDate>Sat, 02 Apr 2011 12:28:32 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[postgres]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=190</guid>
		<description><![CDATA[This is a perl script I&#8217;ve used to move data from mysql 5.1 to postgres 9, this script doesn&#8217;t create a schema, it only grabs the data from mysql and [...]]]></description>
			<content:encoded><![CDATA[<p>This is a perl script I&#8217;ve used to move data from mysql 5.1 to postgres 9, this script doesn&#8217;t create a schema, it only grabs the data from mysql and try to put it on the same table in postgres.</p>
<p>The only requirement is DBI for mysql and postgres.</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;">&nbsp;
<span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># this script moves all the data from mysql to postgres</span>
<span style="color: #666666; font-style: italic;"># modules required are:</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># http://search.cpan.org/~timb/DBI-1.616/DBI.pm</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># please change the dsn, srcUser/srcPass and dstUser/Pass variables.</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> DBI<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$srcUser</span>   <span style="color: #339933;">=</span> <span style="color: #ff0000;">'ivan'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$srcPass</span>   <span style="color: #339933;">=</span> <span style="color: #ff0000;">'123'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$srcDbName</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'datatocopy'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$srcDbHost</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'mini'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dstUser</span>  <span style="color: #339933;">=</span> <span style="color: #ff0000;">'ivan'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dstPass</span>  <span style="color: #339933;">=</span> <span style="color: #ff0000;">'456'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dstDbName</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'migrateddata'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dstDbHost</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'192.168.1.145'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">### do not modify ##</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$srcDb</span>  <span style="color: #339933;">=</span> DBI<span style="color: #339933;">-&gt;</span><span style="color: #006600;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;dbi:mysql:database=$srcDbName;host=$srcDbHost&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$srcUser</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$srcPass</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dstDb</span>  <span style="color: #339933;">=</span> DBI<span style="color: #339933;">-&gt;</span><span style="color: #006600;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;dbi:Pg:database=$dstDbName;host=$dstDbHost&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$dstUser</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$dstPass</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">####main########</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Starting to move data from $srcDbHost to $dstDbHost<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$srcDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">do</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SET NAMES <span style="color: #000099; font-weight: bold;">\'</span>UTF8<span style="color: #000099; font-weight: bold;">\'</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">do</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SET CLIENT_ENCODING=<span style="color: #000099; font-weight: bold;">\'</span>UTF8<span style="color: #000099; font-weight: bold;">\'</span>&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$srcTables</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$srcDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">selectall_arrayref</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SHOW TABLES&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dstTables</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">selectall_hashref</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SELECT * FROM pg_tables WHERE NOT tablename ~<span style="color: #000099; font-weight: bold;">\'</span>^(pg_|sql_)<span style="color: #000099; font-weight: bold;">\'</span>&quot;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;tablename&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$seqlist</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">selectall_arrayref</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SELECT RELNAME FROM pg_class WHERE relkind=<span style="color: #000099; font-weight: bold;">\'</span>S<span style="color: #000099; font-weight: bold;">\'</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$seqmap</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$s</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@$seqlist</span><span style="color: #009900;">&#41;</span>  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$seqname</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$s</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$seqname</span><span style="color: #339933;">=~/^</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">.*</span><span style="color: #009900;">&#41;</span>_<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>a<span style="color: #339933;">-</span>z<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#41;</span>_<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>a<span style="color: #339933;">-</span>z<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">$)</span><span style="color: #339933;">/</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$item</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$item</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>seq<span style="color: #009900;">&#125;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">$seqname</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$item</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>field<span style="color: #009900;">&#125;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">$2</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$table</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$1</span><span style="color: #339933;">;</span> 
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">exists</span> <span style="color: #0000ff;">$dstTables</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$table</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
            <span style="color: #000066;">push</span> <span style="color: #339933;">@</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$seqmap</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$table</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$item</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>   
            <span style="color: #000066;">print</span> <span style="color: #000000; font-weight: bold;">STDERR</span> <span style="color: #ff0000;">&quot;WARN: cannot find table for sequence $seqname<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>   
    <span style="color: #009900;">&#125;</span>   
<span style="color: #009900;">&#125;</span>
<span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>AutoCommit<span style="color: #009900;">&#125;</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$totalRowCount</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$t</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@$srcTables</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>  
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$table</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$t</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">unless</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">exists</span> <span style="color: #0000ff;">$dstTables</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$table</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">print</span> <span style="color: #000000; font-weight: bold;">STDERR</span> <span style="color: #ff0000;">&quot;WARN: table $table does not exists in dest db Pg:$dstDbName<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">next</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
	<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Clearing data from table $table in $dstDbHost<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    clear_table<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">next</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$table</span><span style="color: #339933;">=~/^</span>cache<span style="color: #339933;">/;</span>
    <span style="color: #b1b100;">next</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$table</span><span style="color: #339933;">=~/^</span>locales<span style="color: #339933;">/;</span>
	<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Copying data from mysql table $table in $srcDbHost to postgres table $table in $dstDbHost<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$cnt</span> <span style="color: #339933;">=</span> copy_table<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$srcDb</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$table</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">$table</span><span style="color: #339933;">=~/^</span>cache<span style="color: #339933;">/;</span>
	<span style="color: #0000ff;">$totalRowCount</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$totalRowCount</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">$cnt</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;$cnt rows copied ($table)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    init_seq<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$table</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$seqmap</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$table</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># if (exists $seqmap-&gt;{$table});</span>
  <span style="color: #009900;">&#125;</span>  
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Commiting changes <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>     
<span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">commit</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;$totalRowCount rows were copied.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">exit</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> init_seq  <span style="color: #009900;">&#123;</span>  
    <span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$db</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$table</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$list</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">return</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">$list</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$item</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">@</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$list</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ref</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">selectall_arrayref</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SELECT MAX($item-&gt;{field}) FROM $table&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$val</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ref</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$val</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #0000ff;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">do</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SELECT SETVAL(<span style="color: #000099; font-weight: bold;">\'</span>$item-&gt;{seq}<span style="color: #000099; font-weight: bold;">\'</span>,$val)&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>  
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> clear_table <span style="color: #009900;">&#123;</span>  
    <span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$dbh</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">return</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">$table</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">do</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;DELETE FROM $table&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>  
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> copy_table <span style="color: #009900;">&#123;</span> 
    <span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$srcDb</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">die</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">$table</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$slf</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$srcDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;select * from $table limit 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$slf</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">return</span> <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$rows</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$rec1</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$slf</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">fetchrow_hashref</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$slf</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">finish</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@fieldnames</span> <span style="color: #339933;">=</span> <span style="color: #000066;">sort</span> <span style="color: #000066;">keys</span> <span style="color: #0000ff;">%$rec1</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@qm</span> <span style="color: #339933;">=</span>  <span style="color: #000066;">map</span> <span style="color: #009900;">&#123;</span> <span style="color: #ff0000;">'?'</span><span style="color: #009900;">&#125;</span> <span style="color: #0000ff;">@fieldnames</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ins</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dstDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;INSERT INTO $table (&quot;</span><span style="color: #339933;">.</span><span style="color: #000066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;,&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">@fieldnames</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;) VALUES(&quot;</span><span style="color: #339933;">.</span><span style="color: #000066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;,&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">@qm</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sel</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$srcDb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SELECT * FROM $table&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$sel</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">execute</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$cnt</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$data</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$sel</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">fetchrow_hashref</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #0000ff;">$ins</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">map</span> <span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$_</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span> <span style="color: #0000ff;">@fieldnames</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$cnt</span><span style="color: #339933;">++;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #0000ff;">$ins</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">finish</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$sel</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">finish</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">return</span> <span style="color: #0000ff;">$cnt</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/development/script-to-copy-data-from-mysql-to-postgres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use hotkeys for switching between dual monitors</title>
		<link>http://ivanvillareal.com/linux/use-hotkeys-for-switching-between-dual-monitors/</link>
		<comments>http://ivanvillareal.com/linux/use-hotkeys-for-switching-between-dual-monitors/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 18:46:57 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[compiz]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[mose move]]></category>
		<category><![CDATA[X]]></category>
		<category><![CDATA[xdotool]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=181</guid>
		<description><![CDATA[I just got 2 Asus ML228 wide-screen monitors, this is a big update from my previous monitors resolution that were 1280&#215;760, and they were not wide-screen, so it took me [...]]]></description>
			<content:encoded><![CDATA[<p>I just got 2 Asus ML228 wide-screen monitors, this is a big update from my previous monitors resolution that were 1280&#215;760, and they were not wide-screen, so it took me a while to get used to these wide screen display, I have them in Full HD via DVI to HDMI connector, I&#8217;m using nVidia twinview instead of Xinerama because I can use compiz with twiview and not with Xinerama, the total display I get from both monitors is 3840&#215;1080 pixels (966&#215;272 millimeters), so I have to move my hand a lot to switch between one monitor and the other with the mouse, I also have my netbook on the left because thats were I have my chat and email apps, so to get there from the right screen I have to move even more my hand until I get to the end of the pad.</p>
<p>A friend of mine recommend to use a program to switch between my two monitors  with a hotkey, he told me the program he used for windows, I look for it, and I didn&#8217;t found a clone that could work in linux, because I was to busy I left that, until the past week, where I just got tired to move from one window to another to check my tests, so I checked again what were my options, and didn&#8217;t found nothing that was pretty simple.</p>
<p>I knew that I could leverage the commands plugin from compiz to grab the hotkeys, I just needed a way to move the cursor, so I did a quick search in the aptitude repository</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>orion:~$ <span style="color: #c20cb9; font-weight: bold;">apt-cache</span> search input move</pre></div></div>

<p>gave me this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">xdotool - simulate X11 keyboard<span style="color: #000000; font-weight: bold;">/</span>mouse input</pre></div></div>

<p>That looked like the thing I needed, so I&#8217;ve installed xdotool and started playing with it, I quickly found that this little tool has a lot of nice choices that can be used for many, many things, so what I did to achieve my goal was the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>orion:~$ xdotool <span style="color: #660033;">--help</span>
Available commands:
  getactivewindow
  getwindowfocus
  getwindowpid
  search
  <span style="color: #7a0874; font-weight: bold;">help</span>
  version
  click
  getmouselocation
  key
  keydown
  keyup
  mousedown
  mousemove
  mousemove_relative
  mouseup
  <span style="color: #7a0874; font-weight: bold;">type</span>
  windowactivate
  windowfocus
  windowmap
  windowmove
  windowraise
  windowsize
  windowunmap
  set_window
  set_num_desktops
  get_num_desktops
  set_desktop
  get_desktop
  set_desktop_for_window
  get_desktop_for_window
ivan<span style="color: #000000; font-weight: bold;">@</span>orion:~$ xdotool getmouselocation
x:<span style="color: #000000;">379</span> y:<span style="color: #000000;">361</span> <span style="color: #c20cb9; font-weight: bold;">screen</span>:<span style="color: #000000;">0</span>
ivan<span style="color: #000000; font-weight: bold;">@</span>orion:~$ xdotool mousemove <span style="color: #000000;">800</span> <span style="color: #000000;">200</span></pre></div></div>

<p>and with that my pointer moved to a random position <img src='http://ivanvillareal.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I moved the mouse to the center of left screen the used getmouselocation, I did the same for right screen and with all the parameters I&#8217;ve opened my compiz configuration </p>

<a href='http://ivanvillareal.com/linux/use-hotkeys-for-switching-between-dual-monitors/attachment/compiz/' title='compiz configuration'><img width="150" height="92" src="http://ivanvillareal.com/wp-content/uploads/2011/03/compiz.png" class="attachment-thumbnail" alt="compiz configuration" title="compiz configuration" /></a>
<a href='http://ivanvillareal.com/linux/use-hotkeys-for-switching-between-dual-monitors/attachment/compiz-commands/' title='compiz commands'><img width="150" height="20" src="http://ivanvillareal.com/wp-content/uploads/2011/03/compiz-commands.png" class="attachment-thumbnail" alt="compiz commands" title="compiz commands" /></a>
<a href='http://ivanvillareal.com/linux/use-hotkeys-for-switching-between-dual-monitors/attachment/compiz-commands-key/' title='compiz-commands-key'><img width="150" height="20" src="http://ivanvillareal.com/wp-content/uploads/2011/03/compiz-commands-key.png" class="attachment-thumbnail" alt="compiz-commands-key" title="compiz-commands-key" /></a>

]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/linux/use-hotkeys-for-switching-between-dual-monitors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Decrypting SourceCop php files</title>
		<link>http://ivanvillareal.com/development/php-development/decrypting-sourcecop-php-files/</link>
		<comments>http://ivanvillareal.com/development/php-development/decrypting-sourcecop-php-files/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 19:41:46 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sourcecop]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=176</guid>
		<description><![CDATA[Every once in a while, I receive code that is encrypted using one of many php encoder software out there, so when I face this situation and if the project [...]]]></description>
			<content:encoded><![CDATA[<p>Every once in a while, I receive code that is encrypted using one of many php encoder software out there, so when I face this situation and if the project is worth it, I start playing around with the encrypted files to see how the encoding algorithm works, so far I’ve been able to successful decrypt files encoded with Zend, and ioncube, I don’t remember the versions of the encoders but I remember that the latter one took me some time, but I did it.</p>
<p>I must say that decoding files also becomes a personal challenge, it is like a hobby when I have the time to play with it.</p>
<p> Yesterday I received a couple of files encoded with an unknown encoder for me, it didn’t require any php modification or extension install, so I tough that it would be easy to break it, because at some point the code must be evaluated, so after I opened the zip file, I noticed a folder called “scopbin“, that contained only 1 php file named “911006.php“, the two encoded files were  including this file so I assumed that this is were the decryption logic had to be.</p>
<p>I was exhausted by a long working day, and when I got this files and saw that they were encrypted I placed them in my laptop for later analysis. This analysis was done while  I was waiting for the local news, I didn’t research the encoding, or did  anything that give me some pointers, I just started to playing around with the code to see how far  could I get.</p>
<p>My objective this time was getting this files decrypted, and not analysing the steps of the algorithm, so with this in mind, this is what I did:</p>
<p>This was the original “911006.php” file:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #339933;">&lt;</span> ?php <span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'include_path'</span><span style="color: #339933;">,</span><span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>function A4540acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> b5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> c43dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> Xdsf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span><span style="color: #339933;">=</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">=</span><span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;H'</span><span style="color: #339933;">.</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>for<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">&lt;</span>strlen<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">+=</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span><span style="color: #339933;">=</span><span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">=</span><span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> ^ <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>if<span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">&lt;=</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">255</span><span style="color: #339933;">+</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">-</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>else <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">=</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">-</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span><span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">=</span><span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">=</span><span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">return</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> f5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> j43dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> hdsf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> tr5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">function</span> g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'echo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">false</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'print'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'sprint'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'sprintf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> hyr3dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> uygf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> drfg34f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> jhkgvdsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> yrdhhdacdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'include_path'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>I’ve used a code formatter to make the code  more readable:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>mini:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>copdecrypt<span style="color: #000000; font-weight: bold;">/</span>scopbin$ phpCB <span style="color: #660033;">--space-after-if</span>  \
<span style="color: #660033;">--space-after-switch</span>                                           \
<span style="color: #660033;">--space-after-while</span>                                            \
<span style="color: #660033;">--space-before-srt-angle-bracket</span>                               \
<span style="color: #660033;">--space-after-end-angle-bracket</span>                                \
<span style="color: #660033;">--glue-amperscore</span>                                              \
<span style="color: #660033;">--change-shell-comment-to-double-slashes-comment</span>               \
<span style="color: #660033;">--force-large-php-code-tag</span>                                     \
<span style="color: #660033;">--force-true-false-null-contant-lowercase</span>                      \
<span style="color: #660033;">--align-equal-statements</span>                                       \
<span style="color: #660033;">--comment-rendering-style</span> PEAR                                 \
<span style="color: #660033;">--equal-align-position</span> <span style="color: #000000;">50</span>                                      \
<span style="color: #660033;">--padding-char-count</span> <span style="color: #000000;">4</span>                                         \
<span style="color: #000000;">911006</span>.php</pre></div></div>

<p>And this was the result:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'include_path'</span><span style="color: #339933;">,</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> A4540acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> b5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> c43dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> Xdsf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;H'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> ^ <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">255</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">.</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> f5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> j43dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> hdsf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> tr5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'echo'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'print'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sprint'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sprintf'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> hyr3dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> uygf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> drfg34f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> jhkgvdsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> yrdhhdacdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'include_path'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>After a quick review of this file, I saw that it had several functions that had same logic, return an unknow variable or delete the file that this unknown variable had, appart from all this “useless” functions I quickly found what appeared to be the decryption function this was the function named <strong>y0666f0acdeed38d4cd9084ade1739498 </strong>with this information I headed to check one of the encrypted files, and this is how it looked:</p>
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #339933;">&lt;</span> ?php <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'findsysfolder'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">function</span> findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$fld1</span><span style="color: #339933;">=</span><span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$fld</span><span style="color: #339933;">=</span><span style="color: #000088;">$fld1</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/scopbin'</span><span style="color: #339933;">;</span>clearstatcache<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>if<span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">return</span> findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>else <span style="color: #b1b100;">return</span> <span style="color: #000088;">$fld</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span>findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/911006.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$REXISTHECAT4FBI</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'FE50E574D754E76AC679F242F450F768FB5DCB77F34DE341 660C280D176E374DE7FB3B090A782B6B68DBC97BEAD93B681C452F25BE26'</span><span style="color: #339933;">;</span>g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span>f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$REXISTHEDOG4FBI</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'9CEF6BE117B329ADFC4560538EBF16BB6DAD1748FE354E8EDA7AABFA376EB6938496F43560E4123D85D272E342E363FD51F3181763A3F623 660B6E2369243EE5781CD76A133E272E37DACA198968397F150425B4326A126CD64F051F35287DE7BD3 5354276B880BDEF525247533610 64282D07BA63861F81DB715C115BC1BD57FC5D9C8 225D2 A F177EDC7EA026A7E74D37AC28A125D1B8F73B63C6D1C3A1E137639BEECEDACFDBBD9F8D948CE93D6FCDCDD8CCA98B36AA21A08B8BD87FD8 15143C2C2D37593B82857516FC9ABF9237BDEC9DBB9F92F7BDEB8EE3B6AEA153C9DF3 A2CAE2CD218B1E566C0D274D6 F32DC2A E20 512 062A2F72C 96FB9ED3B6FC9ABF927A34985CAB5D3 65D89B315B3E61076D8 E4488B2127FCEF82C78DDBBED3A6FBB7FCEEACEE04453412363B6E246F05086C7 52E C408CC263E078A53461E0 331B71EB81DC475DB6CAC9531914393D4 22AC9C3D7CE7194438AD638 03D6FCDCDD8CCA98F99211B1177D5C7DEC6A3F427 5 510 461C7D1C51AB492F850FA56FE445EC0154885BDACDC 819BD76A72A419A4D859CFE5A5268CDABFD2A7FAB8DEF227BA3869183E12277A386E03763B6E241F75282CDBFCA187ECE74D7 D1D4881D3C7432177D4 E3F83DA54417EAA8FE93C68BDE94C2E7CA5FD5B4C5E3C9993A98CEA3D69BCE84F2D989C9EEECFDDBFFF15 164C2D471D3 228D3 51CBA75D4 A3C85C1 4618EC5 E6BE91FCD F4D87BE F 56BFB5BFE2A3EA923BDDDBB9D26BE13CD 41F6E584D593C1A C18 D19D29D958C94F12577D5D5C0D4B19781958094F21EB6EF20CC77D87CD0CDC57FA13D8484F61076D47ED5 366F521A6FA2FEFBAF22772A680E23168B0958290F23366B297F12470A5F1543664EF6DA42DAD5E5EB718C569EA2C5F8AE81BBF16BE489E3EE13D7FBD98FE297DA8FC5B396BB2EA4E594B2969D3C7689230A1F4441763B1E83114 31173B3E6331670A6F22672D4B6E43C64C1D6C475FA5AFB2BDF36A83F9F55F8 62A C69BEEC4F4F5A4E2B D1B F1A E68CAD86F44 B1C E6CACF92E B6DDCDDD26437 3'</span><span style="color: #339933;">;</span><span style="color: #000088;">$REXISTHECAT4FBI</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'94CD76CD371C5A7BC70C186E779C293B9B49BACA5A781A6'</span><span style="color: #339933;">;</span> <span style="color: #990000;">eval</span><span style="color: #009900;">&#40;</span>y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'4EF6454FB298E72B 5'</span><span style="color: #339933;">,</span><span style="color: #000088;">$REXISTHEDOG4FBI</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Again I used the code beautifier  to make this file more readable:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'findsysfolder'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">function</span> findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$fld1</span> <span style="color: #339933;">=</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$fld</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fld1</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/scopbin'</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">clearstatcache</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">return</span> findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">return</span> <span style="color: #000088;">$fld</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
<span style="color: #009900;">&#125;</span> 
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span>findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/911006.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$REXISTHECAT4FBI</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'FE50E574D754E76AC679F242F450F768FB5DCB77F34DE341 660C280D176E374DE7FB3B090A782B6B68DBC97BEAD93B681C452F25BE26'</span><span style="color: #339933;">;</span>
g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span>f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$REXISTHEDOG4FBI</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'9CEF6BE117B329ADFC4560538EBF16BB6DAD1748FE354E8EDA7AABFA376EB6938496F43560E4123D85D272E342E363FD51F3181763A3F623 660B6E2369243EE5781CD76A133E272E37DACA198968397F150425B4326A126CD64F051F35287DE7BD3 5354276B880BDEF525247533610 64282D07BA63861F81DB715C115BC1BD57FC5D9C8 225D2 A F177EDC7EA026A7E74D37AC28A125D1B8F73B63C6D1C3A1E137639BEECEDACFDBBD9F8D948CE93D6FCDCDD8CCA98B36AA21A08B8BD87FD8 15143C2C2D37593B82857516FC9ABF9237BDEC9DBB9F92F7BDEB8EE3B6AEA153C9DF3 A2CAE2CD218B1E566C0D274D6 F32DC2A E20 512 062A2F72C 96FB9ED3B6FC9ABF927A34985CAB5D3 65D89B315B3E61076D8 E4488B2127FCEF82C78DDBBED3A6FBB7FCEEACEE04453412363B6E246F05086C7 52E C408CC263E078A53461E0 331B71EB81DC475DB6CAC9531914393D4 22AC9C3D7CE7194438AD638 03D6FCDCDD8CCA98F99211B1177D5C7DEC6A3F427 5 510 461C7D1C51AB492F850FA56FE445EC0154885BDACDC 819BD76A72A419A4D859CFE5A5268CDABFD2A7FAB8DEF227BA3869183E12277A386E03763B6E241F75282CDBFCA187ECE74D7 D1D4881D3C7432177D4 E3F83DA54417EAA8FE93C68BDE94C2E7CA5FD5B4C5E3C9993A98CEA3D69BCE84F2D989C9EEECFDDBFFF15 164C2D471D3 228D3 51CBA75D4 A3C85C1 4618EC5 E6BE91FCD F4D87BE F 56BFB5BFE2A3EA923BDDDBB9D26BE13CD 41F6E584D593C1A C18 D19D29D958C94F12577D5D5C0D4B19781958094F21EB6EF20CC77D87CD0CDC57FA13D8484F61076D47ED5 366F521A6FA2FEFBAF22772A680E23168B0958290F23366B297F12470A5F1543664EF6DA42DAD5E5EB718C569EA2C5F8AE81BBF16BE489E3EE13D7FBD98FE297DA8FC5B396BB2EA4E594B2969D3C7689230A1F4441763B1E83114 31173B3E6331670A6F22672D4B6E43C64C1D6C475FA5AFB2BDF36A83F9F55F8 62A C69BEEC4F4F5A4E2B D1B F1A E68CAD86F44 B1C E6CACF92E B6DDCDDD26437 3'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$REXISTHECAT4FBI</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'94CD76CD371C5A7BC70C186E779C293B9B49BACA5A781A6'</span><span style="color: #339933;">;</span>
<span style="color: #990000;">eval</span><span style="color: #009900;">&#40;</span>y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'4EF6454FB298E72B 5'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$REXISTHEDOG4FBI</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>So what we have here is more obfuscated code, but a simple to understand, we have 2 variables and 3 functions, the variable that has the encrypted code should be the larger one so I'm assuming that is the "$REXISTHEDOG4FBI" variable, the other one apparently isn't used, so what I did at this point was to print the results of the evaluated function which corresponds to the function where the decrypt logic is (deofuscated):</p>
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$program</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$position</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$keyLength</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$decValue</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;H'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$program</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$program</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$decProgram</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$program</span><span style="color: #339933;">,</span> <span style="color: #000088;">$i</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$position</span>   <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$position</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$keyLength</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$position</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span> <span style="color: #339933;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$ascii</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$decProgram</span>^ <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$position</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$ascii</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$decValue</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$ascii</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">255</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$ascii</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$decValue</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #000088;">$ascii</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ascii</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$decValue</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$result</span>   <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span> <span style="color: #339933;">.</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ascii</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$decValue</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$decProgram</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>unfortunately printing the result didn't work, so I did a review to check why, and I found that the other 2 functions where the problem, let me explain what happens, first a call is made to</p>
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>this function receives the name of the executing file (test.php in my case), read its content in an array, then glues all lines to create a 1 line string, without any new lines, then this result is passed to the following function:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'echo'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span> ? <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'print'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sprint'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sprintf'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">:</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>which are a series of nested ternary conditions, looking for the words "echo,print,sprint,sprintf", if any of this words are in the encrypted file, then the script simply exits, that's why I was unable to print the decrypted code after calling the decoding function, so simply avoiding the call to this function will fix the issue and I will get my decrypted code.<br />
However, I didn't want to modify the original encrypted files, so a second approach I took was modifying the decryption function and echoing the output from there, so I've added a couple of lines (15 and 16) to the "<strong>y0666f0acdeed38d4cd9084ade1739498</strong>" function:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;H'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> ^ <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">255</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">.</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>And voilà, I was able to see the source code.</p>
<p>So in short, just print the output of the decrypt function, and kill the script to get the decrypted code, I don't know if there are any other versions of the "911006.php" file, but I guess that the same logic applies.
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/development/php-development/decrypting-sourcecop-php-files/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Ubuntu 9.10 on an hp mini 110-1125nr</title>
		<link>http://ivanvillareal.com/linux/ubuntu-9-10-on-an-hp-mini-110-1125nr/</link>
		<comments>http://ivanvillareal.com/linux/ubuntu-9-10-on-an-hp-mini-110-1125nr/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 00:56:14 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[netbook]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=148</guid>
		<description><![CDATA[I got this new mini 110, it came with Windows 7 Starter, and after a day of using it I was very frustrated because it was very limiting, for example, [...]]]></description>
			<content:encoded><![CDATA[<p>I got this new mini 110, it came with Windows 7 Starter, and after a day of using it I was very frustrated because it was very limiting, for example, I was unable to change my Desktop background, the network management is confusing and frustrating, and it had a lot of crapware, except for the hp games, that some of them are fun.</p>
<p>Anyway, right now I don&#8217;t have time to spend getting a new OS on this machine, I just want something that works, I don&#8217;t plan using this to work, but I would like to have some of the tools I use into this.</p>
<p>So my options were, trying Ubuntu remix or Windows Xp, after checking that hp had the drivers for XP, I was going to change Windows 7 to Xp, but I was reading how to create a USB boot drive, and it was too much hassle for me. (I&#8217;m very lazy for any Microsoft stuff).</p>
<p>My next option was Ubuntu remix, I&#8217;m not a big fan of Ubuntu, but I wanted something to just worked out of the box, also this little netbook comes with splashtop, a really nice feature for checking stuff online fast, and I didn&#8217;t want to loose this so I really didn&#8217;t knew how well this was going to work.</p>
<p>I started downloading Ubuntu 9.10 Karmic yesterday night, just in case, Today after more frustrating things, I decided to give Karmic a try.</p>
<p>I grabbed my usb pendrive, a 1gb &nbsp;kingston traveler, mounted the iso and ran usbinst.exe, it was pretty straightforward, my only advice to you would be to avoid saving space for your documents in the usb, my first try I set this to 30Mb and the boot failed, so I set the do not save feature.</p>
<p>It took about 40 minutes to finish copying the files, after it was done, I restarted the netbook with the pendrive connected, and at the first boot screen I pressed F9 key for booting options, selected the pendrive and that was it.</p>
<p>After testing ubuntu from the pendrive, it ran pretty well and everything but the wifi worked, I did an installation, keeping the windows partition and the hp restore partition, just in case.</p>
<p>The installation was pretty smooth, no issues at all, after the first boot I just installed the broadcom drivers, it was pretty easy with the driver manager in ubuntu, and the wifi was working</p>
<p>Update: My hp mini was stolen by a couple of elderly people, I saw the video <img src='http://ivanvillareal.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> , so I&#8217;m unable to play more with this, but the time I had this I was very happy with it, it performed well.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/linux/ubuntu-9-10-on-an-hp-mini-110-1125nr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>File Type Detection in PHP</title>
		<link>http://ivanvillareal.com/linux/file-type-detecion-in-php/</link>
		<comments>http://ivanvillareal.com/linux/file-type-detecion-in-php/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 04:47:24 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[fileinfo]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=150</guid>
		<description><![CDATA[I&#8217;m working on a project where the users can upload files, and I need to know the type of file they are uploading, a simple solution would be to check [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a project where the users can upload files, and I need to know the type of file they are uploading, a simple solution would be to check the extensions of the files, but this has many flaws, so I was looking for a reliable way to detect the type of file, and I found a PECL extension called <a href="http://pecl.php.net/package/Fileinfo/php-src/ext/fileinfo">file info</a> this extension is enabled by default in PHP 5.3, unfortunately I&#8217;m runing PHP 5.2.10, and the prod server also has this version.</p>
<p>So what I did to install this on ubuntu 9.10 karmic was the following:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>mini:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #666666; font-style: italic;"># apt-get install php5-dev libmagic-dev php-pear</span>
....
root<span style="color: #000000; font-weight: bold;">@</span>mini:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #666666; font-style: italic;"># pear channel-update pear.php.net</span>
...
root<span style="color: #000000; font-weight: bold;">@</span>mini:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #666666; font-style: italic;"># pecl install Fileinfo</span>
....
Build process completed successfully
Installing <span style="color: #ff0000;">'/usr/lib/php5/20060613+lfs/fileinfo.so'</span>
<span style="color: #c20cb9; font-weight: bold;">install</span> ok: channel:<span style="color: #000000; font-weight: bold;">//</span>pear.php.net<span style="color: #000000; font-weight: bold;">/</span>Fileinfo-1.0.4</pre></div></div>

<p>&nbsp;</p>
<p>and finally I added the extension to php.ini</p>
<p>extension=fileinfo.so</p>
<p>I restarted the apache server, and tested with this</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$fileInfo</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> finfo<span style="color: #009900;">&#40;</span>FILEINFO_MIME<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #000088;">$mimeType</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fileInfo</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">buffer</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$uploadedFile</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/linux/file-type-detecion-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Format a Mysql DateTime Field with Zend_Date</title>
		<link>http://ivanvillareal.com/development/format-a-mysql-datetime-field-with-zend_date/</link>
		<comments>http://ivanvillareal.com/development/format-a-mysql-datetime-field-with-zend_date/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 19:54:41 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=146</guid>
		<description><![CDATA[Formatting Dates fetched from the db becomes a simple task with the help of Zend_Date, here I show you how I use a small function to handle date formatting in a simple way.]]></description>
			<content:encoded><![CDATA[<p><a title="Zend_Date component offers a detailed, but simple API for manipulating dates and times" href="http://framework.zend.com/manual/en/zend.date.html" target="_blank">Zend_Date</a> is really a time saver class, I use it in almost every project I work, It handles time_zones, and date formatting pretty easy, leaving me more time to focus on other things.</p>
<p>The files that I need to use Zend_Date as a standalone class are:</p>
<p>Date.php and the Date folder from the Zend distribution package, and this is how I use it:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> ?php
<span style="color: #990000;">set_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'./lib'</span> <span style="color: #339933;">.</span> PATH_SEPARATOR <span style="color: #339933;">.</span> <span style="color: #990000;">get_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">include_once</span> <span style="color: #0000ff;">'Zend/Date.php'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$tugId</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tugId'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tugId'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> formatDate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$date</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009933; font-style: italic;">/**
     * List of supported timezones
     * http://php.net/manual/en/timezones.php
     */</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$date</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$fmtDate</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Date<span style="color: #009900;">&#40;</span><span style="color: #000088;">$date</span><span style="color: #339933;">,</span> Zend_Date<span style="color: #339933;">::</span><span style="color: #004000;">ISO_8601</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$fmtDate</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>setTimezone<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'America/Los_Angeles'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$fmtDate</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>toString<span style="color: #009900;">&#40;</span>Zend_Date<span style="color: #339933;">::</span><span style="color: #004000;">DATETIME</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_int</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tugId</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SELECT modified_date FROM tuggler WHERE tug_id = '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$tugId</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>fetchAssoc<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Last Record Update: '</span><span style="color: #339933;">.</span>formatDate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'modified_date'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$response</span> <span style="color: #0000ff;">&quot;nothing to return&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$response</span><span style="color: #339933;">;</span></pre></div></div>

<p>The response from the above would be <strong><span style="color: #0000ff;">Jul 9, 2009 11:41:20 AM <span style="font-weight: normal;"><span style="color: #000000;">but I can easily change it using one of the <a title="Predefined constants for Zend_Date" href="http://framework.zend.com/manual/en/zend.date.constants.html">predefined constants</a>, or I can make my own format.</span></span></span></strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/development/format-a-mysql-datetime-field-with-zend_date/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

