Visit the Official PHP Website |
PHP ProgrammingBy James N HitzThe CodeThe code that accepts and processes the form (/php-bin/mail_lst.php) is as follows: <html><head><title>PHP Mailing List</title></head> <body> <h2>PHP Mailing List</h2> <?php $datafile = '/www/home/php-bin/list.file'; $formTop = "<form action=\"http://localhost/php-bin/mail_list.php\" method=POST>"; $formBot = "<br><input type='reset' value='clear'> <input type='submit' value='Ok'>"; if(!preg_match("/^[\w_\.]+\@[\w_\.]+\.(\w){2,3}$/",$mail)){ $outString = "Email Address: <input type='text' name='mail'><br>"; } else { $formOk = "<input type=\"hidden\" name=\"mail\" value=\"$mail\">"; } if($action == 1){ //if we are subscribing... if(!preg_match("/^\w+$/", trim($fName))){ $outString .= "First Name: <input type='text' name='fName'><br>"; }else{ $formOk .= "<input type=\"hidden\" name=\"fName\" value=\"$fName\">"; } if(!preg_match("/^\w+$/", trim($lName))){ $outString .= "Last Name: <input type='text' name='lName'><br>"; } else { $formOk .= "<input type=\"hidden\" name=\"lName\" value=\"$lName\">"; } if(strlen($outString) > 0){ print "<h2>Subscription Error</h2>". "<p>Please supply valid information in the relevant field(s)". " below. This is information is required:</p>". $formTop.$outString.$formOk. "<input type='hidden' value=1 name='action'>" . $formBot; exit(); } if(!$dfHandle = fopen($datafile,'a+')){ print "Internal Error. Cannot open data file"; exit(); } //read entire file into array (this has its dis-advantages) $allFile = file($datafile); reset($allFile); //rewind array pointer //search if email address already exists in list while(list($linenum,$line) = each($allFile)){ $items = preg_split("/\|/",$line); if( preg_match("/^$mail$/", $items[2]) ){ print "<p>Cannot add <b>$items[2]</b>. ". "It already exists in the mailing list."; exit(); } } unset($allFile); //release variable - save RAM //email does not exist. Add it and thank user $writeString = "$fName|$lName|$mail\n"; fwrite($dfHandle,$writeString); fclose($dfHandle); print "<p>Thank you <b>$lName</b>. ". "Your address <b>$mail</b> has been added". " to the PHP mailing list"; } elseif($action ==2) { //We are unsubsribing if(strlen($outString >0)){ print "<h3>UnSubscription Error</h3>". "<p>The specified email address is invalid. ". "Please re-enter:" .$formTop.$outString. "<input type='hidden' value=2 name='action'>" . $formBot; exit(); } $tempfile = "./temp.file"; $dfHandle = fopen($datafile,'r') or die("Error. Cannot open data file."); $tmp = fopen($tempfile, 'w') or die("Cannot create or open temp file"); //read entire file into array $allFile = file($datafile); while(list($linenum,$line) = each($allFile)){ $items = preg_split("/\|/",$line); if( preg_match("/^$mail$/", $items[2]) ){ $found = 1; } else { fwrite($tmp,"$line"); } } fclose($tmp); fclose($dfHandle); unlink($datafile) or die("Cannot erase datafile"); copy($tempfile,$datafile); unlink($tempfile) or die("Cannot erase tempfile"); if($found){ print "Your email address <b>$mail</b> has been successfully". " removed from the PHP mailing List"; }else { print "The specified email address <b>$mail</b> does not exist ". "in the database. Please ensure that you typed it correctly"; } } elseif($action == 3){ $dfHandle = fopen($datafile,'r') or die("Internal Error. Cannot open data file"); echo "<h3>Current Subscriptions to the PHP Mailing List</h3>"; echo "<table width=\"100%\" bgcolor=\"#FFFFCC\" border ". "cellspacing='0' cellpadding='3'>\n". "<tr bgcolor='#FFCC99'><td>First Name</td><td>Last Name</td>". "<td>Email Address</td></tr>"; $allFile = file($datafile); while(list($linenum, $line)= each($allFile)){ $items = preg_split("/\|/",$line); print "<tr><td>$items[0]</td><td>$items[1]</td><td>$items[2]</td></tr>\n"; } echo "</table>"; } ?> </body></html> This code is VERY lengthy. The longest so far. We'll explain it slowly and patiently until we are through with it. You may need to read and re-read the explanations and hopefully things will be Aw-Okey! Go! |
JamHitz Productions