140,11 → 140,27 |
private $ressources = array(); |
|
/** Partie de l'url situé après le '?' servant à paramétrer le service demandé. |
* Les données proviennent de $_GET où les caractères suivant ont été transformé en '_' undescrore dans les clés : |
* - chr(32) ( ) (space) |
* - chr(46) (.) (dot) |
* - chr(91) ([) (open square bracket) |
* - chr(128) - chr(159) (various) |
* En outre nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs. |
* Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2 |
* @see parametresBruts |
* @var array |
*/ |
private $parametres = array(); |
|
/** Partie de l'url situé après le '?' servant à paramétrer le service demandé. |
* Les données proviennent de $_SERVER['QUERY_STRING'] et n'ont subies aucune transformation au niveau des clés. |
* Cependant nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs. |
* Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2 |
* @see parametres |
* @var array |
*/ |
private $parametresBruts = array(); |
|
/** Tableau contenant les paramètres de configuration du serveur. |
* @var array |
*/ |
306,20 → 322,39 |
} |
|
private function initialiserParametres() { |
$this->nettoyerGet(); |
$this->parametres = $_GET; |
$this->parametres = $this->recupererParametresGet(); |
$this->parametresBruts = $this->recupererParametresBruts(); |
} |
|
private function nettoyerGet() { |
private function recupererParametresGet() { |
$_GET = $this->nettoyerParametres($_GET); |
return $_GET; |
} |
|
private function nettoyerParametres(Array $parametres) { |
// Pas besoin d'utiliser urldecode car déjà fait par php pour les clés et valeur de $_GET |
if (isset($_GET) && count($_GET) > 0) { |
foreach ($_GET as $cle => $valeur) { |
if (isset($parametres) && count($parametres) > 0) { |
foreach ($parametres as $cle => $valeur) { |
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';'); |
$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur)); |
$parametres[$cle] = strip_tags(str_replace($verifier, '', $valeur)); |
} |
} |
return $parametres; |
} |
|
private function recupererParametresBruts() { |
$paires = explode('&', $_SERVER['QUERY_STRING']); |
$parametres_bruts = array(); |
foreach ($paires as $paire) { |
$nv = explode('=', $paire); |
$nom = urldecode($nv[0]); |
$valeur = urldecode($nv[1]); |
$parametres_bruts[$nom] = $valeur; |
} |
$parametres_bruts = $this->nettoyerParametres($parametres_bruts); |
return $parametres_bruts; |
} |
|
/** |
* La méthode __autoload() charge dynamiquement les classes trouvées dans le code. |
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code. |
388,7 → 423,8 |
$Service = new $this->service(self::$config); |
if (method_exists($Service, self::METHODE_GET)) { |
$methodeGet = self::METHODE_GET; |
$retour = $Service->$methodeGet($this->ressources, $this->parametres); |
$parametres = $Service->utiliserParametresBruts() ? $this->parametresBruts : $this->parametres; |
$retour = $Service->$methodeGet($this->ressources, $parametres); |
} else { |
self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE); |
$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ". |