Я рекомендую использовать isset, чтобы проверить, действительно ли существуют опубликованные переменные, более того: я рекомендую использовать тернарный оператор, чтобы проверить, действительно ли они установлены:
$name = isset($_POST['name']) ? $_POST['name'] : false;
$email = isset($_POST['email']) ? $_POST['email'] : false;
$web = isset($_POST['web']) ? $_POST['web'] : false;
$text = isset($_POST['text']) ? $_POST['text'] : false;
$receiver = "[email protected]"; // You forgot to close a whitespace here.
if(($name && $email && $web && $text) != false)
{
// It's okay to send email now.
// Checkpoint.
}
Я рекомендую использовать эту функцию фильтрации спама:
function spamcheck($field)
{
//address using FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//address using FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return true;
}
else
{
return false;
}
}
И мне нравится использовать эту модифицированную почтовую функцию:
// Usage: sendMail($toEmail, $fromEmail, $subject, $message);
// Pre: $toEmail is of type string and is a valid email address,
// indicating the receiver.
// $fromEmail is of type string and is a valid email address,
// indicating the sender.
// $subject is of type string, indicating the email subject.
// $message is of type string, indicating the message to be send
// via the email, from $fromEmail's address to $toEmail's address.
// Post: An email containing $message and the subject $subject from
// $fromEmail's address to $toEmail's address if $fromEmail
// does not indicate a spam email.
function sendMail($toEmail, $fromEmail, $subject, $message)
{
$validFromEmail = spamcheck($fromEmail);
if($validFromEmail)
{
mail($toEmail, $subject, $message, "From: $fromEmail");
}
}
Так что вы можете продолжить с того места, где мы взлетели. Начнем с того, что вам не нужны фигурные скобки. Кроме того... вы перезаписываете переменную $body, было бы разумнее хранить переменные отдельно. Я также рекомендую хранить тему в переменной.
$subject = 'Contact Form Submission'; // Place where we left of at Checkpoint.
$message = "Name: $name\n\nWebsite :$web\n\nComments:$body"; // Place where we left of at Checkpoint.
sendMail($email, $receiver, $subject, $message); // Place where we left of at Checkpoint.
Вы также должны убедиться, что у вас есть доступ к SMTP (Simple Mail Transport Protocol), поэтому вам может быть недостаточно работать с локальным хостом, если у вас нет SMTP-сервера для использования. ЕСЛИ он у вас есть, и он не работает, вам, возможно, придется настроить параметры php ini:
ini_set('SMTP' , 'smtp.yourwebsite.com');
ini_set('smtp_port' , '25');
ini_set('username' , '[email protected]');
ini_set('password' , 'pass');
ini_set('sendmail_from' , '[email protected]');
Примечание. Было бы разумно сделать модифицированную почтовую функцию ВОЗВРАТОЙ почтовой функции, чтобы вы могли проверить, было ли это успешно или нет.
person
Jonast92
schedule
08.04.2013