Loop 只检查一封电子邮件

Kazura92

我们从用户数据库中获取电子邮件地址。然后我们想在 api 中检查这些电子邮件地址并返回违规次数。

问题是现在它似乎只检查第一个电子邮件地址。当我们有多个时,第一个获得正确的违规次数,第二个仅获得 0。

<?php
ini_set("allow_url_fopen", 1);
include '/home/actiorwd/include/dbinfo.php';

$servername = "localhost";
$dbname = "actiorwd_websec";

// Create connection
$conn = new mysqli($servername, $user, $passw, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
//users contains two columns; email and breaches.
$sql = "SELECT * FROM users";
$result = $conn->query($sql);

$ch = curl_init();

if ($result->num_rows > 0) {
    // output data of each row

    while($row = $result->fetch_assoc()) {
        $url = 'https://haveibeenpwned.com/api/v2/breachedaccount/';
        $url.= $row["email"];

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
        curl_setopt($ch, CURLOPT_URL, $url);
        $results = curl_exec($ch);
        curl_close($ch);
        $obj = json_decode($results, TRUE);

        $usermail = $row["email"];



        $newbreaches = count($obj);

        //run if new breaches are found
        if($row["breaches"]!==$newbreaches){

          require_once('/home/actiorwd/public_html/PHPMailer/PHPMailerAutoload.php');
          $mail = new PHPMailer;

          $mail->isSMTP();                                      // Set mailer to use SMTP
          $mail->Host = 'cpanel40.proisp.no';  // Specify main and backup SMTP servers
          $mail->SMTPAuth = true;                               // Enable SMTP authentication
          $mail->Username = '[email protected]';                 // SMTP username
          $mail->Password = 'PASSWORDHERE';                           // SMTP password
          $mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
          $mail->Port = 465;                                    // TCP port to connect to

          $mail->setFrom('[email protected]', 'WebSec');
          $mail->addAddress($row["email"]);     // Add a recipient
          $mail->addReplyTo('[email protected]', 'WebSec');

          $mail->isHTML(true);                                  // Set email format to HTML

          $mail->Subject = 'Breached!!!!';
          $mail->Body    = 'Someone breached your account, there are: '.$newbreaches."breaches";
          $mail->AltBody = 'Someone breached your account in plain text';
          $mail->send();
          /*
          if(!$mail->send()) {
              echo 'Message could not be sent.';
              echo 'Mailer Error: ' . $mail->ErrorInfo;
          } else {
              echo 'Message has been sent';
          }

          */


          $updatebreach = "INSERT INTO users (`email`, `breaches`) VALUES ('$usermail', '$newbreaches') ON DUPLICATE KEY UPDATE `breaches` = '$newbreaches' ";
          //echo $updatebreach;

          if ($conn->query($updatebreach) === TRUE) {
              //echo "New record created successfully";
          } else {
              //echo "Error: " . $updatebreach . "<br>" . $conn->error;
          }


        }


    }
} else {
    echo "0 results";
}
$conn->close();
?>
双胞胎朋友

查看您的循环,或者更好地查看循环之前的行。你在做:

$ch = curl_init();- 所以你初始化一个 cURL 会话。你只做一次,因为它在循环之外。

然后,几行之后,你正在做:

curl_close($ch);- 您关闭了 cURL 会话。每次调用后都这样做,因为它在你的循环中。所以主要是你初始化,运行 cURL 的东西(这就是为什么它适用于第一个)然后它停止工作,因为你关闭了你的 cURL 会话并且永远不会打开一个新的会话。

只需curl_close$ch);从循环中取出您的并将其放在文件的末尾,这样您就可以使用同一个会话执行所有请求。然后它应该工作:)

您的文件末尾应如下所示:

}
curl_close($ch);
$conn->close();
?>

希望它有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

发送多封电子邮件时出错,应该只发送一封

来自分类Dev

邮件多次发送同一封电子邮件

来自分类Dev

CRM Javascript检查无效的电子邮件格式并输入正确的一封电子邮件

来自分类Dev

在一封电子邮件中发送多行

来自分类Dev

sendgrid循环发送的一封电子邮件

来自分类Dev

每周发送一封电子邮件给用户

来自分类Dev

Outlook OoO每天发送一封电子邮件

来自分类Dev

在一封电子邮件中发送多行

来自分类Dev

每周发送一封电子邮件给用户

来自分类Dev

收到一封空白电子邮件

来自分类Dev

为什么我的应用程序只发送一封电子邮件,然后又发送不了?

来自分类Dev

将电子邮件作为附件附加到另一封电子邮件

来自分类Dev

使用formail获取电子邮件文件的最后一封电子邮件

来自分类Dev

第一封电子邮件退回;第二封及随后的电子邮件会通过

来自分类Dev

在Outlook邮件到达时自动将其转发到另一封电子邮件

来自分类Dev

用于发送电子邮件的 PHP / MySQL 脚本 - 一封邮件太多

来自分类Dev

Cron Job一次仅发送一封电子邮件

来自分类Dev

电子邮件管道到PHP脚本并转发到另一封电子邮件

来自分类Dev

Laravel使用另一封电子邮件发送电子邮件给(通知)用户?

来自分类Dev

在系统中找到一封电子邮件并将其删除,该电子邮件会显示在日志中

来自分类Dev

为什么INSERT触发仅发送一封电子邮件?

来自分类Dev

HTML和纯文本在同一封电子邮件中

来自分类Dev

跳过自动“退订我”功能,仅需进行一封电子邮件交易

来自分类Dev

如何为每条记录选择一封电子邮件

来自分类Dev

Servicestack允许多个用户使用同一封电子邮件

来自分类Dev

如何向列中的所有人发送一封电子邮件

来自分类Dev

在Asp.net Identity核心中确认一封以上电子邮件

来自分类Dev

从熊猫行获得第一封合法电子邮件

来自分类Dev

将多个报告作为一封电子邮件发送出去

Related 相关文章

  1. 1

    发送多封电子邮件时出错,应该只发送一封

  2. 2

    邮件多次发送同一封电子邮件

  3. 3

    CRM Javascript检查无效的电子邮件格式并输入正确的一封电子邮件

  4. 4

    在一封电子邮件中发送多行

  5. 5

    sendgrid循环发送的一封电子邮件

  6. 6

    每周发送一封电子邮件给用户

  7. 7

    Outlook OoO每天发送一封电子邮件

  8. 8

    在一封电子邮件中发送多行

  9. 9

    每周发送一封电子邮件给用户

  10. 10

    收到一封空白电子邮件

  11. 11

    为什么我的应用程序只发送一封电子邮件,然后又发送不了?

  12. 12

    将电子邮件作为附件附加到另一封电子邮件

  13. 13

    使用formail获取电子邮件文件的最后一封电子邮件

  14. 14

    第一封电子邮件退回;第二封及随后的电子邮件会通过

  15. 15

    在Outlook邮件到达时自动将其转发到另一封电子邮件

  16. 16

    用于发送电子邮件的 PHP / MySQL 脚本 - 一封邮件太多

  17. 17

    Cron Job一次仅发送一封电子邮件

  18. 18

    电子邮件管道到PHP脚本并转发到另一封电子邮件

  19. 19

    Laravel使用另一封电子邮件发送电子邮件给(通知)用户?

  20. 20

    在系统中找到一封电子邮件并将其删除,该电子邮件会显示在日志中

  21. 21

    为什么INSERT触发仅发送一封电子邮件?

  22. 22

    HTML和纯文本在同一封电子邮件中

  23. 23

    跳过自动“退订我”功能,仅需进行一封电子邮件交易

  24. 24

    如何为每条记录选择一封电子邮件

  25. 25

    Servicestack允许多个用户使用同一封电子邮件

  26. 26

    如何向列中的所有人发送一封电子邮件

  27. 27

    在Asp.net Identity核心中确认一封以上电子邮件

  28. 28

    从熊猫行获得第一封合法电子邮件

  29. 29

    将多个报告作为一封电子邮件发送出去

热门标签

归档