Skocz do zawartości
  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

X3nO

Biała karta na IPB po dodaniu kodu PHP.

Promowane odpowiedzi

X3nO    137

Witam, mam problem, po dodaniu kodu PHP

				<php>
					require "./SampQueryAPI.php";
				</php>
				{$output}
<?php
require "SampQueryAPI.php";
$query = new SampQueryAPI('188.68.249.130', '3656 ');
if($query->isOnline())
{
	$aInformation = $query->getInfo();
	$aServerRules = $query->getRules();
	>
	<b>General Information</b>
	<table width="400">
		<tr>
			<td>Hostname</td>
			<td><= htmlentities($aInformation['hostname']) ></td>
		</tr>
		<tr>
			<td>Gamemode</td>
			<td><= htmlentities($aInformation['gamemode']) ></td>
		</tr>
		<tr>
			<td>Players</td>
			<td><= $aInformation['players'] > / <= $aInformation['maxplayers'] ></td>
		</tr>
		<tr>
			<td>Map</td>
			<td><= htmlentities($aInformation['mapname']) ></td>
		</tr>
		<tr>
			<td>Weather</td>
			<td><= $aServerRules['weather'] ></td>
		</tr>
		<tr>
			<td>Time</td>
			<td><= $aServerRules['worldtime'] ></td>
		</tr>
		<tr>
			<td>Version</td>
			<td><= $aServerRules['version'] ></td>
		</tr>
		<tr>
			<td>Password</td>
			<td><= $aInformation['password']  'Yes' : 'No' ></td>
		</tr>
	</table>

mam białą kartę na forum, wie ktoś co zrobić?

Edytowane przez X3nO

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
JanekBack    2

Dziwisz się? Pomyśl jeszcze raz. 

[Nie podałeś całego kodu jeśli się nie myle, wiec jesli tak to się nie liczy]Nie widnieje tutaj skąd ma pobierać np grafike, css, HTML nic po prostu nic. 

 

W kodzie brakuje, }

 

{
    $aInformation = $query ->getInfo();
    $aServerRules = $query ->getRules();
    }

Edytowane przez JanekBack

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
X3nO    137

Mimo wszystko biała karta.

SampQueryAPI.php:

<?php
/**
 *	This API connects directly to the server, without any need for any
 *	middlemen connections.
 *	Your server must have fsockopen enabled in order to access the 
 *	functions that have been made available from this.
 *
 *	@package sampAPI
 *	@version 1.2
 *	@author David Weston <westie@typefish.co.uk>
 *	@copyright 2010; http://www.typefish.co.uk/licences/
 */
class SampQueryAPI
{
	/**
	 *	@ignore
	 */
	private $rSocket = false;
	/**
	 *	@ignore
	 */
	private $aServer = array();
	/**
	 *	Creation of the server class.
	 *
	 *	@param string $sServer Server IP, or hostname.
	 *	@param integer $iPort Server port
	 */
	public function __construct($sServer, $iPort = 7777)
	{
		/* Fill some arrays. */
		$this->aServer[0] = $sServer;
		$this->aServer[1] = $iPort;
		/* Start the connection. */	
		$this->rSocket = fsockopen('udp://'.$this->aServer[0], $this->aServer[1], $iError, $sError, 2);
		if(!$this->rSocket)
		{
			$this->aServer[4] = false;
			return;
		}
		socket_set_timeout($this->rSocket, 2);
		$sPacket = 'SAMP';
		$sPacket .= chr(strtok($this->aServer[0], '.'));
		$sPacket .= chr(strtok('.'));
		$sPacket .= chr(strtok('.'));
		$sPacket .= chr(strtok('.'));
		$sPacket .= chr($this->aServer[1] & 0xFF);
		$sPacket .= chr($this->aServer[1] >> 8 & 0xFF);
		$sPacket .= 'p4150';
		fwrite($this->rSocket, $sPacket);
		if(fread($this->rSocket, 10))
		{
			if(fread($this->rSocket, 5) == 'p4150')
			{
				$this->aServer[4] = true;
				return;
			}
		}
		$this->aServer[4] = false;
	}
	/**
	 *	@ignore
	 */
	public function __destruct()
	{
		@fclose($this->rSocket);
	}
	/**
	 *	Used to tell if the server is ready to accept queries.
	 *
	 *	If false is returned, then it is suggested that you remove the
	 *	class from active use, so that you can reload the class if needs
	 *	be.
	 *
	 *	@return bool true if success, false if failure.
	 */
	public function isOnline()
	{
		return isset($this->aServer[4])  $this->aServer[4] : false;
	}
	/**
	 *	This function is used to get the server information.
	 *
	 *	<code>
	 *	Array
	 *	(
	 *		[password] => 0
	 *		[players] => 9
	 *		[maxplayers] => 500
	 *		[hostname] => Everystuff Tr3s [MAD]oshi (03a Final) [FIXED]
	 *		[gamemode] => Stunt/Race/DM/FR Everystuff
	 *		[mapname] => Everystuff
	 *	)
	 *	</code>
	 *
	 *	@return array Array of server information.
	 */
	public function getInfo()
	{
		@fwrite($this->rSocket, $this->createPacket('i'));
		fread($this->rSocket, 11);
		$aDetails['password'] = (integer) ord(fread($this->rSocket, 1));
		$aDetails['players'] = (integer) $this->toInteger(fread($this->rSocket, 2));
		$aDetails['maxplayers'] = (integer) $this->toInteger(fread($this->rSocket, 2));
		$iStrlen = ord(fread($this->rSocket, 4));
		if(!$iStrlen) return -1;
		$aDetails['hostname'] = (string) fread($this->rSocket, $iStrlen);
		$iStrlen = ord(fread($this->rSocket, 4));
		$aDetails['gamemode'] = (string) fread($this->rSocket, $iStrlen);
		$iStrlen = ord(fread($this->rSocket, 4));
		$aDetails['mapname'] = (string) fread($this->rSocket, $iStrlen);
		return $aDetails;
	}
	/**
	 *	This function gets a basic list of all the players on the server.
	 *
	 *	Note as of 0.3.0, the amount of players that can be retrieved is
	 *	limited to 100. This means if there are more players than 100,
	 *	then no data will be returned, and it will be a blank array.
	 *
	 *	<code>
	 *	Array
	 *	(
	 *		[0] => Array
 	 *			(
	 *				[nickname] => K1nNngO
	 *				[score] => 72
	 *			)
	 *		
	 *		[1] => Array
	 *			(
	 *				[nickname] => [kikOo]
	 *				[score] => 150
	 *			)
	 *
	 *		[and so on...]
	 *	)
	 *	</code>
	 *
	 *	@return array Array of player information.
	 */
	public function getBasicPlayers()
	{
		@fwrite($this->rSocket, $this->createPacket('c'));
		fread($this->rSocket, 11);
		$iPlayerCount = ord(fread($this->rSocket, 2));
		$aDetails = array();
		if($iPlayerCount > 0)
		{
			for($iIndex = 0; $iIndex < $iPlayerCount; ++$iIndex)
			{
				$iStrlen = ord(fread($this->rSocket, 1));
				$aDetails[] = array
				(
					"nickname" => (string) fread($this->rSocket, $iStrlen),
					"score" => (integer) $this->toInteger(fread($this->rSocket, 4)),
				);
			}
		}
		return $aDetails;
	}
	/**
	 *	This function gets a detailed list of all the players on the server.
	 *
	 *	Note as of 0.3.0, the amount of players that can be retrieved is
	 *	limited to 100. This means if there are more players than 100,
	 *	then no data will be returned, and it will be a blank array.
	 *
	 *	<code>
	 *	Array
	 *	(
	 *		[0] => Array
	 *			(
	 *				[playerid] => 0
	 *				[nickname] => K1nNngO
 	 *				[score] => 72
	 *				[ping] => 195
	 *			)
	 *	
	 *		[1] => Array
	 *			(
	 *				[playerid] => 1
	 *				[nickname] => [kikOo]
	 *				[score] => 150
	 *				[ping] => 375
	 *			)
	 *
	 *		[and so on...]
	 *	)
	 *	</code>
	 *
	 *	@return array Array of player information.
	 */
	public function getDetailedPlayers()
	{
		@fwrite($this->rSocket, $this->createPacket('d'));
		fread($this->rSocket, 11);
		$iPlayerCount = ord(fread($this->rSocket, 2));
		$aDetails = array();
		for($iIndex = 0; $iIndex < $iPlayerCount; ++$iIndex)
		{
			$aPlayer['playerid'] = (integer) ord(fread($this->rSocket, 1));
			$iStrlen = ord(fread($this->rSocket, 1));
			$aPlayer['nickname'] = (string) fread($this->rSocket, $iStrlen);
			$aPlayer['score'] = (integer) $this->toInteger(fread($this->rSocket, 4));
			$aPlayer['ping'] = (integer) $this->toInteger(fread($this->rSocket, 4));
			$aDetails[] = $aPlayer;
			unset($aPlayer);
		}
		return $aDetails;
	}
	/**
	 *	This function gets all the server rules from the server.
	 *
	 *	Rules in this context are not player rules, they are client rules,
	 *	like the weather of the server, time, and so on. (Custom rules,
	 *	when supported by a SA-MP plugin, will be included here.) 
	 *
	 *	<code>
	 *	Array
	 *	(
	 *		[gravity] => 0.007900
	 *		[mapname] => Everystuff
	 *		[version] => 0.3a
	 *		[weather] => 0
	 *		[weburl] => samp.madoshi.net
	 *		[worldtime] => 12:00
	 *	)
	 *	</code>
	 *
	 *	@return array Array of server rules.
	 */
	public function getRules()
	{
		@fwrite($this->rSocket, $this->createPacket('r'));
		fread($this->rSocket, 11);
		$iRuleCount = ord(fread($this->rSocket, 2));
 		$aReturn = array();
		for($iIndex = 0; $iIndex < $iRuleCount; ++$iIndex)
		{
			$iStrlen = ord(fread($this->rSocket, 1));
			$sRulename = (string) fread($this->rSocket, $iStrlen);
			$iStrlen = ord(fread($this->rSocket, 1));
			$aDetails[$sRulename] = (string) fread($this->rSocket, $iStrlen);
		}
		return $aDetails;
	}
	/**
	 *	@ignore
	 */
	private function toInteger($sData)
	{
		if($sData === "")
		{
			return null;
		}
 		$iInteger = 0;
 		$iInteger += (ord($sData[0]));
 		if(isset($sData[1]))
 		{
 			$iInteger += (ord($sData[1]) << 8);
 		}
 		if(isset($sData[2]))
 		{
 			$iInteger += (ord($sData[2]) << 16);
 		}
 		if(isset($sData[3]))
 		{
 			$iInteger += (ord($sData[3]) << 24);
 		}
 		if($iInteger >= 4294967294)
		{
 			$iInteger -= 4294967296;
		}
 		return $iInteger;
	}
	/**
	 *	@ignore
	 */
	private function createPacket($sPayload)
	{
		$sPacket = 'SAMP';
		$sPacket .= chr(strtok($this->aServer[0], '.'));
		$sPacket .= chr(strtok('.'));
		$sPacket .= chr(strtok('.'));
		$sPacket .= chr(strtok('.'));
		$sPacket .= chr($this->aServer[1] & 0xFF);
		$sPacket .= chr($this->aServer[1] >> 8 & 0xFF);
		$sPacket .= $sPayload;
		return $sPacket;
	}
}

Edytowane przez X3nO

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
l3szcz    420

                <php>
                    require "./SampQueryAPI.php";
                </php>
                {$output}
<?php
require "SampQueryAPI.php";

 

Masz błąd ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
X3nO    137
                <php>
                    require "./SampQueryAPI.php";
                </php>
                {$output}

Nawet jak to usunę to nie działa

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
X3nO    137

Teraz u mnie to tak wygląda:

<?php
require "SampQueryAPI.php";
$query = new SampQueryAPI('188.68.249.130', '3656 ');
if($query->isOnline())
{
	$aInformation = $query->getInfo();
	$aServerRules = $query->getRules();
	>
	<b>General Information</b>
	<table width="400">
		<tr>
			<td>Hostname</td>
			<td><= htmlentities($aInformation['hostname']) ></td>
		</tr>
		<tr>
			<td>Gamemode</td>
			<td><= htmlentities($aInformation['gamemode']) ></td>
		</tr>
		<tr>
			<td>Players</td>
			<td><= $aInformation['players'] > / <= $aInformation['maxplayers'] ></td>
		</tr>
		<tr>
			<td>Map</td>
			<td><= htmlentities($aInformation['mapname']) ></td>
		</tr>
		<tr>
			<td>Weather</td>
			<td><= $aServerRules['weather'] ></td>
		</tr>
		<tr>
			<td>Time</td>
			<td><= $aServerRules['worldtime'] ></td>
		</tr>
		<tr>
			<td>Version</td>
			<td><= $aServerRules['version'] ></td>
		</tr>
		<tr>
			<td>Password</td>
			<td><= $aInformation['password']  'Yes' : 'No' ></td>
		</tr>
	</table>
	<br />
	<b>Online Players</b>
	<?php
	$aPlayers = $query->getDetailedPlayers();
	if(!is_array($aPlayers) || count($aPlayers) == 0)
	{
		echo '<br /><i>None</i>';
	}
	else
	{
		>
		<table width="400">
			<tr>
				<td><b>Player ID</b></td>
				<td><b>Nickname</b></td>
				<td><b>Score</b></td>
				<td><b>Ping</b></td>
			</tr>
		<?php
		foreach($aPlayers as $sValue)
		{
			>
			<tr>
				<td><= $sValue['playerid'] ></td>
				<td><= htmlentities($sValue['nickname']) ></td>
				<td><= $sValue['score'] ></td>
				<td><= $sValue['ping'] ></td>
			</tr>
			<?php
		}
		echo '</table>';
	}
}
>

W pliku samym .php działa.

Edytowane przez X3nO

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
X3nO    137

Powinien, lecz coś nie rusza


Czyli nie da się nic zrobić?

Edytowane przez X3nO

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
ShanonWEB    738

Nie znam takiego zapisu, więc jeśli ktoś coś wie niechaj mnie oświeci:

<=

Ja to widzę tak:

<?php
        foreach($aPlayers as $sValue)
        {}
            >
            <tr>
                <td><?php $sValue['playerid'] ></td>
                <td><?php htmlentities($sValue['nickname']) ></td>
                <td><?php $sValue['score'] ></td>
                <td><?php $sValue['ping'] ></td>
            </tr>
<?php
>

Z tego co mi wiadomo, zapis:

                <php>
                </php>

jest błędny, bo według mnie znaczniki powinny wyglądać tak:

<?php
>
Edytowane przez ShanonWEB

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
X3nO    137

W sumie potrzebuje 1 funkcji tej:

<?php
require "SampQueryAPI.php";
$query = new SampQueryAPI('188.68.249.130', '3656 ');
if($query->isOnline())
{
	$aInformation = $query->getInfo();
	$aServerRules = $query->getRules();
	>
	<b>General Information</b>
	<table width="400">
		<tr>
			<td>Players</td>
			<td><?php echo $aInformation['players']; > / <?php echo $aInformation['maxplayers']; ></td>
		</tr>
	</table>
	<?php } >
<?php } >

ale to też nie działa

Edytowane przez X3nO

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
JanekBack    2

W sumie potrzebuje 1 funkcji tej:

<?php
require "SampQueryAPI.php";
$query = new SampQueryAPI('188.68.249.130', '3656 ');
if($query->isOnline())
{
	$aInformation = $query->getInfo();
	$aServerRules = $query->getRules();
	>
	<b>General Information</b>
	<table width="400">
		<tr>
			<td>Players</td>
			<td><?php echo $aInformation['players']; > / <?php echo $aInformation['maxplayers']; ></td>
		</tr>
	</table>
	<?php } >
<?php } >

ale to też nie działa

Więc, powinno działać.

 

<?php
require "SampQueryAPI.php";
$query = new SampQueryAPI('188.68.249.130', '3656 ');
if($query->isOnline())
{
$aInformation = $query->getInfo();
$aServerRules = $query->getRules();
}
<b>General Information</b>
<table width="400">
<tr>
<td>Players</td>
<td> echo $aInformation['players'];  /  echo $aInformation['maxplayers']; </td>
</tr>
</table>
>
 

Spróbuj teraz.

Edytowane przez JanekBack

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×