PHPMailer表单帮助
有没有更好的方法来阻止垃圾邮件通过我的phpmailer脚本 另外,我将如何为其添加格式,以便在发送到电子邮件(如换行)时更具可读性 我希望我的php语法是正确的-因为我不理解phpPHPMailer表单帮助,php,forms,formatting,spam-prevention,phpmailer,Php,Forms,Formatting,Spam Prevention,Phpmailer,有没有更好的方法来阻止垃圾邮件通过我的phpmailer脚本 另外,我将如何为其添加格式,以便在发送到电子邮件(如换行)时更具可读性 我希望我的php语法是正确的-因为我不理解php <?php # bool has_injection (String $var, [String $var, ...]) function has_injection () { $values = func_get_args();
<?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';
}
}
?>
我使用的一个方法是有一个文本区域并使用你的.css文件来显示:none it大多数机器人不阅读css,因此认为文本框显示了,如果文本框中有内容,那么它就是一个机器人,如果它不发送你的电子邮件 例如CSS
.antiBot{display:none}代码>
HTML
PHP
无论何时更改名称或bot,您都可以注意到它是一个陷阱,并且只需做很少的工作就可以绕过它,而不必解析站点的CSS文件
因此,在您的情况下,如果电子邮件的纯文本使用双引号和\n(换行符),则只需在代码周围加上上面的if就可以格式化电子邮件但是它不能用单引号引用。我使用的一个方法是有一个文本区域,并使用你的.css文件来显示:无。大多数机器人不阅读css,因此认为文本框显示了,如果其中有内容,那么它就是一个机器人,如果它不发送你的电子邮件
例如CSS
.antiBot{display:none}代码>
HTML
PHP
无论何时更改名称或bot,您都可以注意到它是一个陷阱,并且只需做很少的工作就可以绕过它,而不必解析站点的CSS文件
因此,在您的情况下,如果电子邮件的纯文本使用双引号和\n(换行符),但不能使用单引号,则只需在您的代码周围加上上面的if就可以了。谢谢@Barkermn01,我会试试看。您知道在表单处理时如何将sendform显示为HTML,以便我可以设置字体类型吗?或者这更复杂?这相当复杂,但是有一些类可以让你同时做HTML和文本回退,非常感谢!我从来没有听说过phpclasses看起来像是一个很好的资源。我在那里有一些代码我自己的谷歌“轻量级MVC”,我的phpclasses是顶级链接谢谢@Barkermn01,我会试试的。您知道在表单处理时如何将sendform显示为HTML,以便我可以设置字体类型吗?或者这更复杂?这相当复杂,但是有一些类可以让你同时做HTML和文本回退,非常感谢!我从来没有听说过phpclasses看起来像是一个很好的资源。我在那里有一些代码我自己的谷歌“轻量级MVC”,我的phpclasses是顶级链接,如果(isset($\u POST)&&count($\u POST)>0){可以通过页面上的一个按钮将数据发送给您自己,最好检查每个字段。如果(isset($\u POST)&&count($\u POST)>0,您可以使用正则表达式确保使用有效的电子邮件作为备注{可以通过页面上的一个按钮将数据发送给您自己,最好检查每个字段。您可以使用正则表达式确保使用有效的电子邮件发送数据
<?php
if($_REQUEST['antibot'] == ""){
// send your email
}else{
// bot using your system
}
?>