Sorry, im new to php and post requests so it might be a dumb question. Im trying to create a contact form. Im using a post request to send it to a php file so that it can then send an email. Yet for some reason whenever i do so, instead of sending an email it redirects it to an empty page with a plaintext version of the PHP file. Am i doing something wrong?
<div class="page">
<form class="contact-form" method="POST" action="./scripts/email.php" name="myemailform">
<label for="name">Full Name (required)</label>
<input type="text" class="form-item" id="name" name="name">
<label for="email">Email (required)</label>
<input type="text" class="form-item" id="email" name="email">
<label for="phone">Phone Number</label>
<input type="tel" class="form-item" id="phone" name="phone">
<label for="address">Address</label>
<input type="text" class="form-item" id="address" name="address">
<label for="message">Message (required)</label>
<textarea id="message" class="form-item" name="message" style="height: 200px;"></textarea>
<input type="submit" class="submit" value="Submit">
</form>
</div>
<?php
if (isset($_POST['Email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "New form submissions";
function problem($error)
{
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['Name']) ||
!isset($_POST['Email']) ||
!isset($_POST['Message'])
) {
problem('We are sorry, but there appears to be a problem with the form you submitted.');
}
$name = $_POST['Name']; // required
$email = $_POST['Email']; // required
$message = $_POST['Message']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if (!preg_match($email_exp, $email)) {
$error_message .= 'The Email address you entered does not appear to be valid.<br>';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if (!preg_match($string_exp, $name)) {
$error_message .= 'The Name you entered does not appear to be valid.<br>';
}
if (strlen($message) < 2) {
$error_message .= 'The Message you entered do not appear to be valid.<br>';
}
if (strlen($error_message) > 0) {
problem($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 .= "Name: " . clean_string($name) . "\n";
$email_message .= "Email: " . clean_string($email) . "\n";
$email_message .= "Message: " . clean_string($message) . "\n";
// create email headers
$headers = 'From: ' . $email . "\r\n" .
'Reply-To: ' . $email . "\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>
The PHP is directly copied from an example but i have tried multiple.
I tried to change the PHP code, and tried different examples to see if this was the fault. Also tried to add the PHP directly to the HTML file but that did not work either.