Herkese merhaba,

Php de telnet kullanarak örneğin sunucu bilgilerini seçmek istiyorum araştırma fsockopen komutu kullanılıyor galiba tam olarak anlamadım bilen biri varsa yardım edebilir mi ?
<?php
$ip = 'serverip';
$port = 'serverport';
        if ( @!$bag = fsockopen( $ip, $port, $num, $error, 5 ) ) {
            $sonuc[0] = 0;
        } else {
            $sonuc[0] = 1;
            fwrite( $bag, "\x7f\x00\x00\x01" );
            fwrite( $bag, "\xf1\x00\x04\xff" );        
            $baglan = fgets( $bag );
            preg_match( '/(Clients=)([0-9]{1,}),/', $baglan, $online );
            $online[1] = $online[2] - 1;
            echo $online[1];
            fclose( $bag );
        }
?>

Kolay gelsin.
çok teşekkür ederim Lai ellerine sağlık.
Rica ederim ne demek.
Lai bende işe yaramadı neden acaba?
Adept
4.3
Tam olarak ne olmadi?..

Yardim isterken biraz bilgi verirseniz, nasil yapmaya calistiginizi izah ederseniz, bizim icin yardim etmek daha kolay olur.
Merhaba neran yapmak istediğim şey şu ;

ip port ile girdigim ip ler mesela (ip,port,ip,port,ip,port)
gibi girilen sunucu istatistikleri listelicek örnek aşagıdaki gibi?

Sunucu adi            Online Rekor İtems Npcs Guilds
xxx                       1          11     231     1      0
xxx                       3          21     212     1      0
xxx                       7          32     122     1      0
xxx                       9          11     434     1      0

şeklinde listeleme yapmak?
Adept
4.3
Yukarida, Lai'in verdigi kod ile tam olarak ne olmadigini söylemedigin icin, kendi kodumu verip izah ediyorum.

Asagidaki kodu en basa ekle.


function spherestatus($ip, $port, $construction = false)
{
	$telnet = @fsockopen($ip, $port, $errno, $errstr, 1);
	if (!$telnet) { 
		echo '<b class="server1">Offline</b>';
	} else { 
		@fputs ($telnet, '"');
		$telnet_info = fgets($telnet, 4096);
		if ($construction)
			echo '<span class="server3">Bakım</span>';
		else
			echo '<b class="server2">Online</b>';
		fclose($telnet);
		return substr($telnet_info, (strpos($telnet_info, "Clients=", 0) + 8), (strpos($telnet_info, ", Items=", 0) - (strpos($telnet_info, "Clients=", 0) + 8)));
	}
}

Daha sonra her sunucu icin mesela;

Sunucu ismi: <?php echo spherestatus(<ip>, <port>); ?>

Ile online sayisini ve sunucu durumunu gösterebilirsin. Geri kalan bilgileri göstermek icin, kodu kendine göre ayarlarsin. Bu kod sadece Online Sayisini gösteriyor.
Teşekkür ederim neran deneyecegim tekrar size dönecegim. fakat bir sorunum var ;

şimdi online sayısı ile items gosterior mesela online göstermek için "Clients" kodu tamam items ise "Items" ama guild ile npcs olmuyor onlari nasıl göstericez?

+ denedim şöyle hata war..

Parse error: syntax error, unexpected T_STRING in /home/xxxx/public_html/Statusbilgileri.php on line 2

2 ci satir ise şu ;

XXX UO <?php echo spherestatus(94.102.**.***, 2593); ?>

sorun neden oluyor ; danmı?

Bu konu Xearth tarafından düzenlendi(2010-10-23 18:27, 14 yıl önce)
Adept
4.3
IP'yi tirnak icersine alman gerekiyor.
function sphereStatus($ip,$port) {
       if ( @!$bag = fsockopen( $ip, $port, $num, $error, 5 ) ) {
            $sonuc[0] = 0;
        } else {
            $sonuc[0] = 1;
            fwrite($bag, "\x7f\x00\x00\x01");
            fwrite($bag, "\xf1\x00\x04\xff");        
            $baglan = fgets( $bag );
            preg_match('/(Clients=)([0-9]{1,}),/',$baglan, $online);
            $online[1] = $online[2] - 1;
			preg_match('/(Items=)([0-9]{1,}),/',$baglan,$items);
			$items[1] = $items[2] -1;
			preg_match('/(Chars=)([0-9]{1,}),/',$baglan,$chars);
			$chars[1] = $chars[2] -1;
            fclose( $bag );
			return array("$online[1]","$items[1]","$chars[1]");
        }
}

$sunucu1 = spherestatus('92.42.38.6','2593'); // runuo ipleri sitelerinde yazıyordu örnek olarak aldım
$sunucu2 = spherestatus('95.130.170.150','2593'); // runuo ipleri sitelerinde yazıyordu örnek olarak aldım

?>

<table border=1>
<tr>
<td>Sunucu İsmi</td>
<td>Online</td>
<td>Items</td>
<td>Chars</td>
</tr>
<tr>
<td>xxxxx server</td>
<td><?php echo "$sunucu1[0]"; ?></td>
<td><?php echo "$sunucu1[1]"; ?></td>
<td><?php echo "$sunucu1[2]"; ?></td>
</tr>
<tr>
<td>xxxxx server</td>
<td><?php echo "$sunucu2[0]"; ?></td>
<td><?php echo "$sunucu2[1]"; ?></td>
<td><?php echo "$sunucu2[2]"; ?></td>
</tr>
</table>

senin için düzenledim bende bu şekilde çalışıyor bir dene istersen
deniyorum aldarson buraya geri dönücem.
aldarson denedimde benim host'da kod çalışmıyor sen test linkini verebilirmisin kurulu bi yer varmı?

+ neran senın verdıgın kod hep offline dior örnek yaptıgım bak ;

<?php
function spherestatus($ip, $port, $construction = false)
{
$telnet = @fsockopen($ip, $port, $errno, $errstr, 1);
if (!$telnet) {
echo '<b class="server1">Offline</b>';
} else {
@fputs ($telnet, '"');
$telnet_info = fgets($telnet, 4096);
if ($construction)
echo '<span class="server3">Bakım</span>';
else
echo '<b class="server2">Online</b>';
fclose($telnet);
return substr($telnet_info, (strpos($telnet_info, "Clients=", 0) + 8), (strpos($telnet_info, ", Items=", 0) - (strpos($telnet_info, "Clients=", 0) + 8)));
}
}
?>
Sphere UO : <?php echo spherestatus('95.130.170.150', '2593'); ?>

her ip offline dior neden olabilir?

Bu konu Xearth tarafından düzenlendi(2010-10-25 10:02, 14 yıl önce)
Adept
4.3
Port'u neden tirnak icersine aldin? =)
ne bilek tekrar denim :D peki guilds ile chars onlarıda yan yana yapsaydın items fln ? sunucu adi olayi? örnek şöyle yapsan neran liste ama :

Sunucu adi  online items npcs guilds
xxx             1        1       1      1

walla çok makbule geçer bir türlü yapamadım?

neran port olmadı ya port tırnak işareti kaldırdım gene aynı :D

Link bak?

Bu konu Xearth tarafından düzenlendi(2010-10-26 19:29, 14 yıl önce)
benimkide localde çalışıyor bi dek ilginç D:



Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.