[PHP] ping pagina werkt goed met warning

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik gebruik onderstaande code. het werkt prima hij zet netjes neer online of offline, maar zodat de te pingen host offline is krijg ik
"Warning: fsockopen(): unable to connect to 31.1.1.100:139 in D:\Intranet\Applicatie\test.php on line 31"
Ik snap er geen snars meer van, weet iemand hoe ik misschien de warning kan uitzetten of zo ?


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Helpdesk</td>
    <td><?
$helpdesk = fsockopen ("31.1.1.250", '139', $errno, $errstr, 10);
if (!$helpdesk) {
  echo "offline<br>\n";
} else {
  echo "online<br>\n";
  fclose($helpdesk);
}
      
?></td>
  </tr>
  <tr>
    <td>Lotus Notes </td>
    <td><?
$lotus = fsockopen ("31.1.1.27", '139', $errno, $errstr, 10);
if (!$lotus) {
  echo "offline<br>\n";
} else {
  echo "online<br>\n";
  fclose($lotus);
}
      
?></td>
  </tr>
  <tr>
    <td>100</td>
    <td><?
$fp = fsockopen ("31.1.1.100", '139', $errno, $errstr, 10);
if (!$fp) {
  echo "offline<br>\n";
} else {
  echo "online<br>\n";
  fclose($fp);
}
      
?></td>
  </tr>
  <tr>
    <td>Jack</td>
    <td><?
$fp = fsockopen ("31.1.1.127", '139', $errno, $errstr, 10);
if (!$fp) {
  echo "offline<br>\n";
} else {
  echo "online<br>\n";
  fclose($fp);
}
      
?></td>
  </tr>
</table>

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Een @ voor fsockopen zetten, of error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING). ;)

Maar wat had je zelf al gevonden en geprobeerd? Waarom werkte dat niet? Kun je volgende keer iets vollediger zijn? :)

[ Voor 43% gewijzigd door NMe op 25-05-2005 11:45 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Geweldig, heel erg bedankt,

Nu is hij perfect.

tnxs

Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Als ik jou was zou ik ook de timeout van fsockopen flink naar beneden doen. Als er nu een paar hosts offline zijn zit je redelijk lang te wachten op je output..

Acties:
  • 0 Henk 'm!

  • The Milkman
  • Registratie: Maart 2004
  • Laatst online: 12-09 20:42

The Milkman

█████░░░░░ 50%

Haha...
Hij checkt meerdere 'servers'. En blijkbaar is er een niet online of een traaaage verbinding...

[ Voor 22% gewijzigd door The Milkman op 25-05-2005 11:51 ]

𓆑 𓆑 𓆑 𓆑 𓆑 𓆑


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Het is mooier om die hosts even in een array te zetten. Dan kan je gemakkelijker uitbreiden enzovoorts.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?PHP
//ongetest enzo, alleen voor het idee
$hosts=array(
    'Lotus Notes' => array(
        'ip' => '10.0.0.10',
        'port' => '139',
    ),
    'web' => array(
        'ip' => '10.0.0.10',
        'port' => '139',
    ),
);

foreach($hosts AS $name => $sub) {
    echo $name.'->';
    if(fsockopen($sub['ip'], $sub['port'], $errno, $errstr, 10)!==false) {
        echo 'ok';
    }else{
        echo 'nope';
    }
    echo '<br>';
}
?>

Acties:
  • 0 Henk 'm!

Verwijderd

En om even duidelijk te maken aan de TS wat hij moet doen:

Als je een functieaanroep doet, en de output wegschrijft naar een waarde dan kan je daar tijdens het uitvoeren een check op doen:
PHP:
1
2
3
4
5
if ($waarde = functienaam('iets')) {
  echo 'jaa';
} else {
  echo 'nee';
}


Ik jou geval wordt dat dus:
PHP:
1
2
3
4
5
if ($cur_sock = fsockopen(...)) {
  echo 'jaa';
} else {
  echo 'nee';
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
djluc,

Dat werkt inderdaad beter.

Ik moet namelijk een hele rits met ip's erin gaan knallen.

Ga nu uitzoeken hoe ie die ip's en namen uit een db kan halen om de pagina te maken,
Ben nu in iedergeval al lekker op weg.

Acties:
  • 0 Henk 'm!

Verwijderd

offtopic:
Ik ga er even vanuit dat je niet "echt" het ipadres 31.1.1.x gebruikt? Of heb je dat als echt ip van je ISP gekregen? Of alleen voor intern gebruik? Zoja dan moet je binnen de reeksen 10.x.x.x of 192.168.x.x gaan zitten.


Ik zie trouwens dat je een verbinding maakt met NETBIOS, als je dan toch bezig bent dan kan je meteen wat "informatie" uitlezen over die computer. Ik heb daar "lang geleden" een scriptje voor gemaakt, die heb ik net even online gezet voor je. Mischien is het wel handig om te gebruiken.
http://baracuda.homeip.net/opensource/incl.NETBIOS.phps
Dan krijg je een array als deze:
code:
1
2
3
4
5
6
Array
(
    [computername] => ROCKLOAD
    [domain] => MELKWEG
    [username] => 
)

[ Voor 14% gewijzigd door Verwijderd op 25-05-2005 16:43 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik snap er nu geen snars meer van heb hem aangepast met sql verbinding maar hoe ik nu het script zo krijgt dat ie met die gegevens werkt

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Aanwezigheids Controle</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
require_once("inc_connect.php");
require_once("../class2.php");
require_once(HEADERF);
if (!empty($_POST)){
        // query 
        $query="SELECT user_login , user_ipadres 
         FROM informatrix
         ORDER BY user_login";
        $result = mysql_query($query) or die ("FOUT: " . mysql_error());
        $aantal = mysql_num_rows($result);
}else{
        
}

?>
<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><?PHP
           while (list($user_login, $user_ipadres) =
                       mysql_fetch_row($result)){
     
}


$hosts=array(
    'Lotus Notes' => array(
        'ip' => '31.1.1.27',
        'port' => '139',
    ), 
    'Affaire, Cora van' => array(
        'ip' => '31.1.1.236',
        'port' => '139',
    ),
);

foreach($hosts AS $name => $sub) {
    echo $name.'->';
    if(fsockopen($sub['ip'], $sub['port'], $errno, $errstr, 10)!==false) {
        echo 'ok';
    }else{
        echo 'nope';
    }
    echo '<br>';
} 
?></td>
  </tr>
</table>
<?php
require_once(FOOTERF);
?>
</body>
</html>

[ Voor 20% gewijzigd door Verwijderd op 25-05-2005 17:11 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Eeh? Vertel eens wat er precies mis gaat en waar. Ga ook zelf eerst eens debuggen om te kijken wat er mis gaat. Debuggen is niet iets wat wij voor je gaan doen.

-NMe- wees je er ook al op dat je eerst zelf het 1 en ander geprobeerd moet hebben, daarom vraagt ie er naar :) Zie ook P&W FAQ - De "quickstart" zodat je een idee krijgt wat wij eigenlijk aan jou vragen voordat je een topic opent ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja kijk ik heb alles nagelopen en zo, krijg ook geen error op de pagina of zo, dus lijkt erop dat de qeury goed uitgevoerd wordt.

Maar ja ik ga nog even verder neuzen.
Pagina: 1