0

这可能很容易,但我看不到路。我身边有一个购物车,用户可以在那里买东西。为此,买家可以将他的电子邮件地址输入到输入表单中。订单通过 php 发送mail()给店主和买家。

我正在寻找一种方法来限制邮件只发送两封电子邮件,以防止垃圾邮件。我看到垃圾邮件发送者可能会输入这样的分号字符串:

email@examplecom;email@xxyz.com;hans@jdkdl.com
4

3 回答 3

5

你不能使用 .

$validemail = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
if ($validemail) {
  $headers .= "Reply-to: $validemail\r\n";
}else
{
//redirect.
}

考虑到您的实际问题。

<?php
$emails = explode(';',$emailList);
if(count ($emails)<3)
{
if(filter_var_array($emails, FILTER_VALIDATE_EMAIL))
    {
    mail();
    }
  else
    {
    //die    
    }
}
?>
于 2012-09-28T08:50:38.017 回答
1

您可以像这样检查字符串中的电子邮件数量:

if(count(explode(';',$emailList))<3)
{
    // send email
}
else
{
    // Oh no, jumbo!
}

此代码将根据字符将您的电子邮件字符串分解;为数组,同时在数组上使用计数函数并根据数字执行两种方案之一。

于 2012-09-28T08:48:37.090 回答
0

这应该只能选择最多两封电子邮件(前两封):

$emailString = "email@examplecom;email@xxyz.com;hans@jdkdl.com";
$emails = explode(";", $emailString);
$emails = array_slice($emails, 0, 2);
$emailString = implode(";", $emails);
var_dump($emailString);

输出:

string(31) "email@examplecom;email@xxyz.com"
于 2012-09-28T08:49:31.220 回答