有没有更好的方法来阻止我的phpmailer脚本上的垃圾邮件?
另外,我将如何向此添加格式,以便在将其发送到电子邮件时更具可读性,例如断线
我希望我的php语法是正确的 - 因为我不懂PHP。
<?php
# bool has_injection (String $var, [String $var, ...])
function has_injection () {
$values = func_get_args();
for ($i=0, $count=func_num_args(); $i<$count; $i++) {
if ( stristr($values[$i], "%0A") || stristr($values[$i], "%0D") || stristr($values[$i], "\\r") || stristr($values[$i], "\\n")
|| stristr($values[$i], "Bcc") || stristr($values[$i], "Content-Type") ) {
return true;
}
}
return false;
}
$error = '';
if (isset($_POST) && count($_POST)>0) {
# The form has been submitted
$course_title = $_POST['course_title'];
$course_date = $_POST['course_date'];
$course_code = $_POST['course_code'];
$course_fee = $_POST['course_fee'];
$break .= "\n";
$qual_subject_level = $_POST['qual_subject_level'];
$break .= "\n";
$email = $_POST['email'];
if ($name && $email && $subject) {
if (has_injection($name, $email, $subject)) {
# You've got another spammer at work here
$error = 'No spamming';
exit(0);
}
else {
# It's safe to send the message
mail('my@gmail.com',
$subject,
$course_title,
$course_code,
$course_fee,
$break,
$qual_subject_level,
$break,
$subject,
"From: $name <$email>");
}
}
else {
$error = 'Please fill in all the forms';
}
}
?>
答案 0 :(得分:3)
我使用的是一个文本区域,并使用你的.css文件显示:没有它大多数机器人不读取css因此认为文本框显示,如果它有内容,它是一个机器人,如果它不要发送你的电子邮件。
E.G CSS
.antiBot{display:none};
HTML
<input type="text" class="antiBot" name="antibot" value="" />
PHP
<?php
if($_REQUEST['antibot'] == ""){
// send your email
}else{
// bot using your system
}
?>
如何更改名称或机器人将能够注意到它的陷阱,并且只需要解决必须为您的网站解析CSS文件的小工作就可以解决这个问题
所以在你的情况下,如果它的纯文本使用双引号和\ n(换行符),只是说明你的代码周围的if和格式化电子邮件,但它不能用单引号工作。