I found a simple, free email contact form online. It doesn't do exactly what I want and I was hoping I could get some help from the experts. I would like to know a couple of things. First, I would like when the user clicks 'submit' that an email is sent to me with the filled in information. Currently, that doesn't happen; an email is sent to me upon form s开发者_开发百科ubmission only when my email address is entered into the 'email' field. I would also like to know how to add another variable to catch, say... 'job title'. I don't need to worry about captcha catching spam, and I'm not going to mess with anymore form validation than already exists in the script I found. Any help would be awesome, guys!
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "myemail@email.com";
$email_subject = "KARRN poster";
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$comments = $_POST['comments']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "First Name: ".clean_string($first_name)."\n";
$email_message .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telephone: ".clean_string($telephone)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- include your own success html here -->
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>
HTML
<form name="contactform" method="post" action="send_form_email.php">
<table width="450px">
</tr>
<tr>
<td valign="top">
<label for="first_name">First Name *</label>
</td>
<td valign="top">
<input type="text" name="first_name" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top"">
<label for="last_name">Last Name *</label>
</td>
<td valign="top">
<input type="text" name="last_name" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="email">Email Address *</label>
</td>
<td valign="top">
<input type="text" name="email" maxlength="80" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="telephone">Telephone Number</label>
</td>
<td valign="top">
<input type="text" name="telephone" maxlength="30" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="comments">Comments *</label>
</td>
<td valign="top">
<textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<input type="submit" value="Submit"> <a href="#">Email Form</a>
</td>
</tr>
</table>
</form>
You can add another field simply by adding it into the form (e.g. <input type="text" name="job-title" />
).
You can retreive the value entered into that field in the PHP script with $_POST['job-title']
.
The script should send an email to whatever email address is assigned to the $email_to
variable.
See the line that says mail($email_to, $email_subject, $email_message, $headers);
? You can duplicate that and hardcode your email address and that will ensure you always receive an email when someone submits the form. If you want to change the message contained within, simply create a new variable (say $email_message2
and pass that to the new call to mail()
).
As for adding the job_title field, you just need to do something like this: $jobTitle = $_POST['job_title']
. You can then append that variable to the email message. On the form you would add <input type="text" name="job_title" />
. Look for other instances of $_POST['SOMETHING']
and make sure to add appropriate code for this new field (this is for validation).
If you want it to be able to submit without an email address you should stop requiring emails being sent with this line
if(isset($_POST['email']))
Note that you will have to set a blank value to $email_from later on, if $_POST['email
]
wasn't set, so that you don't get a Notice from PHP on this line $email_from = $_POST['email']; // required
To add job title, just add an <input>
on the form, and access it via post like the other posted variables. You can require it by adding it to the line that validates the other POSTs.
By the way, if your form is public I highly reccomend putting a captcha on it. Spammers aren't your only concern, you can also be email-bombed by a malicious person. This happened to me so I always recommend a captcha.
Just use elformo.com and be done with it!
精彩评论