Forum Moderators: coopster
Can anyone look over this and tell me why I'm getting that error or better yet, how to fix it. Thanks in advance.
<?php
function createForm() { // grab variables from posted form, if any exist
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$comments = $_POST['comments'];
// build the form, populate the fields if needed
echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="POST" enctype="multipart/form-data">
<p>FULL NAME:<br />
<input name="name" type="text" id="name" size="40" value="' . $name . '"></p>
<p>TELEPHONE:<br />
<input name="phone" type="text" id="phone" size="40" value="' . $phone . '"></p>
<p>EMAIL ADDRESS:<br />
<input name="email" type="text" id="email" size="40" value="' . $email . '"></p>
<p>IMAGE (*optional):<br />
<input type="file" name="attachment"></p>
<p>QUESTION/COMMENT:<br />
<textarea name="comments" id="comments" rows="5" style="width:100%;">' . $comments . '</textarea></p>
<p><input type="submit" name="submit" value="Submit"> <input type="reset" name="reset" value="Clear"></p>
</form>';
} // end function createForm()
// if submit has been pressed
if(isset($_POST['submit'])) {
echo '<ul>';
// make sure all required fields are filled in and display errors if empty
if(empty($_POST['name'])) {
$field1 = "0";
echo '<li class="red strong">Name is required.</li>';
} else {
$field1 = "1"; }
if(empty($_POST['phone'])) {
$field2 = "0";
echo '<li class="red strong">Phone Number is required.</li>';
} else {
$field2 = "1"; }
if(empty($_POST['email'])) {
$field3 = "0";
echo '<li class="red strong">Email Address is required.</li>';
} else {
$field3 = "1";}
if(empty($_POST['comments'])) {
$field4 = "0";
echo '<li class="red strong">Comments are required.</li>';
} else {
$field4 = "1"; }
echo '</ul>';
// if any required fields are missing
if(($field1=="0") ¦¦ ($field2=="0") ¦¦ ($field3=="0") ¦¦ ($field4=="0")) {
createForm();
}
// if all required fields are there
if(($field1=="1") && ($field2=="1") && ($field3=="1") && ($field4=="1")) {
// recipients email address
$recipient = 'me@site.com';
// All form fields are automatically passed to the PHP script through the array $_POST
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$comments = $_POST['comments'];
$attachment = $_POST['attachment'];
// format the message for mail
$comments = stripslashes($comments);
$now = date('l F dS, Y g:i:s a');
$message = "The following is a message from the website sent on $now.\n\nFrom: $name\nEmail: $email\nPhone Number: $phone\n\n\n$comments";
// add email subject and headers
$subject = "Email from website";
//Gather file data and other things
$tmp = $_FILES['attachment']['tmp_name'];
$sep = md5(time());
$filename = $_FILES['attachment']['name'];
$filedata = file_get_contents($tmp); //Get file contents
$fdata = chunk_split(base64_encode($filedata)); //Encode data into text form;
//Determine mime type
$ext = explode('.', $filename);
$ext = $ext[1];
if($ext == "JPG" ¦¦ $ext == "jpg" ¦¦ $ext == "JPEG" ¦¦ $ext == "jpeg") {
$mime_type = "image/jpeg";
}
elseif($ext == "gif" ¦¦ $ext == "GIF") {
$mime_type = "image/gif";
}
else {
exit("Error: Wrong file type!");
}
//Begin the headers
$headers = "From: \"".$name."\" <{".$email."}>
MIME-Version: 1.0
Content-Type: Multipart/Mixed;
boundary=\"".$sep."\"
charset=\"iso-8859-1\"
Content-Transfer-Encoding: 7bit
--$sep
Content-Type: ".$mime_type.";
name=\"".$filename."\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename=\"".$filename."\"
$fdata
--$sep";
// sends the mail
mail($recipient,$subject,$message,$headers);
echo "<p class=\"strong bigger red\">Your email has been sent!</p>";
echo "<p>Thank you for contacting us. We will do our best to reply to you as soon as is possible. For the quickest service, feel free to give us a phone call.</p>";
echo "<p><a href=\"contact.php\">Send another message »</a></p>";
}
} else {
createForm();
}
?>
The 'meesage' is sent as part of the email headers as $body
The file attachment is opened, read and encoded by php.
<?
$attachment = $_FILES['attachment']['tmp_name'];
$attachment_name = $_FILES['attachment']['name'];
if (is_uploaded_file($attachment)) { //Do we have a file uploaded?
$fp = fopen($attachment, "rb"); //Open it
$data = fread($fp, filesize($attachment)); //Read it
$data = chunk_split(base64_encode($data)); //Chunk it up and encode it as base64 so it can emailed
fclose($fp);
//Let's start our headers
$headers = "From: $name<" . $_POST['email'] . ">\n";
$headers .= "Reply-To: <" . $recipient . ">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n";
$headers .= "X-Sender: $name<" . $_POST['email'] . ">\n";
$headers .= "X-Mailer: PHP Mail\n";
$headers .= "X-Priority: 3\n"; //1 = Urgent, 3 = Normal
$headers .= "Return-Path: <" . $_POST['email'] . ">\n";
$headers .= "This is a multi-part message in MIME format.\n";
$headers .= "------=MIME_BOUNDRY_main_message \n";
$headers .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_message_parts\"\n";
$message = "------=MIME_BOUNDRY_message_parts\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "\n";
/* Add our message, in this case it's plain text. You could also add HTML by changing the Content-Type to text/html */
$message .= "$body\n";
$message .= "\n";
$message .= "------=MIME_BOUNDRY_message_parts--\n";
$message .= "\n";
$message .= "------=MIME_BOUNDRY_main_message\n";
$message .= "Content-Type: application/octet-stream;\n\tname=\"" . $attachment_name . "\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment;\n\tfilename=\"" . $attachment_name . "\"\n\n";
$message .= $data; //The base64 encoded message
$message .= "\n";
$message .= "------=MIME_BOUNDRY_main_message--\n";
// send the message
mail($recipient, $subject, $message, $headers);
?>