Server Scripting: Difference between revisions

From Flashpoint Datahub
Jump to navigation Jump to search
(→‎Using .htaccess: more generic htaccess)
Line 35: Line 35:
  <nowiki>RewriteEngine On
  <nowiki>RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule getlevel.php getlevel.php@%1?</nowiki>
RewriteRule getlevel.php$ getlevel.php@%1?</nowiki>


<noinclude>
<noinclude>
[[Category:Other Guides]]
[[Category:Other Guides]]
</noinclude>
</noinclude>

Revision as of 20:55, 26 April 2022

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();
?>

Place the files you downloaded and the PHP script in the same folder in Flashpoint's htdocs folder. In this example, the script and files would go in htdocs\www.example.com\levels.

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.

Using .htaccess

.htaccess is a configuration file detected by Apache servers to deny or redirect requests in the directory it is placed and its subfolders. Windows does not allow you to rename a file to .htaccess, but you can normally create one in a text editor.

This setting does a similar redirect as the previous PHP script. In this example, you would save it as .htaccess and place it in the same folder as the getlevel.php@.

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule getlevel.php$ getlevel.php@%1?