Goedeavond,

Ik heb een script gevonden in de libary die pingt via een php script maar deze gaat alleen naar de localhost en poort 80.

Ik zoek er een die op poort 2106 en 7777 scant met vast instelbare ip adres.
Deze zal dan online en offline moeten weer geven. Dit zal voor mij geen probleem zijn om aan te maken.
Alleen ben ik nog niet zo goed als jullie dat ik het script kan schrijven maar alleen kan aanpassen.

Graag zou ik jullie willen vragen of jullie hiervoor enig zins tijd voor vrij kunnen maken.
Alle credits naar die persoon en zal worden vernoemt op die pagibna waar hij ko9mt te staan.

Mijn dank is groot,

Mathijs
Nou, dat is dan gewoon een andere port aanroepen.
Maar ik verwacht wel dat die 'ping' dan anders is.
Deze snippet zou moeten voldoen:


<?php 

function online($ip, $port = 80){
	$fp = @fsockopen($ip, $port, $errno, $errstr, 1);
	if($fp){
		@fclose($fp);           
		return true;
	}else{
		return false;
	}
}

echo online($_GET['ip'], intval($_GET['port'])) ? 'online' : 'offline';
Uhm, Ja dat is inderdaad mogelijk enkel de scripts die ik zo kan vinden werken op een manier dat hij alleen de localhost kan aanroepen met poort 80 ben ik bang. Ook geeft hij alleen de ms tijd aan en niet of hij online of offline is.

De andere scripts die ik zo 123 kan vinden op de site moet de gebruiker een IP adrees en poort opgeven en dat is niet echt de bedoeling.

Mijn ervaring met PHP (sites) is voor grote aanpassingen echter wat gevorderder dan php in het algemeen en zal dan ook geen script zelf in elkaar kunnen zetten. Want daar ban ik dan wel zeer erge beginner mee :)

Het aanpassen van scripts zoals poort en ip adres en online en offline tekst toevoegen zal mijn wel lukken.
Maar dan zal wel het verdere script zodoende klaar moeten zijn en gemakkelijk te wijzigen. Helaas zal ik verder een behoorlijke opleiding moeten gaan volgen om een werkende script te schrijven.

Daarom hoopte ik dat iemand me daarin zou kunnen helpen.

Zoals ik beloof en dat mag nagekeken worden zal op de pagina('s) waar deze script zal worden geplaatst de credits naar de desbetreffende persoon worden geleidt.

Bedankt alvast voor al de moeite,

Mathijs
Boaz schreef op 21.12.2009 22:43
Deze snippet zou moeten voldoen:


<?php 

function online($ip, $port = 80){
	$fp = @fsockopen($ip, $port, $errno, $errstr, 1);
	if($fp){
		@fclose($fp);           
		return true;
	}else{
		return false;
	}
}

echo online($_GET['ip'], intval($_GET['port'])) ? 'online' : 'offline';


Beste Boaz,

Waarschijnlijk zal dit wel lukken maar zal hij werken als ik het volgende doe?


<?php 

function online($ip = 217.148.94.123, $port = 2106){
	$fp = @fsockopen($ip, $port, $errno, $errstr, 1);
	if($fp){
		@fclose($fp);           
		return true;
	}else{
		return false;
	}
}

echo online($_GET['ip'], intval($_GET['port'])) ? 'online' : 'offline';

function online($ip = 217.148.94.123, $port = 7777){
	$fp = @fsockopen($ip, $port, $errno, $errstr, 1);
	if($fp){
		@fclose($fp);           
		return true;
	}else{
		return false;
	}
}

echo online($_GET['ip'], intval($_GET['port'])) ? 'online' : 'offline';


Alvast bedankt Boaz
Let er wel op dat een ip-adres een string is, en daarom tussen aanhalingstekens moet: $ip = '217.148.94.123'. Bij $port hoeft dat niet, dat wordt gezien als een integer (getal).

Verder hoef je niet twee keer dezelfde functie aan te maken (je krijgt zelfs een foutmelding); je kan ook opgeven dat $port 2106 of 7777 moet zijn. Is het voor een spel of iets dergelijks? Vanwaar twee verschillende poorten?
Kasper schreef op 21.12.2009 22:58
Let er wel op dat een ip-adres een string is, en daarom tussen aanhalingstekens moet: $ip = '217.148.94.123'. Bij $port hoeft dat niet, dat wordt gezien als een integer (getal).

Verder hoef je niet twee keer dezelfde functie aan te maken (je krijgt zelfs een foutmelding); je kan ook opgeven dat $port 2106 of 7777 moet zijn. Is het voor een spel of iets dergelijks? Vanwaar twee verschillende poorten?


Beste Kasper,

Inderdaad het is voor een gameserver die ik heb opgebouwd op een van mijn servers in DCG amsterdam en zou graag voor beide servers die 2 verschillende poorten heeft moeten laten zien dat hij online of offline is.

Trouwens bedankt voor de ip adres conflict ik was inderdaad de " " vergeten.

@Mathijs: het doel van een function is dat je die maar 1x aan hoeft te maken en dat je daar niet zelf al waardes in gaat zetten, dus totaal verkeerd wat je hebt gedaan.
Wat 't script van Boaz doet is 't IP en PORT uit een GET halen, dus als je t script op status.php zet moet je 'm zo aanroepen status.php?ip=123.45.67.89&port=8
Maar je kan die GET ook vervangen door je eigen IP.

<?php

function online($ip, $port){
$fp = @fsockopen($ip, $port, $errno, $errstr, 1);
if($fp){
@fclose($fp);
return true;
}else{
return false;
}
}

echo 'Poort 2106 is '.online('217.148.94.123', intval(2106)) ? 'online' : 'offline';
echo '<br/>Poort 7777 is '.online('217.148.94.123', intval(7777)) ? 'online' : 'offline';
?>
@Turmin,

Haha, In ieder geval werkt jouw script wel 90% en ben ik nog steeds een persoon die een grote php boek tegen mijn hoofd moet slaan.

Nu is alleen het probleem met het script dat hij wel aangeeft dat hij online is maar dan 2x achter elkaar en dan geen beschrijving er voor.
Kijk maar:
http://www.vinken-solutions.nl/servers.php
Zo kan 't ook:
<?php
echo 'Poort 2106 is ';
echo online('217.148.94.123', intval(2106)) ? 'online' : 'offline';
echo '<br/>Poort 7777 is ';
echo online('217.148.94.123', intval(7777)) ? 'online' : 'offline';
?>
@Turmin

Haha, het lijkt allemaal zo makkelijk en toch lukt het jouw wel en mij niet.
Maar inderdaad dat nieuwe stukje werkt uitstekend.

Maar is het mogelijk om via zo'n string een kleur toe te wijzen aan online of offline of zelfs een plaatje.
Of is dat zeer ingewikkeld.

Als dat zo is ben ik hier al zeer te vrede mee.

Reageren