SA-MP Forums

Go Back   SA-MP Forums > SA-MP Scripting and Plugins > Filterscripts > Tools and Files

Reply
 
Thread Tools Display Modes
Old 01/12/2015, 06:22 PM   #21
Ahmad45123
Gangsta
 
Ahmad45123's Avatar
 
Join Date: Oct 2013
Posts: 840
Reputation: 184
Default Re: Website Template (Displays Server Stats and Players Online!)

I agree with Vince, The code is really really horrible and could be better..

And to proof the fact, here is the score leader-boards rewritten on the go:
http://pastebin.com/8HJKkPdG
__________________

ExtremeStudio

The Best SAMP IDE.
Ahmad45123 is offline   Reply With Quote
Old 04/12/2015, 02:17 AM   #22
Adzdon
Big Clucker
 
Adzdon's Avatar
 
Join Date: Nov 2011
Posts: 85
Reputation: 7
Default Re: Website Template (Displays Server Stats and Players Online!)

Thanks for the update guys ^

** I checked every thread for ready made UCP they all have critical security issues, can anyone tell me a good made UCP?
Adzdon is offline   Reply With Quote
Old 05/04/2016, 01:42 PM   #23
LifeRah
Huge Clucker
 
LifeRah's Avatar
 
Join Date: Dec 2015
Location: Seattle - U.S
Posts: 206
Reputation: 23
Default Re: Website Template (Displays Server Stats and Players Online!)

i am getting this error:-
Fatal error: require(): Failed opening required 'samp_query.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/vhosts/letscheck.coolpage.biz/settings.php on line 9

please tell me how to fix it?
LifeRah is offline   Reply With Quote
Old 09/04/2016, 09:51 AM   #24
FreAkeD
Gangsta
 
FreAkeD's Avatar
 
Join Date: May 2012
Location: Australia
Posts: 650
Reputation: 79
Default Re: Website Template (Displays Server Stats and Players Online!)

Quote:
Originally Posted by Travalle View Post
i am getting this error:-
Fatal error: require(): Failed opening required 'samp_query.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/vhosts/letscheck.coolpage.biz/settings.php on line 9

please tell me how to fix it?
I really suggest you don't use this. It is outdated.
FreAkeD is offline   Reply With Quote
Old 04/02/2017, 05:25 PM   #25
Chesher
Big Clucker
 
Join Date: Sep 2016
Location: I dunno
Posts: 71
Reputation: 1
Default Re: Website Template (Displays Server Stats and Players Online!)

how to change the banner ?
Chesher is offline   Reply With Quote
Old 23/01/2018, 10:30 AM   #26
KyNe
Big Clucker
 
KyNe's Avatar
 
Join Date: Dec 2017
Location: Kota Bharu,Kelantan | Malaysia
Posts: 115
Reputation: 1
Default Re: Website Template (Displays Server Stats and Players Online!)

bro,can u do for me
it always refresh to yourdomain/error.php

Code:
<?php

    // THIS FILE IS MADE TO MAKE CUSTOMIZING MUCH EASIER. SIMPLY ENTER YOUR SERVER DETAILS HERE AND THEY WILL CHANGE ITSELF.
	define('SVRNAME', 'Server name');// the name of your server
	define('OWNER', 'Adam'); //server owner name
	define('SVRIP', ''); //Your server's IP.
	define('SVRSLOGAN', 'This is a free template dedicated to SA-MP communities.'); //Your server's slogan

	require("samp_query.php");
	$serverIP = "139.59.252.227"; // Add in your server IP. DO NOT ADD THE PORT HERE, ADD IT BELOW!
	$serverPort = 7777; // Server Port.
?>
Code:
<?php
/*********************************************
*
* SA-MP Query Server Version 0.3
*
* This class provides you with an easy to use interface to query
* your SA-MP 0.2 servers. Usage is simple, but has changed a bit
* since the last version, so be sure to check out the examples
* that come along with this script. It is updated with some of
* the new SA-MP 0.2 query-techniques that can be used.
*
* Author: Peter Beverloo
*     peter@dmx-network.com
*     Ex SA-MP Developer
*
* Updated: Wouter van Eekelen
*     wouter.van.eekelen@serverffs.com
*     SA-MP Betatester
*********************************************/

class QueryServer
{
  // Private variables used for the query-ing.
  private $szServerIP;
  private $iPort;
  private $rSocketID;

  private $bStatus;

  // The __construct function gets called automatically
  // by PHP once the class gets initialized.
  function __construct( $szServerIP, $iPort )
  {
      $this->szServerIP = $this->VerifyAddress( $szServerIP );
      $this->iPort = $iPort;

      if (empty( $this->szServerIP ) || !is_numeric( $iPort )) {
          throw new QueryServerException( 'Either the ip-address or the port isn\'t filled in correctly.' );
      }

      $this->rSocketID = @fsockopen( 'udp://' . $this->szServerIP, $iPort, $iErrorNo, $szErrorStr, 5 );
      if (!$this->rSocketID) {
          throw new QueryServerException( 'Cannot connect to the server: ' . $szErrorStr );
      }

      socket_set_timeout( $this->rSocketID, 0, 500000 );
      $this->bStatus = true;
  }

  // The VerifyAddress function verifies the given hostname/
  // IP address and returns the actual IP Address.
  function VerifyAddress( $szServerIP )
  {
      if (ip2long( $szServerIP ) !== false && 
        long2ip( ip2long( $szServerIP ) ) == $szServerIP ) {
          return $szServerIP;
      }

      $szAddress = gethostbyname( $szServerIP );
      if ($szAddress == $szServerIP) {
          return "";
      }

      return $szAddress;
  }

  // The SendPacket function sends a packet to the server which
  // requests information, based on the type of packet send.
  function SendPacket( $cPacket )
  {
      $szPacket = 'SAMP';
      $aIpChunks = explode( '.', $this->szServerIP );

      foreach( $aIpChunks as $szChunk ) {
          $szPacket .= chr( $szChunk );
      }

      $szPacket .= chr( $this->iPort & 0xFF );
      $szPacket .= chr( $this->iPort >> 8 & 0xFF );
      $szPacket .= $cPacket;

      return fwrite( $this->rSocketID, $szPacket, strlen( $szPacket ) );
  }

  // The GetPacket() function returns a specific number of bytes
  // read from the socket. This uses a special way of getting stuff.
  function GetPacket( $iBytes )
  {
      $iResponse = fread( $this->rSocketID, $iBytes );
      if ($iResponse === false) {
          throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
      }

      $iLength = ord( $iResponse );
      if ($iLength > 0)
          return fread( $this->rSocketID, $iLength );

      return "";
  }

  // After we're done, the connection needs to be closed using
  // the Close() function. Otherwise stuff might go wrong.
  function Close( )
  {
      if ($this->rSocketID !== false) {
          fclose( $this->rSocketID );
      }
  }

  // A little function that's needed to properly convert the
  // four bytes we're recieving to integers to an actual PHP
  // integer. ord() can't handle value's higher then 255.
  function toInteger( $szData )
  {
      $iInteger = 0;

      $iInteger += ( ord( @$szData[ 0 ] ) );
      $iInteger += ( ord( @$szData[ 1 ] ) << 8 );
      $iInteger += ( ord( @$szData[ 2 ] ) << 16 );
      $iInteger += ( ord( @$szData[ 3 ] ) << 24 );

      if( $iInteger >= 4294967294 )
          $iInteger -= 4294967296;

      return $iInteger;
  }

  // The GetInfo() function returns basic information about the
  // server, like the hostname, number of players online etc.
  function GetInfo( )
  {
      if ($this->SendPacket('i') === false) {
          throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
      }

      $szFirstData = fread( $this->rSocketID, 4 );
      if (empty( $szFirstData ) || $szFirstData != 'SAMP') {
          throw new QueryServerException( 'The server at ' . $this->szServerIP . ' is not an SA-MP Server.' );
      }

      // Pop the first seven characters returned.
      fread( $this->rSocketID, 7 );

      return array (
          'Password'  =>  ord( fread( $this->rSocketID, 1 ) ),
          'Players'  =>  $this->toInteger( fread( $this->rSocketID, 2 ) ),
          'MaxPlayers' =>  $this->toInteger( fread( $this->rSocketID, 2 ) ),
          'Hostname'  =>  $this->GetPacket( 4 ),
          'Gamemode'  =>  $this->GetPacket( 4 ),
          'Map'    =>  $this->GetPacket( 4 )
      );
  }

  // The GetRules() function returns the rules which are set
  // on the server, e.g. the gravity, version etcetera.
  function GetRules( )
  {
      if ($this->SendPacket('r') === false) {
          throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
      }

      // Pop the first 11 bytes from the response;
      fread( $this->rSocketID, 11 );

      $iRuleCount = ord( fread( $this->rSocketID, 2 ) );
      $aReturnArray = array( );

      for( $i = 0; $i < $iRuleCount; $i ++ ) {
          $szRuleName = $this->GetPacket( 1 );
          $aReturnArray[ $szRuleName ] = $this->GetPacket( 1 );
      }

      return $aReturnArray;
  }

  // The GetPlayers() function is pretty much simelar to the
  // detailed function, but faster and contains less information.
  function GetPlayers( )
  {
      if ($this->SendPacket('c') === false) {
          throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
      }

      // Again, pop the first eleven bytes send;
      fread( $this->rSocketID, 11 );

      $iPlayerCount = ord( fread( $this->rSocketID, 2 ) );
      $aReturnArray = array( );

      for( $i = 0; $i < $iPlayerCount; $i ++ )
      {
          $aReturnArray[ ] = array (
              'Nickname' => $this->GetPacket( 1 ),
              'Score'  => $this->toInteger( fread( $this->rSocketID, 4 ) )
          );
      }

      return $aReturnArray;
  }

  // The GetDetailedPlayers() function returns the player list,
  // but in a detailed form inclusing the score and the ping.
  function GetDetailedPlayers( )
  {
      if ($this->SendPacket('d') === false) {
          throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
      }

      // Skip the first 11 bytes of the response;
      fread( $this->rSocketID, 11 );

      $iPlayerCount = ord( fread( $this->rSocketID, 2 ) );
      $aReturnArray = array( );

      for( $i = 0; $i < $iPlayerCount; $i ++ ) {
          $aReturnArray[ ] = array(
              'PlayerID'  => $this->toInteger( fread( $this->rSocketID, 1 ) ),
              'Nickname'  => $this->GetPacket( 1 ),
              'Score'   => $this->toInteger( fread( $this->rSocketID, 4 ) ),
              'Ping'    => $this->toInteger( fread( $this->rSocketID, 4 ) )
          );
      }

      return $aReturnArray;
  }

function RCON($rcon, $command)
  {
      echo 'Password '.$rcon.' with '.$command;
      if ($this->SendPacket('x '.$rcon.' '.$command) === false) {
          throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
      }

      // Pop the first 11 bytes from the response;
      $aReturnArray = fread( $this->rSocketID, 11 );

      echo fread( $this->rSocketID, 11 );

      return $aReturnArray;
  }

}

/*********************************************
*
* The QueryServerException is used to throw errors when querying
* a specific server. That way we force the user to use proper
* error-handling, and preferably even a try-/catch statement.
*
**********************************************/

class QueryServerException extends Exception
{
  // The actual error message is stored in this variable.
  private $szMessage;

  // Again, the __construct function gets called as soon
  // as the exception is being thrown, in here we copy the message.
  function __construct( $szMessage )
  {
      $this->szMessage = $szMessage;
  }

  // In order to read the exception being thrown, we have
  // a .NET-like toString() function, which returns the message.
  function toString( )
  {
      return $this->szMessage;
  }
}
?>
Code:
<?php
require("settings.php"); // everything must be set in that file (server IP, variables etc.)

try
{
    $rQuery = new QueryServer( $serverIP, $serverPort );

    $aInformation = $rQuery->GetInfo( );
    $aServerRules = $rQuery->GetRules( );
    $aBasicPlayer = $rQuery->GetPlayers( );
    $aTotalPlayers = $rQuery->GetDetailedPlayers( );

    $rQuery->Close( );
}
catch (QueryServerException $pError)
{
    header("Location: http://yourdomain/error.php"); // Redirects to an error page if the server is offline. Change this according to your site domain name. You can customize the error page by opening 'error.php'
}

if(isset($aInformation) && is_array($aInformation)){
?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title><?php echo SVRNAME; ?> - Server</title>

    <!-- Bootstrap core CSS -->
    <link href="css/bootstrap.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="css/style.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>

  <body>

    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#"><?php echo SVRNAME; ?></a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav navbar-right">
            <li><a href="#">Home (Coming Soon)</a></li>
            <li class="active"><a href="demo.php">Server</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>

    <!-- BANNER START -->
    <div class="banner-head">
      <h1><?php echo SVRNAME; ?></h1>
      <h3><?php echo SVRSLOGAN; ?></h3>
    </div>
    <!-- BANNER END -->

    <!-- ABOUT START -->
    <div class="page-section-grey-title">
      <h1>Server Statistics</h1>
      <h4>View all of our server statistics here!</h4>
    </div>
    <!-- ABOUT END -->

    <!-- SERVER STATS START -->
    <div class="page-section-server-stats">
      <h2>Server Information:</h2>
      <div class="table-responsive">
        <table class="table table-striped table-bordered" style="width:700px;" align="center">
          <tr>
            <td><b>Hostname</b></td>
            <td><?php echo htmlentities($aInformation['Hostname']); ?></td>
          </tr>
          <tr>
            <td><b>Gamemode</b></td>
            <td><?php echo htmlentities($aInformation['Gamemode']); ?></td>
          </tr>
          <tr>
            <td><b>Players</b></td>
            <td><?php echo $aInformation['Players']; ?> / <?php echo $aInformation['MaxPlayers']; ?></td>
          </tr>
          <tr>
            <td><b>Map</b></td>
            <td><?php echo htmlentities($aInformation['Map']); ?></td>
          </tr>
          <tr>
            <td><b>Time</b></td>
            <td><?php echo $aServerRules['worldtime']; ?></td>
          </tr>
          <tr>
            <td><b>Version</b></td>
            <td><?php echo $aServerRules['version']; ?></td>
          </tr>
        </table>
      </div>
    <!-- SERVER STATS END -->

      <br/>

    <!-- SERVER PLAYERS START -->
      <h2>Online Players:</h2>
      <?php
        if(!is_array($aTotalPlayers) || count($aTotalPlayers) == 0){
        echo '<br /><i>No players online!</i>';
      } else {
      ?>
      <table class="table table-striped table-bordered" style="width:700px;" align="center">
        <tr>
            <td><b>Player ID</b></td>
            <td><b>Nickname</b></td>
            <td><b>Score</b></td>
        </tr>
      <?php
        foreach($aTotalPlayers AS $id => $value){
      ?>
        <tr>
            <td><?php echo $value['PlayerID']; ?></td>
            <td><?php echo htmlentities($value['Nickname']); ?></td>
            <td><?php echo $value['Score']; ?></td>
        </tr>
      <?php
        }
        echo '</table>';
        }
        }
      ?>  
    <!-- SERVER PLAYERS END -->
    </div>

    <!-- ANNOUNCEMENTS STARTS -->
    <div class="page-section-grey-title">
      <h2>Announcements:</h2>
      <div class="alert alert-success" role="alert">No server announcements. Check back soon!</div>
    </div>
    <!-- ANNOUNCEMENTS END -->

    <!-- FOOTER START -->
    <footer>
        <div class="container">
            <div class="row">
                <div class="col-lg-12">
                    <ul class="list-inline">
                        <li>
                            <a href="#">Home</a>
                        </li>
                        <li class="footer-menu-divider">&sdot;</li>
                        <li>
                            <a href="index.php">Server</a>
                        </li>
                    </ul>
                    <p id="copyright">Copyright &copy; -Servername- <?php echo date("Y"); ?>. This site was coded by <?php echo OWNER; ?>. All Rights Reserved<br><br> Server IP: <?php echo SVRIP; ?></p>
                </div>
            </div>
        </div>
    </footer>
    <!-- FOOTER END -->

    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.******apis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
</body>
</html>
Code:
<!DOCTYPE html>

<?php include("settings.php"); ?>

<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title><?php echo SVRNAME; ?> - Error</title>

    <!-- Bootstrap core CSS -->
    <link href="css/bootstrap.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="css/style.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="server-offline-top">The server is offline. It will be back soon! See below for details.</div>
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#"><?php echo SVRNAME; ?></a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav navbar-right">
            <li><a href="#">Home (Coming Soon)</a></li>
            <li><a href="index.php">Server</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>

    <!-- BANNER START -->
    <div class="banner-head">
      <h1><?php echo SVRNAME; ?></h1>
      <h3><?php echo SVRSLOGAN; ?></h3>
    </div>
    <!-- BANNER END -->

    <!-- MAIN ERROR SECTION START -->
      <div class="page-section-server-error">
        <h1>Sorry, something went wrong!</h1>
        <br>
        <p>Looks like our server is offline or there's a fault we don't know about. Check back soon.</p>
      </div>
    <!-- MAIN ERROR SECTION END -->

    <!-- MAIN ERROR SECTION START -->
      <div class="page-section-white-title">
        <h1>Information</h1>
        <br>
        <p>
          <?php
            date_default_timezone_set("Australia/Melbourne"); // Change to your timezone. Supported timezones: http://php.net/manual/en/timezones.php
            echo "<b>Time(AEDT):</b> " . date("h:i:sa");

            echo "<br><br><b>Date:</b> " . date("d/m/y") . "<br><br>";

            $useragent = $_SERVER ['HTTP_USER_AGENT'];
            echo "<b>Broweser/System Information:</b> " . $useragent; 

            $started_at = microtime(true);
            echo '<br><br><b>Page Loadtime:</b> ' . (microtime(true) - $started_at) . ' seconds.'; 
          ?>
        </p>
      </div>
    <!-- MAIN ERROR SECTION END -->

    <!-- FOOTER START -->
    <br><footer>
        <div class="container">
            <div class="row">
                <div class="col-lg-12">
                    <ul class="list-inline">
                        <li>
                            <a href="#">Home</a>
                        </li>
                        <li class="footer-menu-divider">&sdot;</li>
                        <li>
                            <a href="index.php">Server</a>
                        </li>
                    </ul>
                    <p id="copyright">Copyright &copy; -Servername- <?php echo date("Y"); ?>. This site was coded by <?php echo OWNER; ?>. All Rights Reserved<br><br> Server IP: <?php echo SVRIP; ?></p>
                </div>
            </div>
        </div>
    </footer>
    <!-- FOOTER END -->

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.******apis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>
KyNe is offline   Reply With Quote
Old 24/01/2018, 08:49 AM   #27
KyNe
Big Clucker
 
KyNe's Avatar
 
Join Date: Dec 2017
Location: Kota Bharu,Kelantan | Malaysia
Posts: 115
Reputation: 1
Default Re: Website Template (Displays Server Stats and Players Online!)

bro,no reply?
KyNe is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Tool/Web/Other] Basic server website template ArchB42 Tools and Files 18 03/12/2017 11:41 AM
Players Stats On Website? danish007 Scripting Help 2 18/12/2014 10:15 PM
[PHP] Query to show online players on website toofast General 5 05/07/2013 11:16 AM
Online Players On Website? Sulps Scripting Help 2 07/06/2013 04:05 PM


All times are GMT. The time now is 12:45 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.