14,6 → 14,9 |
*/ |
class Application { |
|
/** Variable statique indiquant que les tableaux _GET et _POST ont déjà été encodé au format de l'appli. */ |
private static $encodage = false; |
|
/** |
* Tableau d'informations sur l'application |
*/ |
34,7 → 37,8 |
// Configuration du gestionnaire d'exception |
GestionnaireException::configurer(); |
// Configuration du gestionnaire de logs |
//Log::configurer(); |
//Log::configurer(); |
self::verifierEtReencoderTableauRequete(); |
} |
|
/** |
100,4 → 104,63 |
return self::$info; |
} |
} |
|
/** |
* Procédure vérifiant l'encodage des tableaux $_GET et $_POST et les transcodant dans l'encodage de l'application |
*/ |
protected static function verifierEtReencoderTableauRequete() { |
if (self::$encodage == false && Config::get('sortie_encodage') != Config::get('appli_encodage')) { |
$_POST = self::encoderTableau($_POST, Config::get('appli_encodage'), Config::get('sortie_encodage')); |
$_GET = self::encoderTableau($_GET, Config::get('appli_encodage'), Config::get('sortie_encodage')); |
|
// traitement des magic quotes |
self::verifierEtTraiterSlashTableauRequete(); |
|
self::$encodage = true; |
} |
} |
|
/** |
* Procédure vérifiant l'activation des magic quotes et remplacant les slash dans les tableaux de requete |
*/ |
private static function verifierEtTraiterSlashTableauRequete() { |
|
if ( get_magic_quotes_gpc() ) { |
|
if (!function_exists('stripslashes_deep')) { |
function stripslashes_deep( $value ) { |
|
return ( is_array($value) ) |
? array_map('stripslashes_deep', $value) |
: stripslashes($value); |
|
} // end of 'stripslashes_deep()' |
|
$_GET = array_map('stripslashes_deep', $_GET); |
$_POST = array_map('stripslashes_deep', $_POST); |
$_COOKIE = array_map('stripslashes_deep', $_COOKIE); |
} |
} |
} |
|
/** |
* Fonction récursive transcodant toutes les valeurs d'un tableau de leur encodage d'entrée vers un encodage de sortie donné |
* @param $tableau Array Un tableau de données à encoder |
* @param $encodage_sortie String l'encodage vers lequel on doit transcoder |
* @param $encodage_entree String l'encodage original des chaines du tableau (optionnel) |
* @return Array Le tableau encodé dans l'encodage de sortie |
* |
*/ |
final static protected function encoderTableau($tableau, $encodage_sortie, $encodage_entree = null) { |
if (is_array($tableau)) { |
foreach ($tableau as $cle => $valeur) { |
if (is_array($valeur)) { |
$tableau[$cle] = self::encoderTableau($valeur, $encodage_sortie, $encodage_entree); |
} else { |
$tableau[$cle] = mb_convert_encoding($valeur, $encodage_sortie, $encodage_entree); |
} |
} |
} |
return $tableau; |
} |
} |