Hi, Tuesday, April 20, 2004, 11:10:24 AM, you wrote: JWH> Does anyone know of a script that'll receive the results of a form, JWH> parse the original form and substitute the user supplied data in for the JWH> form elements and then send an HTML email of the "form"?
JWH> For a static form, this obviously isn't too hard, but it'd be ideal if JWH> the program was dynamic enough to work with any kind of form. JWH> Let me know if you've heard of anything. If not... well, I guess it's JWH> writin' time! ;) JWH> -- JWH> ---John Holmes... JWH> Amazon Wishlist: www.amazon.com/o/registry/3BEXC84AB3A5E/ JWH> php|architect: The Magazine for PHP Professionals – www.phparch.com Here is a class I use with my template system but it is easy to modify it. //class class doFormsClass { var $text = ''; var $vars = array(); var $emailto = ''; function doFormsClass(){ if($this->emailto = req::request('EmailTo',false)){ $today = Date("d/m/Y H:i:s"); $this->text = "Form submitted on $today\n\n"; //$text holds the email message $this->vars['vars']['header'] = 'Form submitted on '.$today; $x = 0; while (list($k, $v)=each($_POST)) { //loop through all the variables sent switch($k){ //and break on keywords case("EmailTo"): $this->vars['vars']['mailto'] = $v; break; //these we don't want in the email case 'Quiet': case 'PHPSESSID': case 'Email2': case 'FormBackground': case 'FormBottomMessage': case 'FormTopMessage': case 'FormSubject': case 'FormRedirect': case 'submit': case 'MAIL': break; default: //not a keyword $k = ereg_replace("_"," ",$k); //get rid of _ and replace with a space if($v == "BR"){ //if BR add a carriage return,used for making blank line $this->vars['blocks']['submit'][$x]['ifs']['break'] = ' '; $this->text .= "\n"; }else{ $this->vars['blocks']['submit'][$x]['vars']['name'] = $k; $this->vars['blocks']['submit'][$x]['vars']['value'] = $v; $this->text .= "$k : $v\n"; //add the variable name and value to email } $x++; break; } } } if(isset($_POST['FormSubject'])){ $subject = $_POST['FormSubject']; }else{ $subject = "Form submitted $today"; } $this->vars['vars']['subject'] = $subject; if(isset($_POST['Email']) || isset($_POST['email'])){ if(isset($_POST['Email'])): $tail = "FROM: ".$_POST['Email']; else: $tail = "FROM: ".$_POST['email']; endif; } else{ $tail = "FROM: Unknown"; } mail($_POST['EmailTo'],$subject,$this->text,$tail); //send the email if(isset($_POST['Email2'])){ mail($_POST['Email2'],$subject,$text,$tail); //send CC if needed } } function getVars(){ return $this->vars; } } usage if($form_submitted){ $df = new doFormsClass(); $vars = $df->getVars(); print_r($vars); // use for the template } Sample form <form method="post" action="<? echo $_SERVER['PHP_SELF']?>"> <!-- email to receive form --> <input type="hidden" name="EmailTo" value="email to get form"> <!-- subject --> <input type="hidden" name="FormSubject" value="Web Form Submitted <?php echo date('d/m/Y h:i')?>"> <!-- normal input box (underscores get changed to spaces in email)--> Full Name: <input type="text" name="Full_Name" size="30"> <!-- add a blank line to email --> <input type="hidden" name="break1" value="BR"> <!-- call this Email and it is used in the reply_to bit --> Email: <input type="text" name="Email" size="30"> <input type="submit" name="submit" value="Submit"> </form> -- regards, Tom -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php