Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ALberto França de Oliveir

IF matando codigo

Recommended Posts

GALERA DA UMA OLHADA NESSE CODIGO.. EU PRECISO QUE O SCRIPT TESTE TODOS OS IPS E PORTA QUE BUSCA NO BD... SO QUELE SO TA TESTANDO A PRIMEIRA LINHA Q BUSCA DA O RESULTADO E O SCRIPT MORRE COMO RESOLVER

 

 

 

<?php
$banco = "monitor";
$usuario = "root";
$senha = "vertrigo";
$hostname = "localhost";
$conn = mysql_connect($hostname,$usuario,$senha); mysql_select_db($banco) 
or die( "Não foi possível conectar ao banco MySQL");
 $sql=mysql_query("SELECT * FROM monitoramento");
 while($linha=mysql_fetch_array($sql)){
                    echo $status = $linha['status']."<br>";
                    echo $porta = $linha['porta']."<br>";
                    echo $IPAddress = $linha['ip'];
                    echo "<br><br>";
               
                   $fp=@fsockopen ($IPAddress, $porta, $errno, $errstr,5);
                   
                   }
                    if(!$fp){ $status=0;}
                    if($fp){ $status=1;}
                    if($fp) {                    
                    $sql=mysql_query("SELECT * FROM monitoramento WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1 and status='$status'");
                    $total=mysql_num_rows($sql);
                    $statusatual=mysql_fetch_array($sql);
                        if($total==1){  
                                
                        echo ("<font color='#336600'><b>Porta $porta Online</b></font><br>"); 
                        echo "Sem alteracao";
                            }else{
                                echo ("<font color='#336600'><b>Porta $porta Online</b></font><br>"); 
                                echo "o Sistema foi alterado e ja foi enviado email com alteraçao";
                                $atualização = mysql_query("update monitoramento set status=$status WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1");
                                // aqui vai um email informando que o sistema esta online
                                //header("LOCATION:pagina.html");
                            }
                   
                   }             
                    
                    if(!$fp){
                            $status=0;
                            $sql=mysql_query("SELECT * FROM monitoramento WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1 and status='$status'");
                            $total=mysql_num_rows($sql);
                            $statusatual=mysql_fetch_array($sql);
                                if($total==1){  
                                        
                                echo("<font color='#FF3333'><b>Porta $porta Offline</b></font><br>");
                                echo "Sem alteracao";
                                    } else{
                                        echo("<font color='#FF3333'><b>Porta $porta Offline</b></font><br>"); 
                                        echo "Seu Sistema caiu ja foi enviado email com alteraçao";
                                        $atualização = mysql_query("update monitoramento set status=$status WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1");
                                        // aqui vai um email informando que o sistema esta online

                                    }  }  

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que vi ele não ta testando só a primeira e sim só a ultima

isso pq seu while é fechado muito cedo

 

quando ele nessa linha, $fp, $status, $porta e $IPAdress vai ficar com o valor do ultimo loop

if (!$fp) {

coloque o colchete depois do ultimo IF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que vi ele não ta testando só a primeira e sim só a ultima

isso pq seu while é fechado muito cedo

 

quando ele nessa linha, $fp, $status, $porta e $IPAdress vai ficar com o valor do ultimo loop

if (!$fp) {

coloque o colchete depois do ultimo IF

Realmente do jeito que ta ele tsta o ultimo.. quando faço q vc falou.. ele so testa o primeiro...

Pelo que vi ele não ta testando só a primeira e sim só a ultima

isso pq seu while é fechado muito cedo

 

quando ele nessa linha, $fp, $status, $porta e $IPAdress vai ficar com o valor do ultimo loop

if (!$fp) {

coloque o colchete depois do ultimo IF

e ainda nao imprimie todos... quando coloco o colchete depois do ultimo if ele so imprime e tesat a primeira linha...

 

e simplesmente o script para

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei dizer exatamente o que seria, testa com esse codigo abaixo e diz o que dá

<?php

$banco = "monitor";
$usuario = "root";
$senha = "vertrigo";
$hostname = "localhost";
$conn = mysql_connect($hostname, $usuario, $senha);
mysql_select_db($banco)
        or die("Não foi possível conectar ao banco MySQL");
$sql = mysql_query("SELECT * FROM monitoramento");
error_reporting(E_ALL);
while ($linha = mysql_fetch_array($sql)) {
    echo $status = $linha['status'] . "<br>";
    echo $porta = $linha['porta'] . "<br>";
    echo $IPAddress = $linha['ip'];
    echo "<br><br>";

    $fp = @fsockopen($IPAddress, $porta, $errno, $errstr, 5);
    
    if (!$fp) {
        $status = 0;
        $sql = mysql_query("SELECT * FROM monitoramento WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1 and status='$status'");
        $total = mysql_num_rows($sql);
        $statusatual = mysql_fetch_array($sql);
        if ($total == 1) {

            echo("<font color='#FF3333'><b>Porta $porta Offline</b></font><br>");
            echo "Sem alteracao";
        } else {
            echo("<font color='#FF3333'><b>Porta $porta Offline</b></font><br>");
            echo "Seu Sistema caiu ja foi enviado email com alteraçao";
            $atualização = mysql_query("update monitoramento set status=$status WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1");
            // aqui vai um email informando que o sistema esta online
        }
    }
    if ($fp) {
        $status = 1;

        $sql = mysql_query("SELECT * FROM monitoramento WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1 and status='$status'");
        $total = mysql_num_rows($sql);
        $statusatual = mysql_fetch_array($sql);
        if ($total == 1) {

            echo ("<font color='#336600'><b>Porta $porta Online</b></font><br>");
            echo "Sem alteracao";
        } else {
            echo ("<font color='#336600'><b>Porta $porta Online</b></font><br>");
            echo "o Sistema foi alterado e ja foi enviado email com alteraçao";
            $atualização = mysql_query("update monitoramento set status=$status WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1");
            // aqui vai um email informando que o sistema esta online
            //header("LOCATION:pagina.html");
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Não sei dizer exatamente o que seria, testa com esse codigo abaixo e diz o que dá

<?php

$banco = "monitor";
$usuario = "root";
$senha = "vertrigo";
$hostname = "localhost";
$conn = mysql_connect($hostname, $usuario, $senha);
mysql_select_db($banco)
        or die("Não foi possível conectar ao banco MySQL");
$sql = mysql_query("SELECT * FROM monitoramento");
error_reporting(E_ALL);
while ($linha = mysql_fetch_array($sql)) {
    echo $status = $linha['status'] . "<br>";
    echo $porta = $linha['porta'] . "<br>";
    echo $IPAddress = $linha['ip'];
    echo "<br><br>";

    $fp = @fsockopen($IPAddress, $porta, $errno, $errstr, 5);
    
    if (!$fp) {
        $status = 0;
        $sql = mysql_query("SELECT * FROM monitoramento WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1 and status='$status'");
        $total = mysql_num_rows($sql);
        $statusatual = mysql_fetch_array($sql);
        if ($total == 1) {

            echo("<font color='#FF3333'><b>Porta $porta Offline</b></font><br>");
            echo "Sem alteracao";
        } else {
            echo("<font color='#FF3333'><b>Porta $porta Offline</b></font><br>");
            echo "Seu Sistema caiu ja foi enviado email com alteraçao";
            $atualização = mysql_query("update monitoramento set status=$status WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1");
            // aqui vai um email informando que o sistema esta online
        }
    }
    if ($fp) {
        $status = 1;

        $sql = mysql_query("SELECT * FROM monitoramento WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1 and status='$status'");
        $total = mysql_num_rows($sql);
        $statusatual = mysql_fetch_array($sql);
        if ($total == 1) {

            echo ("<font color='#336600'><b>Porta $porta Online</b></font><br>");
            echo "Sem alteracao";
        } else {
            echo ("<font color='#336600'><b>Porta $porta Online</b></font><br>");
            echo "o Sistema foi alterado e ja foi enviado email com alteraçao";
            $atualização = mysql_query("update monitoramento set status=$status WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1");
            // aqui vai um email informando que o sistema esta online
            //header("LOCATION:pagina.html");
        }
    }
}

Desta orma ele so testa a primeria linha e morre...ja fiz dessa forma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o erro deve estar dentro do IF
talvez o select errado
o que isso imprime esta certo? teste no banco
"SELECT * FROM monitoramento WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1 and status='$status'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o erro deve estar dentro do IF

talvez o select errado

o que isso imprime esta certo? teste no banco

"SELECT * FROM monitoramento WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1 and status='$status'"

ele ta imprimindo certinho... so q na hora de testar.. ele so testa uma linha...

 

como se o script parassae ao encontrar um valor true dentro de algum if...

 

mas ele tem que seguir o teste... ate testar todas as linhas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser essa parte

$atualização = mysql_query("update monitoramento set status=$status
WHERE porta='$porta' and ip='$IPAddress' and cliente_id=1");

$status esta sem aspas simples, já em outro parte do código está com, não sei como é o tipo do campo mas se não for numérico da erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.