Reputation: 33
Hi I've previously used this very simple php contact script with success though when I've tried implementing it on a new HTML page with the form won't submit. Can anyone see any obvious errors? Any help would be much appreciated
Here is the html of the form:
<div id="formContainer">
<form action="form.php" method="post" id="contactForm">
<fieldset>
<legend>Your details</legend>
<label for="name">Name *</label>
<input type="text" id="name">
<label for="email">Email *</label>
<input type="email" id="email">
<label for="tel">Telephone</label>
<input type="tel" id="tel">
</fieldset>
<fieldset>
<legend>Tutoring</legend>
<label for="type">Type of lesson</label>
<select name="type" id="type">
<option>Individual</option>
<option>Group</option>
</select>
<label for="subject">Subject</label>
<input name="subject" list="subjects" id="subject">
<datalist id="subjects">
<option>English</option>
<option>Biology</option>
<option>Geography</option>
</datalist>
<label for="level">Your level</label>
<select name="level" id="level">
<option>Beginner</option>
<option>GCSE</option>
<option>A-Level</option>
<option>University</option>
</select>
<label for="hours">Hours/week</label>
<input type="number" id="hours">
<label for="info">Additional Information</label>
<textarea name="info" id="info" rows="10" cols="6"></textarea>
</fieldset>
<input type="submit" name="submit" value="Send" id="sendButton">
<input type="hidden" name="submit_check" value="1" />
</form>
</div>
And here is the simple php script:
<?php
if ($_POST["email"]<>'') {
$ToEmail = '[email protected]';
$EmailSubject = 'Site contact form ';
$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Name: ".$_POST["name"]."<br>";
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>";
$MESSAGE_BODY = "Telephone: ".$_POST["tel"]."<br>";
$MESSAGE_BODY = "Type: ".$_POST["type"]."<br>";
$MESSAGE_BODY = "Subject: ".$_POST["subject"]."<br>";
$MESSAGE_BODY = "Level: ".$_POST["level"]."<br>";
$MESSAGE_BODY = "Hours required: ".$_POST["hours"]."<br>";
$MESSAGE_BODY .= "Additional information: ".nl2br($_POST["info"])."<br>";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
?>
<html>
<h3>Thanks for your email</h3>
<h4>I'll get back to you as soon as possible</h4>
<a href="index.html"><p>Click here to go back to previous page</p></a>
</html>
<?php
} else {
?>
<html>Sorry, this form didn't work</html>
<?php
};
?>
Upvotes: 3
Views: 4407
Reputation: 3102
Change your form.php as the following
<?php
if ($_POST["email"]<>'') {
$ToEmail = '[email protected]';
$EmailSubject = 'Site contact form ';
$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Name: ".$_POST["name"]."<br>";
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>";
$MESSAGE_BODY = "Telephone: ".$_POST["tel"]."<br>";
$MESSAGE_BODY = "Type: ".$_POST["type"]."<br>";
$MESSAGE_BODY = "Subject: ".$_POST["subject"]."<br>";
$MESSAGE_BODY = "Level: ".$_POST["level"]."<br>";
$MESSAGE_BODY = "Hours required: ".$_POST["hours"]."<br>";
$MESSAGE_BODY .= "Additional information: ".nl2br($_POST["info"])."<br>";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
echo <<<EXCERPT
<html>
<h3>Thanks for your email</h3>
<h4>I'll get back to you as soon as possible</h4>
<a href="index.html"><p>Click here to go back to previous page</p></a>
</html>
EXCERPT;
} else {
echo "<html>Sorry, this form didn't work</html>";
}
?>
Upvotes: 1
Reputation: 145472
You could also just use:
if ($_POST["email"]) {
This works much like the != ""
or empty()
check. PHP was incepted to handle forms well. And you can just let it probe incoming form fields. It uses some magic boolean conversion rules for strings, which most of the time will accomplish what you want.
Another advantage of this simpler style is that it eases debugging if you enable the E_ALL and E_NOTICE (=debug) error_reporting mode.
Upvotes: 0
Reputation: 3928
You should try this:
if(!empty($_POST["email"])){
//your email preparation code
}
Insted of using this:
if($_POST["email" <> ''){
//your email preparation code
}
The !
basically means not, so the !empty
means not empty
Upvotes: 0
Reputation: 1635
in your
if ($_POST["email"] <> '') {
change that into
if ($_POST["email"] != '') {
Upvotes: 0
Reputation: 152206
Try with
if ( !empty($_POST["email"]) )
However you can check, what is posted in that page using:
echo '<pre>';
var_dump( $_POST );
Upvotes: 3