Jump to content

Help with the coding for contact form with attachment


spanner90

Recommended Posts

HI

I 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:
<?php
error_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

Link to comment
Share on other sites

 

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

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.