为PHP邮件脚本设置时间或发送限制

为PHP邮件脚本设置时间或发送限制,php,email,Php,Email,我有一个简单的php注册表单,它捕获了一个名称和电子邮件地址。注册后,我有一封确认电子邮件发送给注册人,一封发送给管理员 我遇到了一个问题,用户只注册了一次,但一些问题导致电子邮件被发送50多次给注册人和管理员。这只发生过几次,但我正在努力阻止它在未来发生 我正在考虑运行脚本的时间限制,但是想知道处理这个问题的最佳方法。下面是脚本邮件部分的一个片段 2个注释,以备使用: 我用的是梨邮递员 我的邮件是通过邮枪发送的 $headers=array('From'=>$From, '至'=>$至, “密

我有一个简单的php注册表单,它捕获了一个名称和电子邮件地址。注册后,我有一封确认电子邮件发送给注册人,一封发送给管理员

我遇到了一个问题,用户只注册了一次,但一些问题导致电子邮件被发送50多次给注册人和管理员。这只发生过几次,但我正在努力阻止它在未来发生

我正在考虑运行脚本的时间限制,但是想知道处理这个问题的最佳方法。下面是脚本邮件部分的一个片段

2个注释,以备使用:

  • 我用的是梨邮递员
  • 我的邮件是通过邮枪发送的
  • $headers=array('From'=>$From,
    '至'=>$至,
    “密件抄送”=>密件抄送美元,
    '回复'=>$电子邮件,
    “主题”=>$Subject,
    “MIME版本”=>1,
    “内容类型”=>“文本/html;字符集=iso-8859-1”);
    $headers\u admin\u notification=array('From'=>$From\u admin\u notification,
    '至'=>$至管理员通知,
    'Subject'=>$Subject\u admin\u通知,
    “MIME版本”=>1,
    “内容类型”=>“文本/html;字符集=iso-8859-1”);
    //配置文件中包含SMTP身份验证的凭据
    $smtp=Mail::工厂('smtp',阵列('host'=>'ssl://smtp.mailgun.org',
    “auth”=>正确,
    “端口”=>465,
    “用户名”=>“XXXXX”,
    “密码”=>“XXXXX”);
    $mail=$smtp->send($to、$headers、$body);
    $mail\u admin\u notification=$smtp->send($to\u admin\u notification、$headers\u admin\u notification、$body\u admin\u notification);
    if(PEAR::isError($mail)| PEAR::isError($mail\u admin\u notification)){
    echo(“”$mail->getMessage()”

    ”; echo(“”$mail\u admin\u notification->getMessage()”

    ”; } 否则{ 标题(“位置:LINK-TO-MY-CONFIRMATION-PAGE?fname=$fname&session=$readable_date_和_time”); }

    谢谢

    但是一些问题导致电子邮件被发送50多次给注册人和管理员
    最好是找到并修复这个bug,而不是在这个bug从未被故意解决的地方进行工作。。。可能是一个机器人利用你的脚本。。。如果是这样,您可以使用会话,在该会话中,如果已完成所需的工作,则会检查标志performed@GetSet谢谢你。我认为增加会议是另一种选择。我找不到发生这种情况的任何原因,但我也联系了我的服务器提供商,以防这是出于某种原因。
    但一些问题导致电子邮件被发送50多次给注册人和管理员
    最好是找到并修复这个bug,而不是在不知情的情况下解决这个bug。。。可能是一个机器人利用你的脚本。。。如果是这样,您可以使用会话,在该会话中,如果已完成所需的工作,则会检查标志performed@GetSet谢谢你。我认为增加会议是另一种选择。我找不到发生这种情况的任何原因,但我也已经联系了我的服务器提供商,以防发生这种情况。
    $headers = array ('From' => $from,
        'To' => $to,
        'Bcc' => $bcc,
        'Reply-to' => $email,
        'Subject' => $subject,
        'MIME-Version' => 1,
        'Content-type' => 'text/html;charset=iso-8859-1');
    
    $headers_admin_notification = array ('From' => $from_admin_notification,
        'To' => $to_admin_notification,
        'Subject' => $subject_admin_notification,
        'MIME-Version' => 1,
        'Content-type' => 'text/html;charset=iso-8859-1');
    
    // credentials for SMTP Authentication included from config file
    
    $smtp = Mail::factory('smtp',   array ('host' => 'ssl://smtp.mailgun.org',
        'auth' => true,
        'port' => 465,
        'username' => 'XXXXX',
        'password' => 'XXXXX'));
    
    $mail = $smtp->send($to, $headers, $body);
    $mail_admin_notification = $smtp->send($to_admin_notification, $headers_admin_notification, $body_admin_notification);
    
    if (PEAR::isError($mail) || PEAR::isError($mail_admin_notification)) {
        echo("<p>" . $mail->getMessage() . "</p>");
        echo("<p>" . $mail_admin_notification->getMessage() . "</p>");
    }
    else {
        header("Location: LINK-TO-MY-CONFIRMATION-PAGE?fname=$fname&session=$readable_date_and_time");
    }