2013-06-27 5 views
0

Итак, написание этого скрипта, и теперь я получаю правильный адрес электронной почты, со старым IP-адресом из базы данных и новым адресом из сценария. Моя проблема теперь в том, что старый IP-адрес и текущий те же или разные, отправляет электронное письмо. Этот скрипт будет запускаться каждую минуту, чтобы проверить динамические изменения IP-адресов, поэтому я не хочу, чтобы каждый раз электронная почта. Моя цель состоит в том, чтобы он отправлял электронную почту ТОЛЬКО, если последний опубликованный IP-адрес ОТЛИЧАЕТСЯ от обнаруженного. Теперь, электронная почта посылает, что IP-адреса различны или нет. Все остальное работает. Письмо отправляется отлично, а все остальное работает отлично. Единственная проблема заключается в использовании логики, чтобы решить, когда отправить электронное письмо. (Когда новый и старый IP-адреса разные.)Php if else логический блок работает независимо от того, что?

Когда скрипт получает там ip из базы данных, он выглядит как 123.123.123.123. IP-адрес от http://www.ipaddresscheck.comlu.com/ip.php также выглядит как 123.123.123.123. (*** Пример) Но если в базе данных указано 123.123.123.123, а текущий - 134.134.134.134, он должен отправить электронное письмо.

Для сравнения, я пробовал! =, ==, и я попытался помещать почтовый блок в разделы then и else. Может ли проблема быть вызвана разными типами данных? Является ли $ new_ip строкой, а $ old_ip является целым числом? Im только 14, так ... Yea.

<?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 = "[email protected]"; 
    $subject = "IP Address Change"; 
    $from = "[email protected]://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('[email protected]', 'Hello!', implode("\r\n", $headers)); 


    } 
    ?> 
+0

var_dump ($ old_ip) и var_dump ($ current_ip), расскажут вам, какой тип данных вы имеете дело в обоих случаях, однако я не вижу, чтобы это отличалось, если theyre вытягивается из того же источника – KyleK

+0

Возможно, $ new_ip' заканчивается в новой строке. Попробуйте '$ new_ip = trim ($ new_ip);' – Barmar

+0

вы сохраняете свой ip-адрес, преобразовывая 'INET_ATON()'? – DevZer0

ответ

1

вы имели в виду сказать $new_ip вместо $current_ip в вашем if заявлении?

$current_ip, похоже, не установлен нигде - если это так, то $current_ip всегда будет отключен и никогда не будет равен $old_ip.

+0

Извините, когда я сказал, что текущий IP-адрес имел в виду $ new_ip –

+0

, я изменил второй var на $ new_ip, но у меня все еще такая же проблема. без echo $ old_ip, а с var_dump ($ old_ip) var_dump ($ new_ip) вывод - строка (15) "123.123.123.123" строка (167) "184.6.216.163" (123.123 ... новен) –

+0

Это похоже, что значение того, что я считаю «$ old_ip» (значение 184.6.216.163), дополняется пробелами - одним из решений было бы изменить ваше условие на 'if (trim ($ old_ip) == trim ($ new_ip)) ', но вы также можете изменить способ хранения IP-адресов, чтобы избежать заполнения (это означало бы изменение типа столбца в базе данных, например,« CHAR (15) »). – CBerube