Php 在支持表单中包括日期、IP和HTTP_主机

Php 在支持表单中包括日期、IP和HTTP_主机,php,Php,我正在尝试在我的联系人表单提交中包括当前日期、发件人IP和主机 代码如下: <?php if( isset($_POST['name']) ) { $to = 'info@mydomain.com'; // Replace with your email $subject = 'Contact Form Submission'; // Replace with your $subject $headers = 'From: ' . $_POST['email'] . "\r\n"

我正在尝试在我的联系人表单提交中包括当前日期、发件人IP和主机

代码如下:

<?php
if( isset($_POST['name']) )
{

$to = 'info@mydomain.com'; // Replace with your email   
$subject = 'Contact Form Submission'; // Replace with your $subject
$headers = 'From: ' . $_POST['email'] . "\r\n" . 'Reply-To: ' .         $_POST['email'];    

$date       = date('M jS, Y @ h:i a');
$IP     = $_SERVER['REMOTE_ADDR'];
$Host       = $_SERVER['HTTP_HOST'];

$message = 'Name: ' . $_POST['name'] . "\n" .
           'E-mail: ' . $_POST['email'] . "\n" .
           'Subject: ' . $_POST['subject'] . "\n" .
           'Department: ' . $_POST['department'] . "\n" .
           'Message: ' . $_POST['message'] . "\n" .
           'Date:  ' . $_POST['$date'] . "\n" .
           'IP:  ' . $_POST['$IP'] . "\n" .
           'Host:  ' . $_POST['$Host'];




mail($to, $subject, $message, $headers);    
if( $_POST['copy'] == 'on' )
{
    mail($_POST['email'], $subject, $message, $headers);
}
}
?>

电子邮件已收到,但没有日期、IP和主机。任何帮助都将不胜感激。

您已经将(ip、日期等)存储在变量中,因此请将这些变量用于邮件。同样这些值在POST数据中不存在,因此尝试替换

'Date:  ' . $_POST['$date'] . "\n" .
'IP:  ' . $_POST['$IP'] . "\n" .
'Host:  ' . $_POST['$Host'];


由于$date、$IP和$Host不会在post请求中传输,因此您应该这样附加(如下所示):

$createdDate =  new DateTime();
$date= $createdDate->format('d.m.Y H:m');

$message = 'Name: ' . $_POST['name'] . "\n" .
           'E-mail: ' . $_POST['email'] . "\n" .
           'Subject: ' . $_POST['subject'] . "\n" .
           'Department: ' . $_POST['department'] . "\n" .
           'Message: ' . $_POST['message'] . "\n" .
           'Date:  ' . $date. "\n" .
           'IP:  ' . $IP. "\n" .
           'Host:  ' . $Host;

注意割台注入。由于您将
$\u POST['email']
原始粘贴在邮件头中,任何人都可以使用您的服务发送垃圾邮件(通过添加十亿个密件抄送邮件头),您的电子邮件服务可能会禁止您使用。@h2ooooooo,我对我的代码进行了如下修改:,但是现在表单没有被发送:我会检查你的头数组,看看里面是否有异常的东西。(
print\r
)谢谢,这样我就可以随心所欲地格式化日期了!
$createdDate =  new DateTime();
$date= $createdDate->format('d.m.Y H:m');

$message = 'Name: ' . $_POST['name'] . "\n" .
           'E-mail: ' . $_POST['email'] . "\n" .
           'Subject: ' . $_POST['subject'] . "\n" .
           'Department: ' . $_POST['department'] . "\n" .
           'Message: ' . $_POST['message'] . "\n" .
           'Date:  ' . $date. "\n" .
           'IP:  ' . $IP. "\n" .
           'Host:  ' . $Host;