www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

server.php (4647B)


      1 <?php
      2 session_start();
      3 require_once("ressources/backend.inc");
      4 require_once("ressources/db.inc");
      5 
      6 /** Ecrit un rapport d'erreur dans un fichier.
      7 * @param errNum : Numéro de l'erreur.
      8 * @param msg : Description de l'erreur.
      9 * @param [other] : (Optionnel) Complément d'information.
     10 */
     11 function logError($errNum, $msg, $other="")
     12 {
     13 	$file = fopen("./log.txt","a+");
     14 
     15 	// Met en forme la chaine contenant les paramètres de la requête.
     16 	$dumpParameters = str_replace("(\n","",print_r($_GET,true));
     17 	$dumpParameters = str_replace(")\n","",$dumpParameters);
     18 
     19 	// Ecriture dans le fichier.
     20 	fwrite($file,"\nErreur n° ".$errNum);
     21 	fwrite($file," : ".$msg);
     22 	if(!empty($other))	
     23 		fwrite($file,"\n ".$other);
     24 	fwrite($file,"\n  ".$dumpParameters);
     25 
     26 	fclose($file);
     27 }
     28 
     29 /** La fonction principale.
     30 * @param action : Un identifiant d'action.
     31 */
     32 function main()
     33 {
     34 	$loginIsOk = false;
     35 	$user = 'nobody';
     36 	if(!isset($_GET['action'])) {
     37 		throw new Exception("La requête est incomplète.", 2);
     38 	}
     39 	if(isset($_GET['user']) && isset($_GET['passwd'])) {
     40 		unset($_SESSION['userId']);
     41 		$user = SQLite3::escapeString($_GET['user']);
     42 		$loginIsOk = connect($user, $_GET['passwd']);
     43 		if ($loginIsOk) {
     44 			$_SESSION['userId'] = $user;
     45 		} else {
     46 			throw new Exception("Utilisateur non enregistré ou mauvais mot de passe.", 3);
     47 		}
     48 	} elseif(isset($_SESSION['userId'])) {
     49 		$user = $_SESSION['userId'];
     50 		$loginIsOk = true;
     51 	}
     52 	
     53 	$action = $_GET['action'];
     54 	
     55 	if ($action != 3 && (!$loginIsOk))
     56 		throw new Exception("Vous n'êtes pas connecté.", 10);
     57 
     58 	if ($action == 3) {
     59 		echo JSON_encode(
     60 			Array(
     61 				"loginOk" => !!$loginIsOk,
     62 				"whoami" => "".$user
     63 			)
     64 		);
     65 		return;
     66 	}
     67 	
     68 	if  ($action == 2) {                // "Create partie"
     69 		// Requête POST : http://serveur/server.php?action=2&nb=2&mode=normal&user=foo&passwd=bar
     70 		if (!isset($_GET['nb']) || !isset($_GET['mode']))
     71 			throw new Exception("La requête est incomplète", 2);
     72 
     73 		createGame(intval($_GET['nb']), $_GET['mode']);
     74 		echo '{"success":1}';
     75 	}
     76 	else if($action == 0) {           // "Get partie"
     77 		// Requête POST : http://serveur/server.php?action=0&user=foo&passwd=bar
     78 		echo JSON_encode(game2array($user, isset($_GET['pgid']) ? $_GET['pgid'] : null));
     79 	}
     80 	else if($action == 1) {				// "Set partie"
     81 		// Requête POST : http://serveur/server.php?action=1&user=foo&passwd=bar&gid=1234&pgid=12357&0=0&1=-1&2=22&3=13&9=-1
     82 		if (!isset($_GET['pgid']) || !isset($_GET['answers']))
     83 			throw new Exception("La requête est incomplète", 2);
     84 
     85 		setGameGetScore($user, $_GET['pgid'], $_GET['answers']);
     86 	}
     87 	else if($action == 4) {           // CheckWord
     88 		if (!isset($_GET['word']))
     89 			throw new Exception("La requête est incomplète", 2);
     90 
     91 		if(wordExist($_GET['word']))
     92 			echo JSON_encode(true);
     93 		else
     94 			echo JSON_encode(false);
     95 	}
     96 	else if($action == 5) {           	// Get relations (JSON)
     97 		echo getGameRelations();
     98 	}
     99 	else if($action == 6) {
    100 		if (!isset($_GET['game']))
    101 			throw new Exception("La requête est incomplète", 2);
    102 		
    103 		decodeAndInsertGame($user,$_GET['game']);
    104 	}
    105 	elseif ($action == 7) {         	// Get user prefs
    106 		userPrefs($user);
    107 	}
    108 	elseif ($action == 8) {         	// Set user pref
    109 		if (!isset($_GET['key']) || !isset($_GET['value']))
    110 			throw new Exception("La requête est incomplète", 2);
    111 			
    112 		setUserPref($user, $_GET['key'], $_GET['value']);
    113 		userPrefs($user);
    114 	}
    115 	elseif ($action == 9) {
    116 		session_destroy();
    117 		echo '{"disconnected":true}';
    118 	}
    119 	elseif ($action == 10) { // Set J'aime / J'aime pas
    120 		if (!isset($_GET['value']) || !isset($_GET['pgid']))
    121 			throw new Exception("La requête est incomplète", 2);
    122 			
    123 		setJAimePgid($user, $_GET['pgid'], intval($_GET['value']));
    124 		echo '{"JAimePas":true}';
    125 	}
    126 	elseif ($action == 11) {				// bonus création de parties
    127 		if (!isset($_GET['value']))
    128 			throw new Exception("La requête est incomplète", 2);
    129 			
    130 		addGameCreationBonus($user, $_GET['value']);
    131 	}
    132 	else {
    133 		throw new Exception("Commande inconnue", 2);
    134 	}
    135 }
    136 
    137 function server() {
    138 	if(isset($_GET['callback'])) {
    139 		echo $_GET['callback'].'(';
    140 		header("Content-Type: application/javascript; charset=utf-8");
    141 	} else {
    142 		header("Content-Type: application/json; charset=utf-8");
    143 	}
    144 	
    145 	ob_start();
    146 	
    147 	try {
    148 		main();
    149 		ob_end_flush();
    150 	} catch (Exception $e) {
    151 		ob_end_clean();
    152 		$code = $e->getCode();
    153 		$msg = $e->getMessage();
    154 		if ($code != 10 && $code != 3) $msg = "Erreur ".$code." : " . $msg;
    155 		echo JSON_encode(
    156 			Array(
    157 				"error" => $code,
    158 				"msg" => $msg,
    159 				"isError" => true
    160 			)
    161 		);
    162 		
    163 		logError($e->getCode(), $e->getMessage(), date("c"));
    164 		closeDB();
    165 	}
    166 	
    167 	if(isset($_GET['callback']))
    168 		echo ')';
    169 }
    170 
    171 server();
    172 
    173 ?>