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 セクションにメール ブロックを入れてみました。問題は、異なるデータ型によって引き起こされる可能性がありますか? $old_ip は整数ですが、$new_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 に答える