<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Adrien Buchwald's Blog</title>
	<atom:link href="http://adrienbuchwald.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://adrienbuchwald.wordpress.com</link>
	<description>Professional Blog</description>
	<lastBuildDate>Tue, 05 Apr 2011 01:54:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='adrienbuchwald.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Adrien Buchwald's Blog</title>
		<link>http://adrienbuchwald.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://adrienbuchwald.wordpress.com/osd.xml" title="Adrien Buchwald&#039;s Blog" />
	<atom:link rel='hub' href='http://adrienbuchwald.wordpress.com/?pushpress=hub'/>
		<item>
		<title>PERL</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/perl/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/perl/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 13:49:47 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/2009/06/24/perl/</guid>
		<description><![CDATA[#!/usr/bin/perl -w # print a standard 200-level HTTP header print &#8220;Content-Type:text/html\n\n&#8221;; # if the method is GET it runs the displayform subsystem # if not it will run the parseform and displayinfo subsystems if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;) { &#38;displayform(); exit; } else { &#38;parseform(); &#38;displayinfo(); } sub parseform { read(STDIN, $buffer, $ENV{&#8216;CONTENT_LENGTH&#8217;}); #break data up [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=78&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -w</p>
<p># print a standard 200-level HTTP header<br />
print &#8220;Content-Type:text/html\n\n&#8221;;</p>
<p># if the method is GET it runs the displayform subsystem<br />
# if not it will run the parseform and displayinfo subsystems</p>
<p>if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;)<br />
{<br />
&amp;displayform();<br />
exit;<br />
}<br />
else<br />
{<br />
&amp;parseform();<br />
&amp;displayinfo();<br />
}</p>
<p>sub parseform<br />
{<br />
read(STDIN, $buffer, $ENV{&#8216;CONTENT_LENGTH&#8217;});</p>
<p>#break data up on ampersands, and store in array<br />
@pairs = split(/&amp;/, $buffer);</p>
<p># start a loop to process form data<br />
foreach (@pairs) {<br />
#split field name and value on &#8216;+&#8217;, store in two scalar variables<br />
($key, $value) = split(/=/);<br />
#translate &#8216;+&#8217; signs back to spaces<br />
$value =~ tr/+/ /;<br />
#translate special characters<br />
$value =~ s/%([a-fA-F0-9][a-fA-f0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
#store data in hash<br />
$form{$key} = $value;<br />
}<br />
}</p>
<p># This subroutine will display information recieved from a form<br />
sub displayinfo<br />
{<br />
print qq~</p>
<p>&lt;html&gt;&lt;body&gt;<br />
Full Name:           $form{&#8220;person&#8221;} &lt;br&gt;<br />
Favourite Sport:       $form{&#8220;sport&#8221;} &lt;br&gt;<br />
Favorite Seneca Course:   $form{&#8220;course&#8221;} &lt;br&gt;<br />
GPA:               $form{&#8220;gpa&#8221;} &lt;br&gt;<br />
&lt;/body&gt;&lt;/html&gt;<br />
~;<br />
}</p>
<p># this subsystem creates the input box&#8217;s and stores the STDIN<br />
sub displayform<br />
{<br />
print qq~<br />
&lt;form action=&#8221;/cgi-bin-new/perlex11.cgi&#8221; method=&#8221;POST&#8221;&gt;<br />
Full Name:                &lt;input type=&#8221;text&#8221; name=&#8221;person&#8221;&gt;&lt;br&gt;<br />
Favorite Sport:           &lt;input type=&#8221;text&#8221; name=&#8221;sport&#8221;&gt;&lt;br&gt;<br />
Favourite Seneca Course:  &lt;input type=&#8221;text&#8221; name=&#8221;course&#8221;&gt;&lt;br&gt;<br />
Current GPA:              &lt;input type=&#8221;text&#8221; name=&#8221;gpa&#8221;&gt;&lt;br&gt;<br />
&lt;input type=&#8221;submit&#8221; value=&#8221;Send&#8221;&gt;<br />
&lt;input type=&#8221;reset&#8221; value=&#8221;Clear Form&#8221;&gt;<br />
&lt;/form&gt;<br />
~;<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=78&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Connect To Mysql</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/connect-to-mysql/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/connect-to-mysql/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 12:16:24 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/?p=75</guid>
		<description><![CDATA[mysql -h db-mysql.zenit -u int420_092a03 -p inr420_092103 User Name : same as zenit account Database : same as zenit account Password : same as  zenit account Hostname : db-mysql.zenit ************************* creating tables ************************* create table friends ( in int auto_increment not null, lname varchar(25) not null, fname varchar(25) not null, phone varchar(10), email varchar(60), primary [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=75&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>mysql -h db-mysql.zenit -u int420_092a03 -p inr420_092103</p>
<p>User Name : same as zenit account</p>
<p>Database : same as zenit account</p>
<p>Password : same as  zenit account</p>
<p>Hostname : db-mysql.zenit</p>
<p>*************************</p>
<p>creating tables</p>
<p>*************************</p>
<p>create table friends ( in int auto_increment not null, lname varchar(25) not null, fname varchar(25) not null, phone varchar(10), email varchar(60), primary key (id) );</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=75&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/connect-to-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Log In</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/log-in/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/log-in/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 12:08:54 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/2009/06/24/log-in/</guid>
		<description><![CDATA[#!/usr/bin/perl -w # Use the DBI (database interface) module use DBI; use Digest::MD5 qw(md5_hex md5_base64); # Declare variables for MySQL Connection $db=&#8221;int420_092a18&#8243;; $user=&#8221;int420_092a18&#8243;; $passwd=&#8221;41501443&#8243;; $host=&#8221;db-mysql.zenit&#8221;; $connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;; # Print HTTP header print &#8220;Content-type:text/html\n\n&#8221;; # If first-time display form if($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;) á { á &#38;displaylogin; á exit; á } # Else process form and verify/display message [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=73&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -w</p>
<p># Use the DBI (database interface) module<br />
use DBI;<br />
use Digest::MD5 qw(md5_hex md5_base64);</p>
<p># Declare variables for MySQL Connection<br />
$db=&#8221;int420_092a18&#8243;;<br />
$user=&#8221;int420_092a18&#8243;;<br />
$passwd=&#8221;41501443&#8243;;<br />
$host=&#8221;db-mysql.zenit&#8221;;<br />
$connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;;</p>
<p># Print HTTP header<br />
print &#8220;Content-type:text/html\n\n&#8221;;</p>
<p># If first-time display form<br />
if($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;)<br />
á {<br />
á &amp;displaylogin;<br />
á exit;<br />
á }</p>
<p># Else process form and verify/display message<br />
else<br />
á {<br />
á &amp;parseform();<br />
á &amp;verify();<br />
á &amp;sendmessage();<br />
á exit;<br />
á }</p>
<p># Standard form parseing using POST method<br />
sub parseform<br />
á {<br />
á á áread(STDIN, $qstring, $ENV{&#8216;CONTENT_LENGTH&#8217;});</p>
<p>á á á á# break data up on ampersands, and store in array<br />
á á á á@pairs = split(/&amp;/, $qstring);</p>
<p>á á á á# start a loop to process form data<br />
á á á áforeach (@pairs) {<br />
á á á á á á á á# split field name and value on &#8216;=&#8217;, and store in two scalar variables<br />
á á á á á á á á($key, $value) = split(/=/);<br />
á á á á á á á á# translate &#8216;+&#8217; signs back to spaces<br />
á á á á á á á á$value =~ tr/+/ /;<br />
á á á á á á á á# translate special characters<br />
á á á á á á á á$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
á á á á á á á á# store data in hash<br />
á á á á á á á á$form{$key} = $value;<br />
á á á á á á á á# now the data is stored in a hash %form<br />
á á á á}<br />
á }</p>
<p>sub displaylogin<br />
á {<br />
á print qq~<br />
á á á á&lt;html&gt;<br />
á á á á&lt;head&gt;<br />
á á á á&lt;title&gt;Login Page&lt;/title&gt;<br />
á á á á&lt;/head&gt;<br />
á á á á&lt;body&gt;<br />
á á á á&lt;form action=&#8221;login.cgi&#8221; method=post&gt;<br />
á á á á&lt;center&gt;<br />
á á á á&lt;h2&gt;Enter Your Username and Password&lt;/h2&gt;<br />
á á á áUser Name: &lt;input type=text name=name value=&#8221;$form{name}&#8221;&gt;<br />
á á á á$errors{name}<br />
á á á á&lt;br&gt;<br />
á á á áPassword: &lt;input type=password name=password&gt;<br />
á á á á$errors{password}<br />
á á á á&lt;br&gt;<br />
á á á á&lt;input type=submit value=&#8221;Insert&#8221; name=Insert&gt;<br />
á á á á&lt;input type=reset value=Reset name=reset&gt;<br />
á á á á&lt;/form&gt;<br />
á á á á&lt;/body&gt;<br />
á á á á&lt;/html&gt;<br />
á á á á~;<br />
á }</p>
<p>sub verify<br />
á {<br />
á # Form SQL Select statements to select users record from table<br />
á # Note the where clause<br />
á $select = qq~select id,name,password from users<br />
á á á á á á where name = &#8216;$form{name}&#8217;~;</p>
<p>á # Connect to MySQL and create Database Handler $dbh<br />
á $dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);<br />
á # Prepare MySQL statement and create Statement Handler $sth<br />
á $sth=$dbh-&gt;prepare($select);<br />
á # Execute Statement Handler and test for success<br />
á $sth-&gt;execute();</p>
<p>á# Test if row found in select<br />
áif(@row = $sth-&gt;fetchrow_array())<br />
á á á á{<br />
á á á á# If row found compare encrypted passwords<br />
á á á á$cryptpasswd = md5_base64($form{password});<br />
á á á á á if($cryptpasswd ne $row[2])<br />
á á á á á {<br />
á á á á á $errors{password} = &#8220;Incorrect password&#8221;;<br />
á á á á á &amp;displaylogin;<br />
á á á á á exit;<br />
á á á á á }<br />
á á á á}<br />
áelse<br />
á á á á{<br />
á á á á# If row not found display username not found<br />
á á á á$errors{name} = &#8220;User name not found&#8221;;<br />
á á á á&amp;displaylogin;<br />
á á á áexit;<br />
á á á á}<br />
}</p>
<p>sub sendmessage<br />
á á á á{<br />
á á á áprint qq~<br />
á á á á&lt;html&gt;&lt;head&gt;&lt;title&gt;Login Successful!&lt;/title&gt;&lt;/head&gt;<br />
á á á á&lt;body&gt;&lt;h2&gt;Login Successful!!!&lt;/h2&gt;&lt;/body&gt;<br />
á á á á&lt;/html&gt;<br />
á á á á~;<br />
á á á á}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=73&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/log-in/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Register</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/register/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/register/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 12:07:42 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/2009/06/24/register/</guid>
		<description><![CDATA[#!/usr/bin/perl -w # Use the DBI (database interface) module use DBI; use Digest::MD5 qw(md5_hex md5_base64); # Declare variables for MySQL Connection $db=&#8221;int420_092a18&#8243;; $user=&#8221;int420_092a18&#8243;; $passwd=&#8221;41501443&#8243;; $host=&#8221;db-mysql.zenit&#8221;; $connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;; # Print HTTP header print &#8220;Content-type:text/html\n\n&#8221;; # If first-time display form if($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;) á { á &#38;displayform; á exit; á } # Else process form and insert into [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=72&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -w</p>
<p># Use the DBI (database interface) module</p>
<p>use DBI;<br />
use Digest::MD5 qw(md5_hex md5_base64);</p>
<p># Declare variables for MySQL Connection<br />
$db=&#8221;int420_092a18&#8243;;<br />
$user=&#8221;int420_092a18&#8243;;<br />
$passwd=&#8221;41501443&#8243;;<br />
$host=&#8221;db-mysql.zenit&#8221;;<br />
$connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;;</p>
<p># Print HTTP header<br />
print &#8220;Content-type:text/html\n\n&#8221;;</p>
<p># If first-time display form<br />
if($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;)<br />
á {<br />
á &amp;displayform;<br />
á exit;<br />
á }</p>
<p># Else process form and insert into DB<br />
else<br />
á {<br />
á &amp;parseform();<br />
á &amp;verifyform();<br />
á &amp;insertuser();<br />
á exit;<br />
á }</p>
<p># Standard form parseing using POST method<br />
sub parseform<br />
á {<br />
á á áread(STDIN, $qstring, $ENV{&#8216;CONTENT_LENGTH&#8217;});</p>
<p>á á á á# break data up on ampersands, and store in array<br />
á á á á@pairs = split(/&amp;/, $qstring);</p>
<p>á á á á# start a loop to process form data<br />
á á á áforeach (@pairs) {<br />
á á á á á á á á# split field name and value on &#8216;=&#8217;, and store in two scalar variables<br />
á á á á á á á á($key, $value) = split(/=/);<br />
á á á á á á á á# translate &#8216;+&#8217; signs back to spaces<br />
á á á á á á á á$value =~ tr/+/ /;<br />
á á á á á á á á# translate special characters<br />
á á á á á á á á$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
á á á á á á á á# store data in hash<br />
á á á á á á á á$form{$key} = $value;<br />
á á á á á á á á# now the data is stored in a hash %form<br />
á á á á}<br />
á }</p>
<p>sub insertuser<br />
á {<br />
á $cryptpasswd = md5_base64($form{password});</p>
<p>á á á# SQL insert statement into register table<br />
á $insert = qq~insert users (name, password)<br />
á á á ávalues(&#8216;$form{name}&#8217;,'$cryptpasswd&#8217;)~;</p>
<p>á á á á#Connect to MySQL and create Database Handler $dbh<br />
á á á á$dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);</p>
<p>á á á á#Prepare MySQL statement and create Statement Handler $sth<br />
á á á á$sth=$dbh-&gt;prepare($insert);</p>
<p>á á á á#Execute Statement Handler and test for success<br />
á á á áif($sth-&gt;execute())<br />
á á á á á {<br />
á á á á á &amp;displaysuccess;<br />
á á á á á }<br />
á á á áelse<br />
á á á á á {<br />
á á á á á &amp;displayfail;<br />
á á á á á }</p>
<p>á á á á#Disconnect database<br />
á á á á$dbh-&gt;disconnect();<br />
á á á á}</p>
<p>á á á ásub displaysuccess<br />
á á á á á {<br />
á á á á á print qq~&lt;html&gt;\n<br />
á á á á á á á&lt;head&gt;<br />
á á á á á á á&lt;title&gt;Registration Successful&lt;/title&gt;<br />
á á á á á á á&lt;/head&gt;<br />
á á á á á á á&lt;body&gt;<br />
á á á á á á á&lt;h2&gt;Information Added&lt;/h2&gt;<br />
á á á á á á á&lt;/body&gt;<br />
á á á á á á á&lt;/html&gt;<br />
á á á á á á á~;<br />
á á á á á á}</p>
<p>á á á ásub displayfail<br />
á á á á á {<br />
á á á á á print qq~&lt;html&gt;\n<br />
á á á á á á á&lt;head&gt;<br />
á á á á á á á&lt;title&gt;Registration Failed&lt;/title&gt;<br />
á á á á á á á&lt;/head&gt;<br />
á á á á á á á&lt;body&gt;<br />
á á á á á á á&lt;h2&gt;Failure, please try again&lt;h2&gt;<br />
á á á á á á á&lt;/body&gt;<br />
á á á á á á á&lt;/html&gt;<br />
á á á á á á á~;<br />
á á á á á á}</p>
<p>sub displayform<br />
á {<br />
á print qq~<br />
á á á á&lt;html&gt;<br />
á á á á&lt;head&gt;<br />
á á á á&lt;title&gt;Register User&lt;/title&gt;<br />
á á á á&lt;/head&gt;</p>
<p>á á á á&lt;body&gt;</p>
<p>á á á á&lt;form action=&#8221;register.cgi&#8221; method=post&gt;</p>
<p>á á á á&lt;center&gt;<br />
á á á á&lt;h2&gt;Register a User and Password&lt;/h2&gt;<br />
á á á áUser Name: &lt;input type=text name=name value=&#8221;$form{name}&#8221;&gt;<br />
á á á á$errors{name}<br />
á á á á&lt;br&gt;<br />
á á á á&lt;i&gt;Username should be all lowercase and 8 chars or less&lt;/i&gt;<br />
á á á á&lt;br&gt;<br />
á á á á&lt;br&gt;<br />
á á á áPassword: &lt;input type=password name=password&gt;<br />
á á á á$errors{password}<br />
á á á á&lt;br&gt;<br />
á á á áRetype Password: &lt;input type=password name=password2&gt;<br />
á á á á$errors{password2}<br />
á á á á&lt;br&gt;<br />
á á á á&lt;input type=submit value=&#8221;Insert&#8221; name=Insert&gt;<br />
á á á á&lt;input type=reset value=Reset name=reset&gt;<br />
á á á á&lt;/form&gt;<br />
á á á á&lt;/body&gt;<br />
á á á á&lt;/html&gt;<br />
á á á á~;<br />
}</p>
<p>sub verifyform<br />
á {<br />
á $missing = 0;<br />
á # Test for username between 2 and 8 alphanumerics<br />
á if($form{&#8216;name&#8217;} !~ /^[a-z0-9]{2,8}$/)<br />
á á á á{<br />
á á á á$errors{&#8216;name&#8217;} = &#8220;Please enter up to 8 character username&#8221;;<br />
á á á á$missing = 1;<br />
á á á á}<br />
á else<br />
á á á á{<br />
á á á á# Test for existing username in table<br />
á á á á$select = qq~select name from users where name = &#8216;$form{name}&#8217;~;<br />
á á á á$dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);<br />
á á á á$sth=$dbh-&gt;prepare($select);<br />
á á á á$sth-&gt;execute();</p>
<p>á á á áif(@row = $sth-&gt;fetchrow_array())<br />
á á á á á {<br />
á á á á á $errors{&#8216;name&#8217;} = &#8220;Name already registered&#8221;;<br />
á á á á á $missing = 1;<br />
á á á á á }<br />
á á á áelse<br />
á á á á á{<br />
á á á á á$errors{&#8216;name&#8217;} = &#8220;&#8221;;<br />
á á á á á}<br />
á á á á}</p>
<p># Test for password between 6 and 10 alphanumerics<br />
if ($form{&#8216;password&#8217;} !~ /^[a-z0-9A-Z]{6,10}$/)<br />
á {<br />
á $errors{&#8216;password&#8217;} = &#8220;Enter 6 to 10 character password&#8221;;<br />
á $missing = 1;<br />
á }<br />
else<br />
á {<br />
á $errors{&#8216;password&#8217;} = &#8220;&#8221;;<br />
á }</p>
<p># Test for password entered twice<br />
if ($form{&#8216;password&#8217;} ne $form{password2})<br />
á {<br />
á $errors{&#8216;password2&#8242;} = &#8220;Passwords dont match&#8221;;<br />
á $missing = 1;<br />
á }<br />
else<br />
á {<br />
á $errors{&#8216;password2&#8242;} = &#8220;&#8221;;<br />
á }<br />
if($missing == 1)<br />
á {<br />
á &amp;displayform;<br />
á exit;<br />
á }<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=72&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/register/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Stage 1</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/stage-1/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/stage-1/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 12:02:27 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/?p=69</guid>
		<description><![CDATA[#!/usr/bin/perl -w #Use the DBI (data interface) module use DBI; # Declare MySQL variables and connection information $db=&#8221;int420_092a18&#8243;; $user=&#8221;int420_092a18&#8243;; $passwd=&#8221;41501443&#8243;; $host=&#8221;db-mysql.zenit&#8221;; $connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;; # Print HTTP header print &#8220;Content-type:text/html\n\n&#8221;; # If the request method is GET display the form if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;) { &#38;displayform(); exit; } # If the request method is POST parse form, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=69&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -w</p>
<p>#Use the DBI (data interface) module<br />
use DBI;</p>
<p># Declare MySQL variables and connection information<br />
$db=&#8221;int420_092a18&#8243;;<br />
$user=&#8221;int420_092a18&#8243;;</p>
<p>$passwd=&#8221;41501443&#8243;;<br />
$host=&#8221;db-mysql.zenit&#8221;;<br />
$connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;;</p>
<p># Print HTTP header<br />
print &#8220;Content-type:text/html\n\n&#8221;;</p>
<p># If the request method is GET display the form<br />
if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;)<br />
{<br />
&amp;displayform();<br />
exit;<br />
}</p>
<p># If the request method is POST parse form, verify it, and then insert into MySQL table<br />
if ($ENV{REQUEST_METHOD} eq &#8220;POST&#8221;)<br />
{<br />
&amp;parseform();<br />
&amp;verifyform();<br />
&amp;insertregister();<br />
exit;<br />
}</p>
<p># POST Form Sub-Routine</p>
<p>sub displayform<br />
{<br />
print qq~ &lt;html&gt;&lt;head&gt;&lt;title&gt;User Registration&lt;/title&gt;&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;form action=&#8221;stage1.cgi&#8221; method=post&gt;<br />
&lt;center&gt;<br />
&lt;h2&gt;User Registration&lt;/h2&gt;<br />
Login Name: &lt;input type=text name=login value=&#8221;$form{login}&#8221;&gt; $errors{login}<br />
&lt;br&gt;<br />
Password: &lt;input type=password name=passwd value=&#8221;$form{passwd}&#8221;&gt; $errors{passwd}<br />
&lt;br&gt;<br />
Retype Password: &lt;input type=password name=passwd2 value=&#8221;$form{passwd2}&#8221;&gt; $errors{passwd2}<br />
&lt;br&gt;<br />
First Name: &lt;input type=text name=fname value=&#8221;$form{fname}&#8221;&gt; $errors{fname}<br />
&lt;br&gt;<br />
Last Name: &lt;input type=text name=lname value=&#8221;$form{lname}&#8221;&gt; $errors{lname}<br />
&lt;br&gt;<br />
Department: &lt;input type=text name=dept value=&#8221;$form{dept}&#8221;&gt; $errors{dept}<br />
&lt;br&gt;<br />
Phone: &lt;input type=text name=phone value=&#8221;$form{phone}&#8221;&gt; $errors{phone} (No Dashes Please)<br />
&lt;br&gt;<br />
Email: &lt;input type=text name=email value=&#8221;$form{email}&#8221;&gt; $errors{email}<br />
&lt;br&gt;<br />
&lt;input type=submit value=Submit name=submit&gt;<br />
&lt;input type=reset value=Reset name=reset&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt; ~;<br />
}</p>
<p># Sub-routine for parsing the POST form</p>
<p>sub parseform<br />
{<br />
read(STDIN, $qstring, $ENV{&#8216;CONTENT_LENGTH&#8217;});</p>
<p># break data up on ampersands, and store in array<br />
@pairs = split(/&amp;/, $qstring);</p>
<p># start a loop to process form data<br />
foreach (@pairs) {<br />
# split field name and value on &#8216;=&#8217;, and store in two scalar variables<br />
($key, $value) = split(/=/);<br />
# translate &#8216;+&#8217; signs back to spaces<br />
$value =~ tr/+/ /;<br />
# translate special characters<br />
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
# store data in hash<br />
$form{$key} = $value;<br />
# now the data is stored in a hash %form<br />
}<br />
}</p>
<p>sub verifyform<br />
{<br />
# Create variable missing stored with 0 value<br />
$missing = 0;</p>
<p># If any field in the form is blank, $missing =1 and error message is stored<br />
foreach (keys %form)<br />
{<br />
if ($form{$_} eq &#8220;&#8221;)<br />
{<br />
$errormsg = &#8220;Please enter in all fields to register&#8221;;<br />
$missing = 1;  ###If there is missing data set the missing flag to 1<br />
}<br />
# If no fields are blank the error message is also blank.<br />
elsif ($form{passwd} ne $form{passwd2})<br />
{<br />
$errors{passwd} = &#8220;Password&#8217;s don&#8217;t match&#8221;;<br />
$missing = 1;<br />
}<br />
else<br />
{<br />
$errormsg = &#8220;&#8221;;<br />
}<br />
$errors{$_}=$errormsg;  # Loads the error message into the errors hash<br />
}</p>
<p>if ($missing == 1) # Resends form if any fields are blank<br />
{<br />
&amp;displayform;<br />
exit;<br />
}<br />
}</p>
<p>sub insertregister<br />
{</p>
<p># SQL insert statement into register table<br />
$insert = qq~insert register (login, passwd, fname, lname, dept, phone, email)<br />
values(&#8216;$form{login}&#8217;,'$form{passwd}&#8217;,'$form{fname}&#8217;,'$form{lname}&#8217;,'$form{dept}&#8217;,'$form{phone}&#8217;,'$form{email}&#8217;)~;</p>
<p>#Connect to MySQL and create Database Handler $dbh<br />
$dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);</p>
<p>#Prepare MySQL statement and create Statement Handler $sth<br />
$sth=$dbh-&gt;prepare($insert);</p>
<p>#Execute Statement Handler and test for success<br />
if($sth-&gt;execute())<br />
{<br />
&amp;displaysuccess;<br />
&amp;showfriends;<br />
}<br />
else<br />
{<br />
&amp;displayfail;<br />
}</p>
<p>#Disconnect database<br />
$dbh-&gt;disconnect();<br />
}</p>
<p>sub displaysuccess<br />
{<br />
print qq~&lt;html&gt;\n<br />
&lt;head&gt;<br />
&lt;title&gt;Registration Successful&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;h2&gt;Information Added&lt;/h2&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;<br />
}</p>
<p>sub displayfail<br />
{<br />
print qq~&lt;html&gt;\n<br />
&lt;head&gt;<br />
&lt;title&gt;Registration Failed&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;h2&gt;Failure, please try again&lt;h2&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=69&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/stage-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Taint 2 Sec.</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/taint-2-sec/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/taint-2-sec/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:51:50 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/?p=65</guid>
		<description><![CDATA[#!/usr/bin/perl -wT $ENV{&#8220;PATH&#8221;} = &#8220;&#8221;; print &#8220;Content-Type:text/html\n\n&#8221;; if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;) { &#38;printform; exit; } #ELSE PROCESS THE FORM AND INSERT INTO THE DATABASE else { &#38;parseform; &#38;emptyform; &#38;submitform; exit; } ###################### sub emptyform { $missing = 0;     #INITIALIZE THE MISSING FLAG TO BE ZERO foreach (keys %form) { if ($form{$_} eq &#8220;&#8221;) { $errormsg [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=65&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -wT</p>
<p>$ENV{&#8220;PATH&#8221;} = &#8220;&#8221;;<br />
print &#8220;Content-Type:text/html\n\n&#8221;;</p>
<p>if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;)<br />
{<br />
&amp;printform;<br />
exit;<br />
}<br />
#ELSE PROCESS THE FORM AND INSERT INTO THE DATABASE<br />
else<br />
{<br />
&amp;parseform;<br />
&amp;emptyform;<br />
&amp;submitform;<br />
exit;<br />
}</p>
<p>######################<br />
sub emptyform<br />
{<br />
$missing = 0;     #INITIALIZE THE MISSING FLAG TO BE ZERO</p>
<p>foreach (keys %form)<br />
{<br />
if ($form{$_} eq &#8220;&#8221;)<br />
{<br />
$errormsg = &#8220;Please Enter Something&#8221;;<br />
$missing = 1;         #IF THERE IS MISSING DATA SET THE FLAG TO 1<br />
}<br />
else<br />
{<br />
$errormsg = &#8220;&#8221;;<br />
}<br />
$errors{$_}=$errormsg;        #LOAD THE %error HASH WITH THE ERROR MESSAGE<br />
}<br />
if ($form{&#8216;address&#8217;} !~ /^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,60})$/)<br />
{<br />
$addresserror = &#8220;The Format of you email address is incorrect.\n&#8221;;<br />
$missing = 1;<br />
}<br />
if ($missing == 1)     #IF FLAG IS SET TO 1 THEN RESEND THE FORM AND EXIT<br />
{<br />
&amp;printform;<br />
print qq~$errors{&#8216;address&#8217;} &lt;br&gt; $addresserror ~;<br />
exit;<br />
}<br />
}<br />
#########################################<br />
sub submitform<br />
{<br />
if ($form{&#8216;address&#8217;} =~ /^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+))$/)<br />
{<br />
&amp;sender;<br />
$email = $1;<br />
system(&#8220;/bin/mail -s &#8216;message&#8217; $email  &lt; /home/int420_091b02/newhttpd/cgi-bin/message.txt&#8221;);<br />
print &#8220;EMAIL SENT to:  $1&#8243;<br />
}<br />
}</p>
<p>sub sender<br />
{<br />
print &#8220;&lt;html&gt;&lt;head&gt;&lt;title&gt;sender&lt;/title&lt;/head&gt;\n&#8221;;<br />
print &#8220;&lt;body&gt;&lt;p&gt;\n&#8221;;<br />
print &#8220;The sender is $form{address}\n&#8221;;<br />
print &#8220;&lt;br&gt;&lt;br&gt;&#8221;;<br />
print &#8220;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;\n&#8221;;<br />
}</p>
<p>########################<br />
sub printform<br />
{<br />
print qq~<br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;iso-8859-1&#8243;?&gt;<br />
&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221; &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;<br />
&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221;&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Taint 1 SECURED&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243; /&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;form method=&#8221;post&#8221; action=&#8221;taint1secure.pl&#8221;&gt;<br />
&lt;p&gt;What is you email address:<br />
&lt;input type=&#8221;text&#8221; name=&#8221;address&#8221;&gt; gsbains3@ learn.senecac.on.ca<br />
&lt;/p&gt;<br />
&lt;p&gt;</p>
<p>&lt;input type=&#8221;submit&#8221; name=&#8221;Submit&#8221; value=&#8221;send address&#8221; /&gt;<br />
&lt;/p&gt;<br />
&lt;br&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;</p>
<p>}</p>
<p>###########################</p>
<p>sub parseform<br />
{<br />
read(STDIN, $buffer, $ENV{&#8216;CONTENT_LENGTH&#8217;});</p>
<p>#BREAK THEDATA UP BY AMPERSANDS &amp;&amp;&amp;&amp;; AND STORE IT IN AN ARRAY<br />
@pairs = split(/&amp;/, $buffer);</p>
<p>#START A LOOP TO PROCESS FORM DATA<br />
foreach $pair (@pairs) {<br />
($key, $value) = split(/=/, $pair);<br />
$value =~ tr/+/ /;<br />
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
$form{$key} = $value;<br />
}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=65&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/taint-2-sec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Taint</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/taint/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/taint/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:51:12 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/?p=63</guid>
		<description><![CDATA[#!/usr/bin/perl -w #@mail_to = split(/=/, $ENV{QUERY_STRING}); #$mail_to[1] = s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg; #$mail_to[1] = tr/+/ /; #$mail_to[1] = &#8216;gsbains3@senecac.on.ca&#8217;; #GET DATA FROM THE ENVIRONMENT VARIABLE $qstring = $ENV{&#8216;QUERY_STRING&#8217;}; #BREAK THEDATA UP BY AMPERSANDS &#38;&#38;&#38;&#38;; AND STORE IT IN AN ARRAY @pairs = split (/&#38;/, $qstring); #START A LOOP TO PROCESS FORM DATA foreach (@pairs) { #split field [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=63&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -w<br />
#@mail_to = split(/=/, $ENV{QUERY_STRING});<br />
#$mail_to[1] = s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
#$mail_to[1] = tr/+/ /;<br />
#$mail_to[1] = &#8216;gsbains3@senecac.on.ca&#8217;;<br />
#GET DATA FROM THE ENVIRONMENT VARIABLE<br />
$qstring = $ENV{&#8216;QUERY_STRING&#8217;};</p>
<p>#BREAK THEDATA UP BY AMPERSANDS &amp;&amp;&amp;&amp;; AND STORE IT IN AN ARRAY<br />
@pairs = split (/&amp;/, $qstring);</p>
<p>#START A LOOP TO PROCESS FORM DATA<br />
foreach (@pairs) {</p>
<p>#split field name and value on &#8216;=&#8217;, store in two scalar variables<br />
($key, $value) = split (/=/);<br />
#translate &#8216;+&#8217; signs back to spaces<br />
$value =~ tr/+/ /;<br />
#translate special character<br />
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
#store data in hash<br />
$form{$key} = $value;<br />
}</p>
<p>`mail -s &#8220;message&#8221; $form{address} &lt; message.txt`;</p>
<p>print &#8220;Content-Type:text/html\n\n&#8221;;</p>
<p>print &#8220;&lt;head&gt;&lt;title&gt;sender&lt;/title&lt;/head&gt;\n&#8221;;<br />
print &#8220;&lt;body&gt;&lt;p&gt;\n&#8221;;<br />
print &#8220;The sender is $form{address}\n&#8221;;<br />
#print &#8220;The Value of QSTRING is:  $qstring\n&#8221;;<br />
print &#8220;&lt;/p&gt;&lt;/body&gt;\n&#8221;;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=63&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/taint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Form Data Var.</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/form-data-var/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/form-data-var/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:49:15 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/?p=61</guid>
		<description><![CDATA[#!/usr/bin/perl -wT ################################################## # PROGRAM:      FORM PROCESSING AND VERIFICATION # DESCRIPTION:  THIS CGI WILL VERIFY USER INPUT AGAINST PREDEFINED CRITERIA ################################################## ### OPTIONS ### ############### use strict; ### VARIABLE DECLARATIONS ### ############################# my %ERRORS;   #HOLD ERRORS FOR REQURIED FIELD CHECK my %FORM;     #WILL HOLD ALL FORM DATA #HOLDS ALL FORM FIELDS my %FIELDS = ( [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=61&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -wT</p>
<p>##################################################<br />
# PROGRAM:      FORM PROCESSING AND VERIFICATION<br />
# DESCRIPTION:  THIS CGI WILL VERIFY USER INPUT AGAINST PREDEFINED CRITERIA<br />
##################################################</p>
<p>### OPTIONS ###<br />
###############<br />
use strict;</p>
<p>### VARIABLE DECLARATIONS ###<br />
#############################<br />
my %ERRORS;   #HOLD ERRORS FOR REQURIED FIELD CHECK<br />
my %FORM;     #WILL HOLD ALL FORM DATA</p>
<p>#HOLDS ALL FORM FIELDS<br />
my %FIELDS = (<br />
&#8220;username&#8221; =&gt; &#8220;Username&#8221;,<br />
&#8220;password&#8221; =&gt; &#8220;Password&#8221;,<br />
&#8220;repassword&#8221; =&gt; &#8220;Re-Type-Password&#8221;,<br />
&#8220;fname&#8221; =&gt; &#8220;First Name&#8221;,<br />
&#8220;lname&#8221; =&gt; &#8220;Last Name&#8221;,<br />
&#8220;street&#8221; =&gt; &#8220;Street&#8221;,<br />
&#8220;city&#8221; =&gt; &#8220;City&#8221;,<br />
&#8220;province&#8221; =&gt; &#8220;Province&#8221;,<br />
&#8220;country&#8221; =&gt; &#8220;Country&#8221;,<br />
&#8220;postal&#8221; =&gt; &#8220;Postal/ZipCode&#8221;,<br />
&#8220;email&#8221; =&gt; &#8220;E-Mail&#8221;,<br />
&#8220;phone&#8221; =&gt; &#8220;Phone Number&#8221;<br />
);</p>
<p>#HOLDS REG EXP&#8217;S MATCHING DESIRED INPUT FOR EACH FORM FIELD<br />
my %PATTERNS = (<br />
&#8220;username&#8221; =&gt; &#8216;^[A-Za-z0-9]{6,10}$&#8217;,<br />
&#8220;password&#8221; =&gt; &#8216;^[A-Za-z0-9]{6,}$&#8217;,<br />
&#8220;repassword&#8221; =&gt; &#8220;$FORM{password}&#8221;,<br />
&#8220;fname&#8221; =&gt; &#8216;^[a-zA-Z]+(([\'\,\.\-][a-zA-Z])?[a-zA-Z]*)*$&#8217;,<br />
&#8220;lname&#8221; =&gt; &#8216;^[a-zA-Z]+(([\'\,\.\-][a-zA-Z])?[a-zA-Z]*)*$&#8217;,<br />
&#8220;street&#8221; =&gt; &#8216;^[0-9A-Za-z \.\,\'\-]{2,60}$&#8217;,<br />
&#8220;city&#8221; =&gt; &#8216;^[A-Za-z \'\-]{2,60}$&#8217;,<br />
&#8220;province&#8221; =&gt; &#8216;^[A-Za-z \'\-]{2,60}$&#8217;,<br />
&#8220;country&#8221; =&gt; &#8216;^(Canada|USA)$&#8217;,<br />
&#8220;postal&#8221; =&gt; &#8216;^(([0-9]{5}-[0-9]{4})|([0-9]{5})|([AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy][0-9][A-Za-z][ ]?[0-9][A-Za-z][0-9]))$&#8217;,<br />
&#8220;email&#8221; =&gt; &#8216;^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,60})$&#8217;,<br />
&#8220;phone&#8221; =&gt; &#8216;^[0-9]{3}-[0-9]{3}-[0-9]{4}$&#8217;<br />
);</p>
<p>#DETERMINS THE PROCESS IN WHICH FORM FIELDS ARE PRINTED/PROCESSED<br />
my @formSequence = (&#8220;username&#8221;, &#8220;password&#8221;, &#8220;repassword&#8221;, &#8220;fname&#8221;, &#8220;lname&#8221;, &#8220;street&#8221;, &#8220;city&#8221;, &#8220;province&#8221;, &#8220;postal&#8221;, &#8220;email&#8221;, &#8220;phone&#8221;);</p>
<p>### HTTP HEADER ###<br />
###################<br />
print &#8220;Content-Type: text/html;charset=ISO-8859-1\n\n&#8221;;</p>
<p>### XHTML PAGE HEADINGS ###<br />
###########################<br />
&amp;startXHTML;</p>
<p>if ($ENV{REQUEST_METHOD} eq &#8220;POST&#8221;)<br />
{<br />
&amp;readFormData;<br />
if (&amp;checkRequiredFields)<br />
{<br />
print &#8220;Form Data Validated Succesfully!&#8221;;<br />
}<br />
else<br />
{<br />
&amp;printForm;<br />
foreach (@formSequence)<br />
{<br />
print qq~$ERRORS{$_}&lt;br&gt;~;<br />
}<br />
}<br />
}<br />
else {<br />
&amp;printForm;<br />
}</p>
<p>### XHTML FOOTER ###<br />
####################<br />
&amp;endXHTML;</p>
<p>##############################################<br />
###################### END OF MAIN PROGRAM ###<br />
##############################################</p>
<p>### SUBROUTINES ###<br />
###################</p>
<p>#THIS SUBROUTINE CHECKS THE USER INPUTE<br />
#AND RETURNS 1 IF ALL INPUTS ARE CORRECT, OTHERWISE 0 IS RETURNED</p>
<p>sub checkRequiredFields<br />
{<br />
my $success = 1;</p>
<p>foreach (keys (%FIELDS))<br />
{<br />
if ($FORM{$_} !~ $PATTERNS{$_})<br />
{<br />
$ERRORS{$_} = &#8220;ERROR: $FIELDS{$_} IS MISSING OR INCORRECT FORMAT\n&#8221;;<br />
$success = 0;<br />
}<br />
}<br />
if ($FORM{repassword} ne $FORM{password})<br />
{<br />
$ERRORS{repassword}=&#8221;ERROR: The Passwords Do NOT Match\n&#8221;;<br />
$success = 0;<br />
}</p>
<p>return $success;<br />
}</p>
<p>#PRODUCE FORM WITH OPTIONAL ERROR MESSAGES</p>
<p>sub printForm<br />
{<br />
print qq~<br />
&lt;form name=&#8221;form1&#8243; method=&#8221;post&#8221; action=&#8221;fdataverif.cgi&#8221;&gt;<br />
&lt;p align=&#8221;center&#8221;&gt;Welcome the FORM DATA VERIFICATION LAB&lt;/p&gt;<br />
&lt;table width=&#8221;53%&#8221; border=&#8221;0&#8243; align=&#8221;center&#8221; cellpadding=&#8221;4&#8243;&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Username: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;username&#8221; type=&#8221;text&#8221; id=&#8221;username&#8221; value=&#8221;$FORM{username}&#8221;&gt;<br />
(6-10 Alphanumeric Characters)&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Password: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;password&#8221; type=&#8221;password&#8221; id=&#8221;password&#8221;&gt;<br />
(&amp;gt;=6 Alphanumeric Characters)&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Re-type Password: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;repassword&#8221; type=&#8221;password&#8221; id=&#8221;repassword&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Firstname: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;fname&#8221; type=&#8221;text&#8221; id=&#8221;fname&#8221; value=&#8221;$FORM{fname}&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Lastname: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;lname&#8221; type=&#8221;text&#8221; id=&#8221;lname&#8221; value=&#8221;$FORM{lname}&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Street Address: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;street&#8221; type=&#8221;text&#8221; id=&#8221;street&#8221; value=&#8221;$FORM{street}&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;City: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;city&#8221; type=&#8221;text&#8221; id=&#8221;city&#8221; value=&#8221;$FORM{city}&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;State/Province: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;province&#8221; type=&#8221;text&#8221; id=&#8221;province&#8221; value=&#8221;$FORM{province}&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Country: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;select name=&#8221;country&#8221; id=&#8221;country&#8221;&gt;<br />
&lt;option value=&#8221;USA&#8221;&gt;USA&lt;/option&gt;<br />
&lt;option value=&#8221;CANADA&#8221;&gt;CANADA&lt;/option&gt;<br />
&lt;/select&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Postal Code: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;postal&#8221; type=&#8221;text&#8221; id=&#8221;postal&#8221; value=&#8221;$FORM{postal}&#8221;&gt;<br />
(USA: 12345-1234; CANADA: A1A1A1)&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;E-mail Address: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;email&#8221; type=&#8221;text&#8221; id=&#8221;email&#8221; value=&#8221;$FORM{email}&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Phone Number: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input name=&#8221;phone&#8221; type=&#8221;text&#8221; id=&#8221;phone&#8221; value=&#8221;$FORM{phone}&#8221; &gt; ###-###-####<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;<br />
&lt;input type=&#8221;submit&#8221; name=&#8221;save&#8221; value=&#8221;Register&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;reset&#8221; name=&#8221;Submit2&#8243; value=&#8221;Reset&#8221; &gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt; &lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;p align=&#8221;center&#8221;&gt;* &#8211; All fields are required&lt;/p&gt;<br />
&lt;/form&gt;<br />
~;<br />
}</p>
<p>#THIS SUBROUTINE WILL GENERASTE XHTML-COMPLIANT PAGE HEADERS<br />
sub startXHTML<br />
{<br />
print qq~<br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;iso-8859-1&#8243;?&gt;<br />
&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221; &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;<br />
&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221;&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;FORM DATA VERIFICATION&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243; /&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
~;<br />
}</p>
<p>#THIS SUBROUTINE WILL GENERATE XHTML COMPLAITE FOOTERS<br />
sub endXHTML<br />
{<br />
print qq~&lt;/body&gt;&lt;/html&gt;\n~;<br />
}</p>
<p>#PARSE THE FORM DATA<br />
sub readFormData<br />
{<br />
# read(STDIN, my $input, $ENV{&#8216;CONTENT_LENGTH&#8217;});<br />
my $input = &lt;&gt;;<br />
#BREAK THEDATA UP BY AMPERSANDS &amp;&amp;&amp;&amp;; AND STORE IT IN AN ARRAY<br />
my @pairs = split(/&amp;/, $input);<br />
my ($name, $value);<br />
#START A LOOP TO PROCESS FORM DATA<br />
foreach (@pairs)<br />
{<br />
($name, $value) = split(/=/, $_);<br />
$value =~ tr/+/ /;<br />
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
$FORM{$name} = $value;<br />
}<br />
}<br />
#####################################<br />
~; 		} 	} } else { 	&amp;printForm; }  ### XHTML FOOTER ### #################### &amp;endXHTML;  ############################################## ###################### END OF MAIN PROGRAM ### ##############################################  ### SUBROUTINES ### ###################   #THIS SUBROUTINE CHECKS THE USER INPUTE #AND RETURNS 1 IF ALL INPUTS ARE CORRECT, OTHERWISE 0 IS RETURNED  sub checkRequiredFields { 	my $success = 1; 	 	foreach (keys (%FIELDS)) 	{ 		if ($FORM{$_} !~ $PATTERNS{$_}) 		{ 			$ERRORS{$_} = &#8220;ERROR: $FIELDS{$_} IS MISSING OR INCORRECT FORMAT\n&#8221;; 			$success = 0; 		} 	} 	if ($FORM{repassword} ne $FORM{password})         {        		$ERRORS{repassword}=&#8221;ERROR: The Passwords Do NOT Match\n&#8221;; 		$success = 0;         }  	return $success; }  #PRODUCE FORM WITH OPTIONAL ERROR MESSAGES  sub printForm          {         print qq~</p>
<p align="center">Welcome the FORM DATA VERIFICATION LAB</p>
<table border="0" cellpadding="4" width="53%" align="center">
<tbody>
<tr>
<td>
<div>Username:</div>
</td>
<td>
<div> (6-10 Alphanumeric Characters)</div>
</td>
</tr>
<tr>
<td>
<div>Password:</div>
</td>
<td>
<div> (&gt;=6 Alphanumeric Characters)</div>
</td>
</tr>
<tr>
<td>
<div>Re-type Password:</div>
</td>
<td>
<div></div>
</td>
</tr>
<tr>
<td>
<div>Firstname:</div>
</td>
<td>
<div></div>
</td>
</tr>
<tr>
<td>
<div>Lastname:</div>
</td>
<td>
<div></div>
</td>
</tr>
<tr>
<td>
<div>Street Address:</div>
</td>
<td>
<div></div>
</td>
</tr>
<tr>
<td>
<div>City:</div>
</td>
<td>
<div></div>
</td>
</tr>
<tr>
<td>
<div>State/Province:</div>
</td>
<td>
<div></div>
</td>
</tr>
<tr>
<td>
<div>Country:</div>
</td>
<td>
<div> USA CANADA </div>
</td>
</tr>
<tr>
<td>
<div>Postal Code:</div>
</td>
<td>
<div> (USA: 12345-1234; CANADA: A1A1A1)</div>
</td>
</tr>
<tr>
<td>
<div>E-mail Address:</div>
</td>
<td>
<div></div>
</td>
</tr>
<tr>
<td>
<div>Phone Number:</div>
</td>
<td>
<div> ###-###-####</div>
</td>
</tr>
<tr>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
</tr>
<tr>
<td>
<div></div>
</td>
</tr>
</tbody>
</table>
<p align="center">* &#8211; All fields are required</p>
<p>~;         }  #THIS SUBROUTINE WILL GENERASTE XHTML-COMPLIANT PAGE HEADERS sub startXHTML { 	print qq~ 	                                                                                                     FORM DATA VERIFICATION                                                   	~; }  #THIS SUBROUTINE WILL GENERATE XHTML COMPLAITE FOOTERS sub endXHTML { 	print qq~\n~; }  #PARSE THE FORM DATA sub readFormData {        # read(STDIN, my $input, $ENV{&#8216;CONTENT_LENGTH&#8217;}); 	my $input = &lt;&gt;;         #BREAK THEDATA UP BY AMPERSANDS &amp;&amp;&amp;&amp;; AND STORE IT IN AN ARRAY         my @pairs = split(/&amp;/, $input); 	my ($name, $value);                 #START A LOOP TO PROCESS FORM DATA         foreach (@pairs)  	{                 ($name, $value) = split(/=/, $_);                 $value =~ tr/+/ /;                 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;                 $FORM{$name} = $value;         } } #####################################</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=61&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/form-data-var/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Friends Mysql 3</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/friends-mysql-3/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/friends-mysql-3/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:47:19 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/?p=59</guid>
		<description><![CDATA[#!/usr/bin/perl -w #USE THE DBI (DATABSE INTERFACE) MODULE use DBI; #DECLARE VARIABLES WITH MYSQL CONNECTION DATA $db=&#8221;int420_091b02&#8243;; $user=&#8221;int420_091b02&#8243;; $passwd=&#8221;21450705&#8243;; $host=&#8221;db-mysql.zenit&#8221;; $connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;; #PRINT HTTP HEADER print &#8220;Content-Type:text/html\n\n&#8221;; #DISPLAY THE FORM THE FIRST TIME THE SCRIPT IS RUN if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;) { &#38;showfriends; &#38;displayform(); exit; } #ELSE PROCESS THE FORM AND INSERT INTO THE DATABASE else [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=59&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -w</p>
<p>#USE THE DBI (DATABSE INTERFACE) MODULE<br />
use DBI;</p>
<p>#DECLARE VARIABLES WITH MYSQL CONNECTION DATA<br />
$db=&#8221;int420_091b02&#8243;;<br />
$user=&#8221;int420_091b02&#8243;;</p>
<p>$passwd=&#8221;21450705&#8243;;<br />
$host=&#8221;db-mysql.zenit&#8221;;<br />
$connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;;</p>
<p>#PRINT HTTP HEADER<br />
print &#8220;Content-Type:text/html\n\n&#8221;;</p>
<p>#DISPLAY THE FORM THE FIRST TIME THE SCRIPT IS RUN<br />
if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;)<br />
{<br />
&amp;showfriends;<br />
&amp;displayform();<br />
exit;<br />
}<br />
#ELSE PROCESS THE FORM AND INSERT INTO THE DATABASE<br />
else<br />
{<br />
&amp;parseform();<br />
&amp;verifyform;<br />
&amp;insertfriend();<br />
exit;<br />
}</p>
<p>######################################<br />
######      SUB ROUTINES        ######<br />
######################################</p>
<p>#STANDARD FORM PARSING USING &#8220;POST&#8221; METHOD<br />
sub parseform<br />
{<br />
read(STDIN, $buffer, $ENV{&#8216;CONTENT_LENGTH&#8217;});</p>
<p>#BREAK THEDATA UP BY AMPERSANDS &amp;&amp;&amp;&amp;; AND STORE IT IN AN ARRAY<br />
@pairs = split(/&amp;/, $buffer);</p>
<p>#START A LOOP TO PROCESS FORM DATA<br />
foreach $pair (@pairs) {<br />
($key, $value) = split(/=/, $pair);<br />
$value =~ tr/+/ /;<br />
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
$form{$key} = $value;<br />
}<br />
}</p>
<p>#################################</p>
<p>#INSERTING DATA INTO THE friends TABLE<br />
sub insertfriend<br />
{<br />
#FORM SQL INSERT STATEMENT<br />
$insert = qq~insert friends (lname, fname, phone, email) values (&#8216;$form{lname}&#8217;, &#8216;$form{fname}&#8217;, &#8216;$form{phone}&#8217;, &#8216;$form{email}&#8217;)~;</p>
<p>#CONNECT TO THE MYSQL DATABASE AND CREATE A DATABASE HANDLER $dbh<br />
$dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);</p>
<p>#PREPARE THE MYSQL INSERT STATEMENT AND CREATE A STATEMENT HANDLER $sth<br />
$sth=$dbh-&gt;prepare($insert);</p>
<p>#EXECUTE THE STATEMENT HANDLER AND TEST FOR SUCCESS<br />
if ($sth-&gt;execute())<br />
{<br />
&amp;showfriends;<br />
&amp;displaysuccess;<br />
}<br />
else<br />
{<br />
&amp;displayfail;<br />
}</p>
<p>#DISCONNECT DATABASE<br />
$dbh-&gt;disconnect();</p>
<p>}</p>
<p>##############################</p>
<p>sub displaysuccess<br />
{<br />
print qq~<br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;MY FRIENDS&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243;&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
RECORD ADDED!!!!!!!!<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;</p>
<p>}</p>
<p>##############################</p>
<p>sub displayfail<br />
{<br />
print qq~<br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;MY FRIENDS&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243;&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
Record &lt;b&gt;NOT&lt;/b&gt; Added!!!!!!!!<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;</p>
<p>}</p>
<p>##############################</p>
<p>sub displayform<br />
{<br />
print qq~<br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;My Friends&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243;&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;div align=&#8221;center&#8221;&gt;<br />
&lt;form name=&#8221;form1&#8243; method=&#8221;post&#8221; action=&#8221;friends3-mysql.cgi&#8221;&gt;<br />
&lt;table width=&#8221;80%&#8221; border=&#8221;0&#8243;&gt;<br />
&lt;tr&gt;<br />
&lt;td width=&#8221;45%&#8221;&gt;&lt;div align=&#8221;right&#8221;&gt;Last Name: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td width=&#8221;100%&#8221;&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;lname&#8221; value=&#8221;$form{lname}&#8221;&gt;  $errors{lname}<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;First Name: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;fname&#8221; value=&#8221;$form{fname}&#8221;&gt;  $errors{fname}<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Phone Number: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;phone&#8221; value=&#8221;$form{phone}&#8221;&gt;<br />
(10 digits only please) $errors{phone}&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;E-mail: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;email&#8221; value=&#8221;$form{email}&#8221;&gt;  $errors{email}<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;<br />
&lt;input type=&#8221;submit&#8221; name=&#8221;Submit&#8221; value=&#8221;send&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;reset&#8221; name=&#8221;Reset&#8221; value=&#8221;reset&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>~;</p>
<p>}</p>
<p>#################################</p>
<p>#THIS SUB ROUTINE USES A SELECT STATEMENT TO DISPLAY THE CONTENTS OF THE friends TABLE<br />
sub showfriends<br />
{<br />
#START HTML TABLE<br />
print qq~<br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;iso-8859-1&#8243;?&gt;<br />
&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221; &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;<br />
&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221;&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Untitled Document&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243; /&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;table width=&#8221;50%&#8221; border=&#8221;1&#8243;&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;ID&lt;/th&gt;<br />
&lt;th&gt;Last Name&lt;/th&gt;<br />
&lt;th&gt;First Name&lt;/th&gt;<br />
&lt;th&gt;Phone Number&lt;/th&gt;<br />
&lt;th&gt;E-mail&lt;/th&gt;<br />
&lt;/tr&gt;</p>
<p>~;</p>
<p>#FORM SQL SELECT STATEMENT<br />
$select = qq~select id, lname, fname, phone, email from friends~;</p>
<p>#CONNECT TO THE MYSQL DATABASE AND CREATE A MYSQL HANDLER $dbh<br />
$dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);</p>
<p>#PREPARE MYSQL STETEMENT AND CREATE STATEMENT HANDLER $sth<br />
$sth=$dbh-&gt;prepare($select);</p>
<p>#EXECUTE SELECT STATEMENT<br />
$sth-&gt;execute();</p>
<p>#LOOP THROUGH EACH RECORD AND PRINT IN AN HTML TABLE<br />
while (@row=$sth-&gt;fetchrow_array())<br />
{<br />
print qq~<br />
&lt;tr&gt;<br />
&lt;td&gt;$row[0]&lt;/td&gt;<br />
&lt;td&gt;$row[1]&lt;/td&gt;<br />
&lt;td&gt;$row[2]&lt;/td&gt;<br />
&lt;td&gt;$row[3]&lt;/td&gt;<br />
&lt;td&gt;$row[4]&lt;/td&gt;<br />
&lt;/tr&gt;<br />
~;<br />
}<br />
#CLOSE HTML TABLE<br />
print qq~<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;</p>
<p>#CLOSE CONNECTION TO THE MYSQL DATABASE<br />
$dbh-&gt;disconnect();</p>
<p>}</p>
<p>###############################</p>
<p>#THIS SUB ROUTINE CREATES A HASH CALLED %errors THAT HAS THE SAME LIST OF KEYS AS THE %form HASH. THE VALUES OF HTE %errors HASH ARE THE ERROR MESSAGES TO BE DISPLAYED</p>
<p>sub verifyform<br />
{<br />
$missing = 0;     #INITIALIZE THE MISSING FLAG TO BE ZERO</p>
<p>foreach (keys %form)<br />
{<br />
if ($form{$_} eq &#8220;&#8221;)<br />
{<br />
$errormsg = &#8220;Please enter the data for the required field&#8221;;<br />
$missing = 1;         #IF THERE IS MISSING DATA SET THE FLAG TO 1<br />
}<br />
else<br />
{<br />
$errormsg = &#8220;&#8221;;<br />
}<br />
$errors{$_}=$errormsg;          #LOAD THE %error HASH WITH THE ERROR MESSAGE<br />
}<br />
if ($missing == 1)     #IF FLAG IS SET TO 1 THEN RESEND THE FORM AND EXIT<br />
{<br />
&amp;displayform;<br />
exit;<br />
}<br />
}</p>
<div>
<table border="0" width="80%">
<tbody>
<tr>
<td width="45%">
<div>Last Name:</div>
</td>
<td width="100%">
<div> $errors{lname}</div>
</td>
</tr>
<tr>
<td>
<div>First Name:</div>
</td>
<td>
<div> $errors{fname}</div>
</td>
</tr>
<tr>
<td>
<div>Phone Number:</div>
</td>
<td>
<div> (10 digits only please) $errors{phone}</div>
</td>
</tr>
<tr>
<td>
<div>E-mail:</div>
</td>
<td>
<div> $errors{email}</div>
</td>
</tr>
<tr>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>~;  	}  #################################  #THIS SUB ROUTINE USES A SELECT STATEMENT TO DISPLAY THE CONTENTS OF THE friends TABLE sub showfriends 	{ 	#START HTML TABLE 	print qq~ 		 		 		 		 		Untitled Document</p>
<table border="1" width="50%">
<tbody>
<tr>
<th>ID</th>
<th>Last Name</th>
<th>First Name</th>
<th>Phone Number</th>
<th>E-mail</th>
</tr>
<p>~; 	 	#FORM SQL SELECT STATEMENT 	$select = qq~select id, lname, fname, phone, email from friends~;  	#CONNECT TO THE MYSQL DATABASE AND CREATE A MYSQL HANDLER $dbh 	$dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);  	#PREPARE MYSQL STETEMENT AND CREATE STATEMENT HANDLER $sth 	$sth=$dbh-&gt;prepare($select);  	#EXECUTE SELECT STATEMENT 	$sth-&gt;execute();  	#LOOP THROUGH EACH RECORD AND PRINT IN AN HTML TABLE 	while (@row=$sth-&gt;fetchrow_array()) 		{ 		print qq~</p>
<tr>
<td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td>$row[4]</td>
</tr>
<p>~; 		} 	#CLOSE HTML TABLE 	print qq~</tbody>
</table>
<p>~;  	#CLOSE CONNECTION TO THE MYSQL DATABASE 	$dbh-&gt;disconnect();  	}  ###############################  #THIS SUB ROUTINE CREATES A HASH CALLED %errors THAT HAS THE SAME LIST OF KEYS AS THE %form HASH. THE VALUES OF HTE %errors HASH ARE THE ERROR MESSAGES TO BE DISPLAYED  sub verifyform 	{ 	$missing = 0;     #INITIALIZE THE MISSING FLAG TO BE ZERO 	 	foreach (keys %form) 		{ 		if ($form{$_} eq &#8220;&#8221;) 			{ 			$errormsg = &#8220;Please enter the data for the required field&#8221;; 			$missing = 1;         #IF THERE IS MISSING DATA SET THE FLAG TO 1 			} 		else 			{ 			$errormsg = &#8220;&#8221;; 			} 		$errors{$_}=$errormsg;	      #LOAD THE %error HASH WITH THE ERROR MESSAGE 		} 	if ($missing == 1)     #IF FLAG IS SET TO 1 THEN RESEND THE FORM AND EXIT 		{ 		&amp;displayform; 		exit; 		} 	}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=59&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/friends-mysql-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
		<item>
		<title>Friends Mysql 2</title>
		<link>http://adrienbuchwald.wordpress.com/2009/06/24/friends-mysql-2/</link>
		<comments>http://adrienbuchwald.wordpress.com/2009/06/24/friends-mysql-2/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:46:35 +0000</pubDate>
		<dc:creator>sandmanthegreat</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://adrienbuchwald.wordpress.com/?p=57</guid>
		<description><![CDATA[#!/usr/bin/perl -w #USE THE DBI (DATABSE INTERFACE) MODULE use DBI; #DECLARE VARIABLES WITH MYSQL CONNECTION DATA $db=&#8221;int420_091b02&#8243;; $user=&#8221;int420_091b02&#8243;; $passwd=&#8221;21450705&#8243;; $host=&#8221;db-mysql.zenit&#8221;; $connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;; #PRINT HTTP HEADER print &#8220;Content-Type:text/html\n\n&#8221;; #DISPLAY THE FORM THE FIRST TIME THE SCRIPT IS RUN if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;) { &#38;showfriends; &#38;displayform(); exit; } #ELSE PROCESS THE FORM AND INSERT INTO THE DATABASE else [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=57&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/perl -w</p>
<p>#USE THE DBI (DATABSE INTERFACE) MODULE<br />
use DBI;</p>
<p>#DECLARE VARIABLES WITH MYSQL CONNECTION DATA<br />
$db=&#8221;int420_091b02&#8243;;<br />
$user=&#8221;int420_091b02&#8243;;</p>
<p>$passwd=&#8221;21450705&#8243;;<br />
$host=&#8221;db-mysql.zenit&#8221;;<br />
$connectionInfo=&#8221;dbi:mysql:$db;$host&#8221;;</p>
<p>#PRINT HTTP HEADER<br />
print &#8220;Content-Type:text/html\n\n&#8221;;</p>
<p>#DISPLAY THE FORM THE FIRST TIME THE SCRIPT IS RUN<br />
if ($ENV{REQUEST_METHOD} eq &#8220;GET&#8221;)<br />
{<br />
&amp;showfriends;<br />
&amp;displayform();<br />
exit;<br />
}<br />
#ELSE PROCESS THE FORM AND INSERT INTO THE DATABASE<br />
else<br />
{<br />
&amp;parseform();<br />
&amp;insertfriend();<br />
exit;<br />
}</p>
<p>######################################<br />
######      SUB ROUTINES        ######<br />
######################################</p>
<p>#STANDARD FORM PARSING USING &#8220;POST&#8221; METHOD<br />
sub parseform<br />
{<br />
read(STDIN, $buffer, $ENV{&#8216;CONTENT_LENGTH&#8217;});</p>
<p>#BREAK THEDATA UP BY AMPERSANDS &amp;&amp;&amp;&amp;; AND STORE IT IN AN ARRAY<br />
@pairs = split(/&amp;/, $buffer);</p>
<p>#START A LOOP TO PROCESS FORM DATA<br />
foreach $pair (@pairs) {<br />
($key, $value) = split(/=/, $pair);<br />
$value =~ tr/+/ /;<br />
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&#8220;C&#8221;, hex($1))/eg;<br />
$form{$key} = $value;<br />
}<br />
}</p>
<p>#################################</p>
<p>#INSERTING DATA INTO THE friends TABLE<br />
sub insertfriend<br />
{<br />
#FORM SQL INSERT STATEMENT<br />
$insert = qq~insert friends (lname, fname, phone, email) values (&#8216;$form{lname}&#8217;, &#8216;$form{fname}&#8217;, &#8216;$form{phone}&#8217;, &#8216;$form{email}&#8217;)~;</p>
<p>#CONNECT TO THE MYSQL DATABASE AND CREATE A DATABASE HANDLER $dbh<br />
$dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);</p>
<p>#PREPARE THE MYSQL INSERT STATEMENT AND CREATE A STATEMENT HANDLER $sth<br />
$sth=$dbh-&gt;prepare($insert);</p>
<p>#EXECUTE THE STATEMENT HANDLER AND TEST FOR SUCCESS<br />
if ($sth-&gt;execute())<br />
{<br />
&amp;showfriends;<br />
&amp;displaysuccess;<br />
}<br />
else<br />
{<br />
&amp;displayfail;<br />
}</p>
<p>#DISCONNECT DATABASE<br />
$dbh-&gt;disconnect();</p>
<p>}</p>
<p>##############################</p>
<p>sub displaysuccess<br />
{<br />
print qq~<br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;MY FRIENDS&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243;&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
RECORD ADDED!!!!!!!!<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;</p>
<p>}</p>
<p>##############################</p>
<p>sub displayfail<br />
{<br />
print qq~<br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;MY FRIENDS&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243;&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
Record &lt;b&gt;NOT&lt;/b&gt; Added!!!!!!!!<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;</p>
<p>}</p>
<p>##############################</p>
<p>sub displayform<br />
{<br />
print qq~<br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;My Friends&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243;&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;div align=&#8221;center&#8221;&gt;<br />
&lt;form name=&#8221;form1&#8243; method=&#8221;post&#8221; action=&#8221;friends2-mysql.cgi&#8221;&gt;<br />
&lt;table width=&#8221;50%&#8221; border=&#8221;0&#8243;&gt;<br />
&lt;tr&gt;<br />
&lt;td width=&#8221;45%&#8221;&gt;&lt;div align=&#8221;right&#8221;&gt;Last Name: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td width=&#8221;55%&#8221;&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;lname&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;First Name: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;fname&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;Phone Number: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;phone&#8221;&gt;<br />
(10 digits only please) &lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;E-mail: &lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;email&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;div align=&#8221;right&#8221;&gt;<br />
&lt;input type=&#8221;submit&#8221; name=&#8221;Submit&#8221; value=&#8221;send&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;div align=&#8221;left&#8221;&gt;<br />
&lt;input type=&#8221;reset&#8221; name=&#8221;Reset&#8221; value=&#8221;reset&#8221;&gt;<br />
&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>~;</p>
<p>}</p>
<p>#################################</p>
<p>sub showfriends<br />
{<br />
#START HTML TABLE<br />
print qq~<br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;iso-8859-1&#8243;?&gt;<br />
&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221; &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;<br />
&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221;&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Untitled Document&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243; /&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;table width=&#8221;50%&#8221; border=&#8221;1&#8243;&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;ID&lt;/th&gt;<br />
&lt;th&gt;Last Name&lt;/th&gt;<br />
&lt;th&gt;First Name&lt;/th&gt;<br />
&lt;th&gt;Phone Number&lt;/th&gt;<br />
&lt;th&gt;E-mail&lt;/th&gt;<br />
&lt;/tr&gt;</p>
<p>~;</p>
<p>#FORM SQL SELECT STATEMENT<br />
$select = qq~select id, lname, fname, phone, email from friends~;</p>
<p>#CONNECT TO THE MYSQL DATABASE AND CREATE A MYSQL HANDLER $dbh<br />
$dbh=DBI-&gt;connect($connectionInfo,$user,$passwd);</p>
<p>#PREPARE MYSQL STETEMENT AND CREATE STATEMENT HANDLER $sth<br />
$sth=$dbh-&gt;prepare($select);</p>
<p>#EXECUTE SELECT STATEMENT<br />
$sth-&gt;execute();</p>
<p>#LOOP THROUGH EACH RECORD AND PRINT IN AN HTML TABLE<br />
while (@row=$sth-&gt;fetchrow_array())<br />
{<br />
print qq~<br />
&lt;tr&gt;<br />
&lt;td&gt;$row[0]&lt;/td&gt;<br />
&lt;td&gt;$row[1]&lt;/td&gt;<br />
&lt;td&gt;$row[2]&lt;/td&gt;<br />
&lt;td&gt;$row[3]&lt;/td&gt;<br />
&lt;td&gt;$row[4]&lt;/td&gt;<br />
&lt;/tr&gt;<br />
~;<br />
}<br />
#CLOSE HTML TABLE<br />
print qq~<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
~;</p>
<p>#CLOSE CONNECTION TO THE MYSQL DATABASE<br />
$dbh-&gt;disconnect();</p>
<p>}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adrienbuchwald.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adrienbuchwald.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adrienbuchwald.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adrienbuchwald.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adrienbuchwald.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adrienbuchwald.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adrienbuchwald.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adrienbuchwald.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adrienbuchwald.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adrienbuchwald.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adrienbuchwald.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adrienbuchwald.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adrienbuchwald.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adrienbuchwald.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adrienbuchwald.wordpress.com&amp;blog=6890942&amp;post=57&amp;subd=adrienbuchwald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adrienbuchwald.wordpress.com/2009/06/24/friends-mysql-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c049c7e85bf5ea06c0819e4b98ba662?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sandmanthegreat</media:title>
		</media:content>
	</item>
	</channel>
</rss>
