PHP zoek-script werkt niet helemaal

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roland Janzzen

Roland Janzzen

14/03/2011 11:37:57
Quote Anchor link
Hallo,

Ik heb een script en ik kom er niet uit wat er ontbreekt of wat er fout gaat.
Wat is de bedoeling? Op een site wordt een lijst weergegeven van mensen die een bepaald programma hebben draaien en daarmee online zijn. De status (online, busy of offline) wilde ik graag via PHP zichtbaar maken op een site.

Dit is het script:
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

$callsign
= $params->get( 'callsign', 6 );
$node = $params->get( 'node', 6 );

$suche = '<td>'.$callsign.'(.*)</td>';

echo 'Node: '.$node.' ('.$callsign.')<br>';

$file = fopen ("http://www.echolink.org/logins.jsp", "r");
if (!$file) {
    echo "<b>ERROR</b>";
    exit;
}

$status = 'OFFLINE';
while (!feof ($file)) {
    $line = fgets ($file, 1024);
    if (eregi ($suche , $line, $out)) {
        if(stristr($out[1], '>BUSY<') !== FALSE) {
            $status = 'BUSY';
        }

        if(stristr($out[1], '>ON<') !== FALSE) {
            $status = 'ONLINE';
        }


    break;
    }
}

echo 'Status: <b>'.$status.'</b>';
fclose($file);
?>


De output wordt dus ongeveer:

Node: 547856 (XX5FGT-R)
Status: ONLINE


Het script wilde ik aanroepen via een URL, dus:
script.php?callsign=XX5FGT-R&node=547856

Kan iemand mij hiermee helpen? Momenteel zie ik alleen een witte pagina, er gaat dus iets verkeerd, maar ik kom er niet achter wat er nu mis gaat.

Alvast bedankt,

Roland.
 
PHP hulp

PHP hulp

27/12/2024 09:32:53
 
- Ariën  -
Beheerder

- Ariën -

14/03/2011 11:46:27
Quote Anchor link
Bovenaan plaatsen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
?>
 
Roland Janzzen

Roland Janzzen

14/03/2011 11:54:02
Quote Anchor link
Ah, hoeft al niet meer.
Na veel rommelen zelf al de oplossing gevonden, dit werkt wel:

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

if ( isset ( $_GET['callsign'] ) ) {
  $callsign = $_GET['callsign'];


if ( isset ( $_GET['node'] ) ) {
  $node = $_GET['node'];


$suche = '<td>'.$callsign.'(.*)</td>';

echo 'Node: '.$node.' ('.$callsign.')<br>';

$file = fopen ("http://www.echolink.org/logins.jsp", "r");
if (!$file) {
    echo "<b>ERROR</b>";
    exit;
}

$status = 'OFFLINE';
while (!feof ($file)) {
    $line = fgets ($file, 1024);
    if (eregi ($suche , $line, $out)) {
        if(stristr($out[1], '>BUSY<') !== FALSE) {
            $status = 'BUSY';
        }

        if(stristr($out[1], '>ON<') !== FALSE) {
            $status = 'ONLINE';
        }


    break;
    }
}
}
}

echo 'Status: <b>'.$status.'</b>';
fclose($file);
?>
 
- SanThe -

- SanThe -

14/03/2011 11:58:00
Quote Anchor link
Eregi() is antiek. Niet meer gebruiken dus. Gebruik preg_match().
 
Roland Janzzen

Roland Janzzen

14/03/2011 12:32:26
Quote Anchor link
Aha, dat preg_match werkt helaas niet, dan staat alles gewoonlijk op offline.
Voorts heb ik OOK ontdekt dat er niet gezocht wordt op de exacte callsign.
Dus, XX5AAA geeft hetzelfde weer als XX5AAA-R.

Stel dat XX5AAA-R online is, en XX5AAA is offline, dan geeft het script voor BEIDE waardes aan dat ze allebei online zijn, dat is dus fout.

Ik ga gelijk even verder met dat preg_match, kijken of dat lukt.
Als iemand nog tips weet om op de exacte waardes te laten zoeken, hoor ik het graag.

Roland.

Toevoeging op 14/03/2011 13:05:19:

Hoe zit dat met preg_match?
Wat ik ook doe, ik krijg het niet werken.
Zoiets als dit:

(preg_match('{\[[a-z]{5,10}]}i', $search, $line, $out)

zou toch moeten werken volgens google, maar dat doet't niet...

Roland.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.