0

因此,编写此脚本,现在我确实收到了正确的电子邮件,其中包含数据库中的旧 IP 地址和脚本中的新地址。我现在的问题是电子邮件发送的旧IP地址和当前IP地址是否相同或不同。该脚本将每分钟运行一次以检查动态 IP 地址更改,因此我真的不希望每分钟都收到一封电子邮件。我的目标是让它仅在最后发布的 IP 与发现的 IP 不同时才发送电子邮件。现在,无论 IP 是否不同,电子邮件都会发送。其他一切都有效。电子邮件发送正常,其他一切正常。唯一的问题是使用逻辑来决定何时发送电子邮件。(当新旧IP不同时。)

当脚本从数据库中获取 ip 时,它看起来像 123.123.123.123。来自http://www.ipaddresscheck.comlu.com/ip.php的 IP也看起来像 123.123.123.123。(***示例) 但是如果数据库显示 123.123.123.123,当前是 134.134.134.134,它应该发送电子邮件。

在比较中,我尝试了!=、==,并尝试将邮件块放在 then 和 else 部分。问题可能是由不同的数据类型引起的吗?$new_ip 是字符串,而 $old_ip 是整数吗?我只有 14 岁,所以……是的。

 <?php
    //Get IP
    $new_ip = file_get_contents('http://www.ipaddresscheck.comlu.com/ip.php');
    //Connect to SQL
    mysql_connect('localhost','root','root');
    //Select database
    mysql_select_db("ip_changes") or die(mysql_error());
    //Get Date Info
    $date = date("D M Y");
    $time = date("H:i:s");
    //Get last inserted IP
    $sql = mysql_query('SELECT * FROM ip ORDER BY  id DESC LIMIT 1');
    $row = mysql_fetch_array( $sql );
    $old_ip = $row['current_ip'];
    echo $old_ip;
    //Generate SQL query
    $sql="INSERT INTO ip (date, time, current_ip) VALUES ('$date', '$time', '$new_ip')";
    //Execute SQL
    mysql_query($sql);
    //Get latest IP
    //$lastip = mysql_query(SELECT $selected FROM ip ORDER BY id DESC LIMIT 1);

    if ($old_ip == $current_ip)
    {

    }

    else {

    //Set Mail Settings
    $to = "justinmarmorato@gmail.com";
    $subject = "IP Address Change";
    $from = "no-reply@http://mar-remote-net.dns2.us";
    $headers = array (
    "From:" . $from,
    "Content-Type: Text/HTML"
    );
    //Create email
    $finalmessage = <<< EOT
    Hello! This is an automated message from the IPMS. An IP address change has been detected.
    <html>
    <style>
    table, th, td
    {
    border: 2px solid black;
    border-color:grey;
    }
    </style>
    <table class='table'>
    <tr>
    <td>Old IP</td><td>New IP</td><td>Time Detected</td>
    </tr>
    <tr>
    <td>$old_ip</td><td>$new_ip</td><td>$date  $time</td>
    </tr>
    </table>
    </html>
    EOT;
    mail($to,$subject,$finalmessage,  implode("\r\n", $headers));
    mail('justinmarmorato@gmail.com', 'Hello!', implode("\r\n", $headers));


    }
    ?>
4

1 回答 1

1

你的意思是说$new_ip而不是$current_ip在你的if陈述中?

$current_ip似乎没有在任何地方设置 - 如果是这种情况,$current_ip将始终未设置并且永远不会等于$old_ip.

于 2013-06-27T02:22:36.657 回答