I recently (with a little help) wrote this simple form in an email script. It works, the only problem is that at startup it redirects to the included PHP script. Does anyone have any ideas on how to stop this, and instead just show a thank-you note on the original page?
index.php
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Megaform</title>
</head>
<body>
<?php include 'form.php' ?>
</body>
</html>
form.php
<form name="email" method="post" action="email.php">
<p>
<label for="name">Full Name</label>
<input type="text" name="name" id="name">
</p>
<p>
<label for="email">Email Address</label>
<input type="text" name="email" id="email">
</p>
<p>
<label for="phone">Phone Number</label>
<input type="text" name="phone" id="phone">
</p>
<p>
<label for="subject">Subject</label>
<input type="text" name="subject" id="subject">
</p>
<p>
<label for="message">Message<br>
</label>
<textarea name="message" id="message" cols="45" rows="5"></textarea>
</p>
<p><input type="submit" name="send" id="send" value="Submit"><input type="reset" name="send" id="send" value="Reset">
</p>
</form>
email.php
<?php
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$phone = $_POST['phone'];
$subject = $_POST['subject'];
$message = $_POST['message'];
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
if(IsInjected($visitor_email))
{
echo "Bad email value!";
exit;
}
$email_from = 'a@b.com';
$email_subject = "New Form submission - $subject";
$email_body = "You have received a new message from $name ($phone) .\n Here is the message:\n $message";
$to = "c@d.com";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
mail($to,$email_subject,$email_body,$headers);
?>
<p>Thankyou for your email.</p>
source
share