簡體   English   中英

在發送 PHP Mailer 電子郵件之前驗證字段

[英]Validate Fields Before Sending PHP Mailer email

我是一個 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);
}

如果您只想拒絕來自 .ru 電子郵件地址的電子郵件,您可以使用一個簡單的正則表達式,例如:

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

else {
    // Send email
}

但是我確信有很多方法可以繞過這個,例如從另一個 TLD 發送垃圾郵件。 當然,更好的方法是總體上防止垃圾郵件和機器人。 諸如:蜜罐、會話令牌驗證、垃圾郵件列表等方法會更有效。 如果您正在尋找一個起點,這是一篇很好的文章

if(!$_POST['attorney'] || !$_POST['field'] || substr($_POST['email'],-3) == ".ru" )
    die('hackers! :)');

但這不是很好的解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM