我创建了一个带有PHP脚本的请愿网站,允许签名者在我网站的后台显示它。我想要完成的是向脚本添加一个邮件功能,这样它就会将签名者信息以及时间戳,IP地址和用户代理ID通过电子邮件发送到我的电子邮件地址。对此的任何帮助将不胜感激。我是PHP的新手并且自己教我如何编写代码。
<?php
include('database/config.php');
include('database/database.php');
$err = '';
if(isset($_POST['submit'])){
$first = addslashes(trim($_POST['first']));
$last = addslashes(trim($_POST['last']));
$glvar = addslashes(trim($_POST['glvar']));
$ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
//echo $ip;
if(($first!='')&& ($last!='')&& ($glvar!='')){
$database = new Database(HOST, DATEBASE, USERNAME, PASSWORD);
$allUsers = $database->select('user','glvar_id','*',"glvar_id = '".$glvar."'");
//echo $ip;
$checkglvar = 0;
$checkglvar = count($allUsers);
$userData = array(
'first_name' => $first,
'last_name' => $last,
'glvar_id' => $glvar,
'ip' => $ip,
);
if(!$checkglvar) {
$database->insert('user',$userData);
mail("info@mysite.com", "Subject", "message");
header('location:thank-you.html');
} else $err.='<p style="color:red">Ooops! You have already signed the petition</p>';
} else {
if($first=='') $err.='<p style="color:red">Your First Name is empty</p>';
if($last=='') $err.='<p style="color:red">Your Last Name is empty</p>';
if($glvar=='') $err.='<p style="color:red">Your GLVAR ID is empty</p>';
}
}
答案 0 :(得分:0)
这里是如何使用附加标题的邮件功能。标题以\r\n
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Originating-IP: ' . $_SERVER['REMOTE_ADDR'] . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
答案 1 :(得分:0)
mail("info@mysite.com", "Subject", "message");
您可以将“主题”和“消息”设为您想要的任何内容。可以将其视为电子邮件中的3个字段(“收件人:”,“主题行”,“电子邮件内容”)。
因此,您可以创建一个变量,通过电子邮件发送给您:
$message = "IP: $ip" . PHP_EOL;
$message .= "TIME: " . date('Y-m-d H:i:s');
$message .= "UserAgent: $glvar_id" . PHP_EOL;
mail("to@me.com", "Subject of email", $message);
这会向您发送一封电子邮件:
Subject: Subject of email
Contents:
IP: 127.0.0.1
Time: 2013-06-21 12:30:12
UserAgent: whatever-this-id-looks-like
顺便说一句,我不知道你的用户代理ID是什么意思,所以我使用$ glvar_id作为UserAgent,但我怀疑这是正确的
答案 2 :(得分:0)
mail("users_email@site.com", "Whatever subject you want", "Thanks, blah blah blah\nIP Address: " . $_SERVER['REMOTE_ADDR'] . "\nDate" . date("M j Y @ H:i:s") . "\nUser Agent: " . $_SERVER['HTTP_USER_AGENT'], "From: you@yoursite.com");
如果您需要使用time()而不是date()函数替换时间戳,则不确定是否需要人类可读日期或unix时间戳。查看date()文档以了解不同的格式。并且“\ n”是换行符(以防您不知道)。
我注意到你的代码中没有发送任何标题。上面代码中的第4个参数(“From:you@yoursite.com”)会将“发件人”字段添加到电子邮件中,使其在收件箱中看起来更好。