Server Scripting

From Flashpoint Datahub
Revision as of 01:20, 16 November 2020 by Nosamu (talk | contribs) (Created page with "Sometimes the only way to get a game working is to use a server-side script. This page goes over some simple cases of how to handle this. == Using PHP Scripts == Sometimes a...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Sometimes the only way to get a game working is to use a server-side script. This page goes over some simple cases of how to handle this.

Using PHP Scripts

Sometimes a game may require a PHP script to return different data depending on a query string. Query strings are passed to PHP scripts the same way that Flashvars are passed to SWFs. The query string is all of the text of a URL after a question mark ?.

For example, when loading a user level, a game might make a request that looks something like this: http://www.example.com/levels/getlevel.php?id=100.

To save such a game, you first need to save all the user levels. First download Wget if you don't have it already. Next, write a script like the following batch script to download the levels:

SET baseURL=http://www.example.com/levels/getlevel.php?id=
FOR /L %%i in (1,1,1000) DO (
  wget -x %baseURL%%%i
)

If you're more familiar with another language such as Python or Powershell, you can use it instead.

Now you should have all the files downloaded, with filenames such as getlevel.php@id=100, getlevel.php@id=101, etc.

Copy the following PHP code into a new text document and save it according to the name of the original PHP script. In this example, you would save it as getlevel.php.

<?php
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . str_replace("?", "@", basename($_SERVER["REQUEST_URI"])));
    exit();
?>

Now test the script by opening Flashpoint's copy of Basilisk and typing in a URL that you know should work. In this example, you could go to http://www.example.com/levels/getlevel.php?id=100 and make sure that the contents of the getlevel.php@id=100 file appear in the browser window.