首页 > 解决方案 > 在发送 PHP Mailer 电子邮件之前验证字段

问题描述

我是一个 ASP 中等水平的人,我对 PHP 完全陌生,并且对 PHP 有真正的知识或语法结构。虽然我可以阅读它并知道它在做什么,但我无法制定自己的代码来保存。所以现在我有一个客户端,他们的模板是用 PHP 构建的,并且邮件表单已被黑客入侵。因此,现在她每天都会从她网站上的欢迎电子邮件表单中收到数十封俄语电子邮件。首先,我在提交表单上添加了字段验证,但不知何故他们解决了这个问题。我需要在 PHP 邮件程序中添加字段值验证。我想添加 IF field.email 以“.ru”结尾,THEN Die END IF,IF field.attorney IsNULL THEN DIE; END IF, IF field.field IsNULL THEN DIE; 万一。PHP 代码中这些语句的语法是什么:

if (isset($_POST['email'])) {
    $template = str_replace(
        array("<!-- @{FromState} -->", "<!-- @{FromEmail} -->"),
        array("Email:", $_POST['email']),
        $template);
}else{
    die('MF003');
}

if (isset($_POST['name'])) {
    $template = str_replace(
        "<!-- @{FromName} -->",
        $_POST['name'],
        $template);
}else{
    die('MF006');
}

if (isset($_POST['message'])) {
    $template = str_replace(
        array("<!-- @{MessageState} -->", "<!-- @{MessageDescription} -->"),
        array("Message:", $_POST['message']),
        $template);
}

标签: phpphpmailermailer

解决方案


如果您只想拒绝来自 .ru 电子邮件地址的电子邮件,您可以使用简单的正则表达式,例如:

if(preg_match('/\b.ru\b/', $_POST['email'])) {
    // Error message
}

else {
    // Send email
}

但是我确信有很多方法可以绕过它,例如从另一个 TLD 发送垃圾邮件。当然,更好的方法是防止垃圾邮件和机器人。诸如:蜜罐、会话令牌验证、垃圾邮件列表等方法会更有效。如果您正在寻找一个开始的地方,这是一篇很好的文章。


推荐阅读