繁体   English   中英

PHP 联系表格 - 消息发送空白

[英]PHP contact form - Message sent blank

早上好,

我正在尝试设置 PHP 联系表格。 email 已正确发送,但根本没有内容(没有主题,没有邮件正文,当我尝试回复邮件时,收件人地址不是从联系表单中的 email 输入中获取的,但答案将被重定向至: postmaster@mydomain.com )。

我正在使用属于我的域的邮件处理程序 (postmaster@mydomain.com),以避免某些服务器可能将 email 视为 SPOOFING email,因此可能无法交付 Z0C83F57C786A0B4AB39EFC3731A0B4A39EFC。 在 HEADERS 属性中,我指定了 email,用户在联系表单中将其输入为“回复”email。 但是在这种情况下,当我尝试回复“空白”email 时,“回复”奇怪的是邮件处理程序(postmaster@mydomain.com)。

这是 PHP 代码:

 <?php $contactname = ""; $companyname = ""; $phone = ""; $email = ""; $subject = ""; $message = ""; $postmaster ="postmaster@mydomain.com"; if(isset($_POST['contactname'], $_POST['companyname'], $_POST['phone'], $_POST['email'], $_POST['subject'], $_POST['message'])){ $contactname = htmlspecialchars($_POST['contactname']); $companyname = htmlspecialchars($_POST['companyname']); $phone = htmlspecialchars($_POST['phone']); $email = htmlspecialchars($_POST['email']); $subject = htmlspecialchars($_POST['subject']); $message = htmlspecialchars($_POST['message']); } $email_body = "You have received a new message from ".$companyname.".\n\n Phone Number is: ".$phone."\n\n Here is the message: ".$message; $to = "info@mydomain.com"; $headers = "From: $postmaster \r\n"; $headers.= "Reply-To: $email \r\n"; $headers.= "Content-Type: text/html; charset=iso-8859-1\r\n"; mail($to,$subject,$email_body,$headers); header('Location: success.html'); 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; } }?>

你的代码不好。 看来你是初学者。 我已经为你起草了一个更好的代码。 尝试这个!

$contactName = (!empty($_POST['contactname']))?$_POST['contactname']:null;
$companyName = (!empty($_POST['companyname']))?$_POST['companyname']:null;
$phone = (!empty($_POST['phone']))?$_POST['phone']:null;
$email = (!empty($_POST['email']))?$_POST['email']:null;
$subject = (!empty($_POST['subject']))?$_POST['subject']:null;
$message = (!empty($_POST['message']))?$_POST['message']:null;

$postMaster ="postmaster@mydomain.com";
$to = "info@mydomain.com";

if($_POST){
  $body = "Hello! You have received a new mail from ".$companyName."<br><br><b>Phone:</b> ".$phone.".<br><br><b>Message:</b> ".$message;
  $headers = "From: $postmaster \r\n";
  $headers .= "Reply-To: $email \r\n";
  $headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";

  if(mail($to,$subject,$body,$headers)){
    header('Location: success.html');
    exit();
  }else{
    header('Location: failed.html');
    exit();
  }
}

你必须学会编写更简洁、更短且格式正确的代码。 另外,我不明白你的注射 function 做了什么。 因此,我把它省略了。 对我来说,这似乎是不必要的。 但是,如果您觉得它对您来说是必要的,请随时将其包含在内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM