[英]HTML email form PHP
我有一個適用於PHP代碼的HTML表單,並且我收到了發送給我的電子郵件,但是,如果沒有主題,沒有電子郵件也沒有消息,我可以收到一封電子郵件。 也許有人知道該如何解決? 這是PHP代碼:
<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];
$mail_to = 'benasleng@gmail.com';
$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 benasleng@gmail.com');
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;
}
?>
在調用mail()函數之前,應檢查字段是否已編譯。
這只是一個草稿示例,因為我建議您使用比empty()函數更復雜的檢查,尤其是在$ field_email上,例如:
if (empty($field_name) || !filter_var($field_email, FILTER_VALIDATE_EMAIL) || empty($field_message)) {
?>
<script language="javascript" type="text/javascript">
alert('All fields must be correctly compiled');
window.location = 'index.html';
</script>
<?php
} else {
$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 benasleng@gmail.com');
window.location = 'index.html';
</script>
<?php
}
}
嘗試添加標題並使用mail()函數:
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: Mail <mail@mail.someadress.com>';
mail($mail_to, $subject, $body_message, $headers);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.