note 104188 added to function.fsockopen
| From: | Genert at osu1 dot php dot net | Date: | Tue, 31 May 2011 07:50:58 +0000 |
| Subject: | note 104188 added to function.fsockopen | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-180112@lists.php.net to get a copy of this message | ||
For getting information of game server use:
This uses Wolfenstein:Enemy Territory port.
Example is here: http://genert.impact.pri.ee/ser/server.php?ip=188.165.209.117:29000
<?
$ip = $_GET['ip'];
$port = $_GET['port'];
if (preg_match("/(.+):([0-9]*)/", $ip, $array)) {
$ip = gethostbyname($array[1]);
$port = $array[2];
} if (!isset($port) || $port == null) {
$port = 27960;
}
$fp = fsockopen('udp://' . $ip, $port, $errno, $errstr);
if (!$fp) {
$status['connected'] = false;
} else {
fputs($fp, "ËËËËgetstatus\n");
socket_set_timeout($fp, 2);
$serverstatus = fread($fp, 5000);
fclose($fp);
$serverstatus = split("\n", $serverstatus);
$info['total'] = count($serverstatus);
$info['start'] = ($info['total'] > 3 ? 4 : 3);
for ($i = 0; $i < $info['start']; $i++) {
if ($i == 0) {
if ($serverstatus[0]) {
$status['connected'] = true;
} else {
$status['connected'] = false;
break;
}
} elseif ($i == 1) {
$status['gameinfo'] = true;
$gameinfo = split("[\\]", $serverstatus[1]);
for ($j = 1; $j < count($gameinfo) - 1; $j++) {
$k++;
$ginfo[$k] = $gameinfo[$j++] . "\\" . $gameinfo[$j];
}
foreach ($ginfo as $key => $data) {
list($settings[$key]['cvar'], $settings[$key]['value']) =
split("[\\]", $data, 2);
}
} elseif ($i == 2) {
if ($info['total'] > 3) {
$status['players'] = true;
for ($l = 2; $l < ($info['total'] - 1); $l++) {
$m++;
list($players[$m]['score'], $players[$m]['ping'],
$players[$m]['name']) = split(" ", $serverstatus[$l], 3);
if (getValue("gamename") == "osp") {
$players[$m]['name'] = fixOSPColors(substr($players[$m]['name'], 1, -1));
} else {
$players[$m]['name'] = fixColors(substr($players[$m]['name'], 1, -1));
}
}
} else {
$status['players'] = false;
}
if ($i == ($info['start'] - 1) && $info['start'] == 3) {
$status['disconnected'] = true;
}
} elseif ($i == ($info['start'] - 1)) {
$status['disconnected'] = true;
}
}
}
?>
----
Server IP: 217.146.68.100
Probable Submitter: 90.191.146.97
----
Manual Page -- http://www.php.net/manual/en/function.fsockopen.php
Edit -- https://master.php.net/note/edit/104188
Del: integrated -- https://master.php.net/note/delete/104188/integrated
Del: useless -- https://master.php.net/note/delete/104188/useless
Del: bad code -- https://master.php.net/note/delete/104188/bad+code
Del: spam -- https://master.php.net/note/delete/104188/spam
Del: non-english -- https://master.php.net/note/delete/104188/non-english
Del: in docs -- https://master.php.net/note/delete/104188/in+docs
Del: other reasons-- https://master.php.net/note/delete/104188
Reject -- https://master.php.net/note/reject/104188
Search -- https://master.php.net/manage/user-notes.php