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 ?>