У меня есть HTML-форма, которая работает с PHP-кодом, и я получаю письма, отправленные мне, однако я могу получить электронное письмо, если нет темы, нет электронной почты и нет сообщения. Может быть, кто-нибудь знает, как это исправить? Вот код PHP:HTML-форму для электронной почты PHP
<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];
$mail_to = '[email protected]';
$subject = 'Message from a site visitor '.$field_name;
$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Thank you for the message. We will contact you shortly.');
window.location = 'index.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('Message failed. Please, send an email to [email protected]');
window.location = 'index.html';
</script>
<?php
}
?>
<?php
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;
}
?>
Вы спрашиваете, как _not_ отправлять электронную почту, если тема/сообщение/сообщение пустые? Должен быть простой набор условий 'if'. С чем вы застряли? –
Не запускайте 'mail ($ mail_to, $ subject, $ body_message, $ headers)' сначала проверяйте. Также 'isinjected' не используется до тех пор, пока сообщение не отправлено, возможно, захочет исправить это. Также непонятно, почему определенные пробелы делают электронную почту «введенной». – chris85
Кроме того, используйте [header] (http://php.net/header) перенаправления, а не довольно неприятный JS-хак. –