Php if else逻辑块无论如何都会运行?

Php if else逻辑块无论如何都会运行?,php,email,variables,if-statement,Php,Email,Variables,If Statement,因此,编写这个脚本,现在我确实得到了正确的电子邮件,其中包含数据库中的旧IP地址,以及脚本中的新地址。我现在的问题是,无论旧的ip地址和当前的相同还是不同,电子邮件都会发送。这个脚本将每分钟运行一次,以检查动态ip地址的更改,所以我真的不想每分钟都收到一封电子邮件。我的目标是让它只在最后发布的IP与发现的IP不同时才发送电子邮件。现在,电子邮件正在发送IP是否不同。其他一切都可以。电子邮件发送得很好,其他一切都很好。唯一的问题是使用逻辑来决定何时发送电子邮件。(当新IP和旧IP不同时。) 当脚本

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

当脚本从数据库获取ip时,它看起来像123.123.123.123。来自的IP看起来也像123.123.123.123。(***示例)但如果数据库显示为123.123.123.123,当前为134.134.134.134,则应发送电子邮件

在比较中,我试过!=,==,我试着在then和else部分放置邮件块。问题是否由不同的数据类型引起?$new\u ip是字符串而$old\u 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));


    }
    ?>

您的
if
语句中是说
$new\u ip
而不是
$current\u ip


$current\u ip
似乎没有设置在任何地方——如果是这样的话,
$current\u ip
将始终处于未设置状态,并且永远不会等于
$old\u ip

var\u dump($old\u ip)和var\u dump($current\u ip),这两种情况下都会告诉您正在处理的数据类型,但是,我看不出有什么不同,如果他们从同一来源提取,则可能以换行符结尾。尝试
$new\u ip=trim($new\u ip)
您是否通过转换
INET\u ATON()
来存储您的ip地址?您在哪里声明/设置
$current\u ip
?我在你的代码中没有看到它,除了在if中,所以现在你的if是
if('134.134.134'==)
。如果($old\u ip==$new\u ip)
看起来$current\u ip从未设置过,您可能需要-
。我想你的意思是针对$new_ipSorry进行测试,当我说当前IP时,我的意思是$new_ipi将第二个var更改为$new_IP,但我仍然有同样的问题。没有echo$old_ip,使用var_dump($old_ip)var_dump($new_ip),输出是string(15)“123.123.123.123”string(167)“184.6.216.163”(123.123…是新的),它看起来像是我认为的
$old_ip
(184.6.216.163值)如果(trim($old\u ip)==trim($new\u ip))
,一种解决方案是将条件更改为
,但您可能还希望更改存储ip地址的方式以避免填充(这意味着将数据库中的列类型更改为,例如,
CHAR(15)
)。