Hi,
I have a contact form - It works, but sometimes could send 1000 of empty emails.
I made some research and changed the code.
The problem is - if i leave empty "name" or "email" it doesnt show error message, its just show "error!" , in all the cases.
Here is a contact page :
<?php
include 'bus_var.php';
session_start();
$_SESSION["recipient"]= "tali@xxx.ca";
?>
<!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>
<div align="center">
<form action="mail_validation.php" method="post">
<input type="hidden" name="ac" value="login" />
<input type="hidden" name="company" value="BioPed Footcare Centres" />
<div class="contact_row">
<div class="contact_col1">Name<span class="red_text">*</span>:</div>
<div class="contact_col2"><input class="formfield" name="realname" value="<?php echo $_POST["realname"]; ?>" type="text" size="35" maxlength="50" />
<?php if(isset($errName2)) echo $errName1; ?></div>
<br class="clear" />
</div>
<div class="contact_row">
<div class="contact_col1">Email<span class="red_text">*</span>:</div>
<div class="contact_col2"><input class="formfield" name="email" value="<?php echo $_POST["email"]; ?>" type="text" size="35" maxlength="50" />
<?php if(isset($errEmail)) echo $errEmail; ?></div>
<br class="clear" />
</div>
<div class="contact_row">
<div class="contact_col1">Phone no.:<br /></div>
<div class="contact_col2"><input class="formfield" name="phone" type="text" size="35" maxlength="50" /></div>
<br class="clear" />
</div>
<div class="contact_row">
<div class="contact_col1">Message:<br /></div>
<div class="contact_col2"><textarea class="formfield" name="text" cols="38" rows="5"><?php echo $_POST["text"]; ?></textarea><br /><?php if(isset($errMessage)) echo $errMessage; ?></div>
<br class="clear" />
</div>
<div class="contact_row" align="right">
<input class="formfield" type="submit" name="submit" value="Send message" />
</div>
</form>
</div>
Here is the form.php:
<?php
session_start();
$errName1 = "";
$errEmail = "";
$errMessage = "";
if(isset($_POST['submit'])) {
if($_POST["ac"]=="login"){
$FORMOK = TRUE;
if(preg_match("/^[a-zA-Z -]+$/", $_POST["realname"]) === 0) {
$errName1 = '<div>Please enter you name.</div>';
$FORMOK = FALSE;
}
if(preg_match("/^[a-zA-Z]\w+(\.\w+)*\@\w+(\.[0-9a-zA-Z]+)*\.[a-zA-Z]{2,4}$/", $_POST["email"]) === 0) {
$errEmail = '<div>Please enter a valid email.</div>';
$FORMOK = FALSE;
}
if(preg_match("/^[a-zA-Z -]+$/", $_POST["text"]) === 0) {
$errMessage = '<div>Please enter a message.</div>';
$FORMOK = FALSE;
}
if($FORMOK) {
if(isset($_POST["email"]))
file_put_contents("emails.txt" , htmlspecialchars($_POST["email"]) . "\n\r" , FILE_APPEND );
if(empty($_SESSION["recipient"]))
die("recipient is empty");
$emailadd = $_SESSION["recipient"];
$subject = 'Form Submission from Business Exchange';
$emailcompany = $_POST['company'];
$realname = $_POST['realname'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$text = $_POST['text'];
// --------------------------Do not edit below this line--------------------------
$text = "Results from form $emailcompany:\n\n
Name: $realname
Email: $email
Message: $text";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To:<$emailadd> '. "\r\n";
$headers .= 'From <$email> '. "\r\n";
mail($emailadd, $subject, $text,$headers);
again, make sure to delete the brackets too.
//mail($emailadd, $subject, $text, 'From: '.$emailadd.'');
//mail($emailother, $subject, $text, 'From: '.$emailother.'');
echo "<font color='red'>You message was sent successfully</font>";
}else{
echo "Error!";
}
}
}
?>
Will appreciate your help
Thank you in advance
Tali