Help with Form Submission Script


I’m struggling with what seems like a fairly easy task. I need to add a radio form field named “about” to an existing PHP script and the value is not being displayed in the email. Here is the PHP code:


<?php if(!$_POST) exit; // Email address verification, do not edit. function isEmail($email) { return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email)); } if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n"); $name = $_POST['name']; $email = $_POST['email']; $subject = $_POST['subject']; $about = $_POST['about']; $comments = $_POST['comments']; if(trim($name) == '') { echo '
Please enter your name.
'; exit(); } else if(trim($email) == '') { echo '
Please enter a valid email address.
'; exit(); } else if(!isEmail($email)) { echo '
You have entered an invalid e-mail address, please try again.
'; exit(); } if(trim($subject) == '') { echo '
Please enter a subject.
'; exit(); } else if(trim($comments) == '') { echo '
Please enter a comment or message.
'; exit(); } if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); } // Configuration option. // Enter the email address that you want to emails to be sent to. // Example $address = "[email protected]"; $address = "[email protected]"; // Configuration option. // i.e. The standard subject will appear as, "You've been contacted by John Doe." // Example, $e_subject = '$name . ' has contacted you via Your Website.'; $e_subject = "WEBSITE CONTACT -- $subject"; // Configuration option. // You can change this if you feel that you need to. // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here. $e_body = "You have been contacted by $name with regards to $subject" . PHP_EOL . PHP_EOL; $e_regards = "$about" . PHP_EOL . PHP_EOL; $e_content = "\"$comments\"" . PHP_EOL . PHP_EOL; $msg = wordwrap( $e_body . $e_regards . $e_content . $e_reply, 70 ); $headers = "From: $email" . PHP_EOL; $headers .= "Reply-To: $email" . PHP_EOL; $headers .= "MIME-Version: 1.0" . PHP_EOL; $headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL; $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL; if(mail($address, $e_subject, $msg, $headers)) { // Email has sent successfully, echo a success page. echo ""; echo "
"; echo "

Message Sent Successfully.

"; echo "

Thank you $name, your message has been submitted to us. We will respond within 24 hours.

"; echo "
"; echo ""; } else { echo 'ERROR!'; } [/php] Here is the form code: [code] Name * Email * Subject *

Is this about:   PPR Products    Other Products

Your Message * [/code] If I change the variable "$about" to a value, instead of "$_POST['about']", the resulting email displays the value correctly. It seems like there is something wrong with my HTML but have also tried a simple text field instead of the radio buttons and that doesn't work either. Any help would definitely be appreciated!!! Thanks, Mike.

Works fine here, this is the output of the form:

[php]array(6) {
‘name’ =>
string(4) “name”
‘email’ =>
string(5) “Email”
‘subject’ =>
string(7) “Subject”
‘about’ =>
string(14) “Other Products”
‘comments’ =>
string(12) “Your Message”
‘send’ =>
string(12) “Send Message”

Thank you so much for the prompt reply. It sure seemed like my crude attempt at coding was correct but it’s definitely not producing the desired results.

Here is the body of the email that is being received:

You have been contacted by John Doe with regards to Subject Test


It just seems like the HTML is not passing the value for “about” to the script, but I’ve tried almost everything imaginable, other than replacing the PHP script. I’m totally lost on this one.

As you can see from my code your form does submit the about text, so the error must be elsewhere. Are you sure the php posted is the one you’re using?

Thanks again for the help.

Yes, I can see the output from the script which makes it even more confusing. It leads me straight back to a problem with the HTML but there is nothing I’ve tried that moves me forward.

I’ve checked the files on the server dozens of times to make sure they’re being updated corrected and have made other small test changes to make sure I’m not losing my mind.

If you’re available for any private consulting work, I’d gladly pay for your services. I’ve lost hours on this problem and the boss is about to strangle me.

Take Care,

With your prompting, I have found the culprit.

I loaded an old CGI form checking script as the processor and it output the results of the form with the same issue, no “about” field listed. So the value was not being passed to the PHP. I finally found a Java script that was being used to display/format form errors and it required an entry for each field in the form. Made the change and everything is A-OK now. Unbelievable I didn’t think of that before.

Thank you again for the help and pushing me to quadruple-check everything. Really appreciate all of your time!

Take Care,

Sponsor our Newsletter | Privacy Policy | Terms of Service