Posted June 15 '09 at 09:42 AM
Posts: 21
Hello, I am making a contact form for my website with a submit button where a form data is sent to you through email, and it also generates a message "Thank you for your interest. We'll respond to you shortly" after the "submit" button is clicked.
For the php script for submit button, I took help from Elizabeth Castro's book "HTML, XHTML & CSS", but it is not generating the desired output, instead the script page opens on clicking submit. Let me mention here that I don't know anything about php/javascript. Following are the html codes for the contact form, and php code for submit button:
HTML:
<div id="form">
<form action="emailform.php" method="post">
<p class="legend">Personal Information</p>
<fieldset id="personal">
<label>Name:</label><input type="text" name="name" size="30" maxlength="40" /> <br />
<label>City & Country:</label><input type="text" name="city & country" size="30" /> <br />
<label>Phone:</label><input type="text" name="phone" size="30" /> <br />
<label>Email Address:</label><input type="text" name="email address" size="30" maxlength="40" /><br />
</fieldset>
<p class="legend">Subject</p>
<fieldset id="choices">
<p id="subject"><label>Tell us what your query is about:</label>
<select name="subject" >
<option value="Product Inquiry">Product Inquiry</option>
<option value="Order Inquiry">Order Inquiry</option>
<option value="Shipping Inquiry">Delivery Inquiry</option>
<option value="General Inquiry">General Inquiry</option>
</select>
</p>
</fieldset>
<p class="legend">Your question or message here</p>
<fieldset id="questions">
<textarea name="comments" rows="3" cols="40">Yor questions or message here</textarea>
</fieldset>
<p id="buttons">
<input type="submit" name="submit" value="Submit" />
</p>
</form>
</div>
[b]PHP from Elizabeth Castro's website:[/b]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Emailing Form Data</title>
<style type="text/css">
code {color:#F00C4D;font-weight:bold;font-size:1.2em}
i {color: #6D0CF0}
th, td {padding:.1em;border:1px solid blue;text-align:left}
</style>
</head>
<body>
<?php
//This is a very simple PHP script that outputs the name of each bit of information (that
//corresponds to the <code>name</code> attribute for that field) along with the value that was
//sent with it right in the browser window, and then sends it all to an email address (once you've
//added it to the script).
if (empty($_POST)) {
print "<p>No data was submitted.</p>";
print "</body></html>";
exit();
}
//Creates function that removes magic escaping, if it's been applied, from values and then
removes extra newlines and returns to foil spammers. Thanks Larry Ullman!
function clear_user_input($value) {
if (get_magic_quotes_gpc()) $value=stripslashes($value);
$value= str_replace( "\n", '', trim($value));
$value= str_replace( "\r", '', $value);
return $value;
}
if ($_POST['comments'] == 'your questions or comments here') $_POST['comments'] = '';
//Create body of message by cleaning each field and then appending each name and value to it
$body ="Here is the data that was submitted:\n";
foreach ($_POST as $key => $value) {
$key = clear_user_input($key);
$value = clear_user_input($value);
if ($key=='extras') {
if (is_array($_POST['extras']) ){
$body .= "$key: ";
$counter =1;
foreach ($_POST['extras'] as $value) {
//Add comma and space until last element
if (sizeof($_POST['extras']) == $counter) {
$body .= "$value\n";
break;}
else {
$body .= "$value, ";
$counter += 1;
}
}
} else {
$body .= "$key: $value\n";
}
} else {
$body .= "$key: $value\n";
}
}
extract($_POST);
//removes newlines and returns from $email and $name so they can't smuggle extra email addresses for spammers
$email = clear_user_input($email);
$name = clear_user_input($name);
//Create header that puts email in From box along with name in parentheses and sends bcc to alternate address
$from='From: '. $email . "(" . $name . ")" . "\r\n" . 'Bcc: [email="yourmail@yourdomain.com"]yourmail@yourdomain.com[/email]' . "\r\n";
//Creates intelligible subject line that also shows me where it came from
$subject = 'Query from Web Site';
//Sends mail to me, with elements created above
mail ('youremail@yourdomain.com', $subject, $body, $from);
?>
<p>Thanks for your interest! We'll respond to you shortly.</p>
</body>
</html>
-----------------------------------
If anybody could please help me with this php code and submit button to work properly, I'll be very grateful. Thanks!