spanner90 Posted January 16, 2014 Share Posted January 16, 2014 HII am desperate for some help with my coding I have spent hours trying to work it out and now completely stuck and need it to go live asap. I am new to php and have been asked to create a contact form with a file attachment.The form is sending to the email address but i am getting no information from the fields and no attachement. The HTML for the form is:<form action="contact.php" method="post" name="mainform" enctype="multipart/form-data"><table width="800" border="0" align="center" cellpadding="5" cellspacing="5"><tr><th width="186" align="center" valign="middle">Name</th><td width="739"><input name="fieldFormName" type="text"></td></tr><tr><tr><th valign="middle">Email</th><td><input name="fieldFormEmail" type="text"></td></tr><tr><th valign="middle">phone</th><td><input name="fieldSubject" type="text" id="fieldSubject"></td></tr><tr><th valign="middle">Covering Letter</th><td><textarea name="fieldDescription" cols="20" rows="6" id="fieldDescription"></textarea></td></tr><tr><th height="51">Attach Your File:</th><td><input name="attachment" type="file"></td></tr><tr><td colspan="2" style="text-align:center;"><input type="submit" class="submit" id="submit" value="Send message" /> <input type="reset" name="Reset" value="Reset"></td></tr></table></form>And The Php is in a seperate file and is:<?phperror_reporting(E_ALL);ini_set('display_errors','1');if(!isset($_POST['submit'])) {// 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|me|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'];$phone = $_POST['phone'];$covering_letter = $_POST['covering_letter'];$submit = $_POST['submit'];if(empty($name)) {echo '<div class="error_message">Attention! You must enter your name.</div>';} elseif(empty($email)) {echo '<div class="error_message">Attention! Please enter a valid email address.</div>';} elseif(!isEmail($email)) {echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';} elseif(empty($covering_letter)) {echo '<div class="error_message">Attention! Please enter your message.</div>';} elseif(!isset($submit) || empty($submit)) {echo '<div class="error_message">Attention! Please enter the verification number.</div>';} elseif(trim($submit) != '4') {echo '<div class="error_message">Attention! The verification number you entered is incorrect.</div>';}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 = "hello@yourdomain.com";$address = "stewart@bigscaryvc.co.uk";// 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 = "You've been contacted by $name.";// 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, the additional message is as follows.\r\n";$e_content = $covering_letter . '\r\n';$e_reply = "You can contact $name via email, $email or via phone $phone";$msg = wordwrap( $e_body . $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: multipart/form-data; 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 "<fieldset>";echo "<div id='success_page'>";echo "<h4>Email Sent Successfully</h4>";echo "<p>Thank you $name, your CV has been submitted to us.</p>";echo "</div>";echo "</fieldset>";} else {echo 'ERROR!';}}Thankyou for any help you can give me Quote Link to comment https://forums.phpfreaks.com/topic/285408-help-with-the-coding-for-contact-form-with-attachment/ Share on other sites More sharing options...
Ch0cu3r Posted January 16, 2014 Share Posted January 16, 2014 i am getting no information from the fields First of all the form field names do not match to the ones you are trying to retrieve from $_POST $name = $_POST['name']; // <-- should be $_POST['fieldFormName'] $email = $_POST['email']; // <-- should be $_POST['fieldFormEmail'] $phone = $_POST['phone']; // <-- should be $_POST['fieldSubject'] $covering_letter = $_POST['covering_letter']; // <-- should be $_POST['fieldDescription'] and no attachement. Because you do not have any code to retrieve the uploaded file. Have a read of how PHP handles file uploads For the uploaded file to be attached to the email you need to set the appropriate attachment headers. This tutorial gives an example of how to do thise Quote Link to comment https://forums.phpfreaks.com/topic/285408-help-with-the-coding-for-contact-form-with-attachment/#findComment-1465400 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.