Fix client side timestamp problem

Added Support for standalone webchat by reading a json file
Fix for jsonfile-interval in code
Added working php script with spam prevention, for webchat
This commit is contained in:
Jason Booth 2011-03-10 00:11:43 -06:00
parent 912dd0694b
commit 15e7417807
5 changed files with 102 additions and 13 deletions

View file

@ -0,0 +1,32 @@
<?php
$msginterval = 5; //In seconds - add this to dynmap web config??
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST' && $_SESSION['lastchat'] < time())
{
$config = json_decode(file_get_contents('dynmap_config.json'), true);
$micro = explode(' ', microtime());
$timestamp = $micro[1].round($micro[0]*1000);
$data = json_decode(trim(file_get_contents('php://input')));
$data->timestamp = $timestamp;
$old_messages = json_decode(file_get_contents('dynmap_webchat.json'), true);
if(!empty($old_messages))
{
foreach($old_messages as $message)
{
if(($timestamp - $config['updaterate'] - 10000) < $message['timestamp'])
$new_messages[] = $message;
}
}
$new_messages[] = $data;
file_put_contents('dynmap_webchat.json', json_encode($new_messages));
$_SESSION['lastchat'] = time()+$msginterval;
}
elseif($_SERVER['REQUEST_METHOD'] == 'POST' && $_SESSION['lastchat'] > time())
{
echo json_encode('You may only chat once every '.$msginterval.' seconds.');
}
?>