setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); switch ($action) { case "save": // Look if guid contains @ -> Use userName and password! if (strpos($guid, "@USERGAME@") !== false) { $sql = "INSERT INTO savegames (data,gameName,gameVersion,userName,timestamp) VALUES ('".$gameData."','".$gameName."',".$gameVersion.",'".$userName."@".$password."',".$time.")"; } else { $sql = "INSERT INTO savegames (data,gameName,gameVersion,userName,timestamp) VALUES ('".$gameData."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; }; $rows = $db->exec($sql); $result = $rows." games saved"; break; case "load": // Look if guid contains @ -> Use userName and password! if (strpos($guid, "@USERGAME@") !== false) { $sql = "SELECT * FROM savegames WHERE gameName='".$gameName."' AND userName='".$userName."@".$password."' ORDER BY id DESC LIMIT 1"; } else { $sql = "SELECT * FROM savegames WHERE gameName='".$gameName."' ORDER BY id DESC LIMIT 1"; }; $select = $db->query($sql); $rows = $select->fetchAll(); $result = $rows[0]['data']; break; case "check": // Look if guid contains @ -> Use userName and password! if (strpos($guid, "@USERGAME@") !== false) { $sql = "SELECT * FROM savegames WHERE gameName='".$gameName."' AND userName='".$userName."@".$password."' ORDER BY id DESC LIMIT 1"; } else { $sql = "SELECT * FROM savegames WHERE gameName='".$gameName."' ORDER BY id DESC LIMIT 1"; }; $select = $db->query($sql); $rows = $select->fetchAll(); if (count($rows)>0) { if (floatval($gameVersion) Use userName and password! if (strpos($guid, "@USERGAME@") !== false) { // Check if the game has an active session for this user $sql = "SELECT * FROM sessiondata WHERE gameName='".$gameName."' AND userName='".$userName."@".$password."' AND action='active'"; } else { // Check if the game has an active session $sql = "SELECT * FROM sessiondata WHERE gameName='".$gameName."' AND action='active'"; }; $select = $db->query($sql); $rows = $select->fetchAll(); if (count($rows)>0) { // Active session found - write session log for new passive game if (strpos($guid, "@USERGAME@") !== false) { $sql = "INSERT INTO sessions (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('passive','".$userName."@".$password."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; } else { $sql = "INSERT INTO sessions (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('passive','".$guid."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; }; $rows = $db->exec($sql); if ($rows>0) { // Write new entry for passive game on sessiondata if (strpos($guid, "@USERGAME@") !== false) { $sql = "INSERT INTO sessiondata (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('passive','".$userName."@".$password."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; } else { $sql = "INSERT INTO sessiondata (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('passive','".$guid."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; }; $rows = $db->exec($sql); if ($rows>0) { $array['session'] = "Start passive session"; $array['gameMode'] = 2; // passive } else { // Can't write game state $array['session'] = "Unable to write passive state"; $array['gameMode'] = 0; // unkown }; } else { // Can't write session log $array['session'] = "Unable to write session data"; $array['gameMode'] = 0; // unkown }; } else { // NO active session found - write session log for new active game if (strpos($guid, "@USERGAME@") !== false) { $sql = "INSERT INTO sessions (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('active','".$userName."@".$password."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; } else { $sql = "INSERT INTO sessions (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('active','".$guid."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; }; $rows = $db->exec($sql); if ($rows>0) { // Write new entry for passive game on sessiondata if (strpos($guid, "@USERGAME@") !== false) { $sql = "INSERT INTO sessiondata (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('active','".$userName."@".$password."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; } else { $sql = "INSERT INTO sessiondata (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('active','".$guid."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; }; $rows = $db->exec($sql); if ($rows>0) { $array['session'] = "Start active session"; $array['gameMode'] = 3; // active } else { // Can't write game state $array['session'] = "Unable to write passive active"; $array['gameMode'] = 0; // unkown }; } else { // Can't write session log $array['session'] = "Unable to write session data"; $array['gameMode'] = 0; // unkown }; }; break; case "logout": // Write session log if (strpos($guid, "@USERGAME@") !== false) { $sql = "INSERT INTO sessions (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('".$gameData."','".$userName."@".$password."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; } else { $sql = "INSERT INTO sessions (action,guid,gameName,gameVersion,userName,timestamp) VALUES ('".$gameData."','".$guid."','".$gameName."',".$gameVersion.",'".$userName."',".$time.")"; }; $rows = $db->exec($sql); if ($rows>0) { // Delete entry from sessiondata if (strpos($guid, "@USERGAME@") !== false) { $sql = "DELETE FROM sessiondata WHERE guid='".$userName."@".$password."'"; } else { $sql = "DELETE FROM sessiondata WHERE guid='".$guid."'"; }; $rows = $db->exec($sql); $array['session'] = "Session deleted"; $array['gameMode'] = 1; // on start } else { // Can't write session log $array['session'] = "Unable to write session data"; $array['gameMode'] = 0; // unkown }; break; case "isactive": // Check if this game is the active session if (strpos($guid, "@USERGAME@") !== false) { $sql = "SELECT * FROM sessiondata WHERE gameName='".$gameName."' AND guid='".$userName."@".$password."' AND action='active'"; } else { $sql = "SELECT * FROM sessiondata WHERE gameName='".$gameName."' AND action='active'"; }; $select = $db->query($sql); $rows = $select->fetchAll(); if ($rows>0) { if (strpos($guid, "@USERGAME@") !== false) { $array['session'] = "Still active session"; $array['gameMode'] = 3; // active } else { if ($rows[0]["guid"]==$guid) { $array['session'] = "Still active session"; $array['gameMode'] = 3; // active } else { $array['session'] = "Lost active session to ".$rows[0]["guid"]; $array['gameMode'] = 2; // active }; }; } else { $array['session'] = "No active session found"; $array['gameMode'] = 2; // active }; break; default: $array['gameMode'] = 0; // unkown $array['session'] = "Unknown action"; }; $array['guid'] = $guid; $result = json_encode($array); break; default: $result = "Unknown action: ".$action; }; $db = NULL; echo $result; } catch(PDOException $e) { echo "Exception: ".$e->getMessage(); } ?>