Auteur | Message |
---|---|
Freddy Messages : 23 Inscrit le : 16/05/2002 |
Posté le 06/11/2002 à 19:32:14 Message N°21 # |
Alors, la fonction (attention c'est long) déjà, quelques constantes à définir : define('VAR_COOKIE', 1); // pour récupérer un cookie define('VAR_GET', 2); // pour récupérer une variable get define('VAR_POST', 3); // idem en post define('VAR_FILE', 4); // idem pour l'upload de fichier /** * types possibles de la variable retournée */ define('VAR_INT', 1); // entier define('VAR_STRING', 2); // string define('VAR_ARRAY', 3); // tableau define('VAR_CHECKBOX', 4); // type spécial : à utiliser si la variable correspond à une checkbox d'un form html. Dans ce cas, la variable vaudra true si la case est coché, false autrement define('VAR_BOOL', 5); // boolean define('VAR_DOUBLE', 6); // double define('VAR_FLOAT', VAR_DOUBLE); // synonyme de double define('VAR_REAL', VAR_DOUBLE); // synonyme de double /** * Les fonctions de récupération des valeurs * Servent pour faire un code plus aéré et * moins "bloc incompréhensible" */ /****************************************************** * retourne la valeur du cookie ayant pour nom $name * ou false si le cookie n'existe pas *******************************************************/ function __getCookieVar($name) { if (isset($_COOKIE[$name])) { return $_COOKIE[$name]; } elseif (isset($HTTP_COOKIE_VARS[$name])) { return $HTTP_COOKIE_VARS[$name]; } return false; } /************************** * Idem __getCookieVar, * pour les variables post **************************/ function __getPostVar($name) { if (isset($_POST[$name])) { return $_POST[$name]; } elseif (isset($HTTP_POST_VARS[$name])) { return $HTTP_POST_VARS[$name]; } return false; } /************************** * Idem __getCookieVar, * pour les variables get **************************/ function __getGetVar($name) { if (isset($_GET[$name])) { return $_GET[$name]; } elseif (isset($HTTP_GET_VARS[$name])) { return $HTTP_GET_VARS[$name]; } return false; } /******************************* * Idem __getCookieVar, * pour les uploads de fichiers *******************************/ function __getFileVar($name) { if (isset($_FILES[$name])) { return $_FILES[$name]; } elseif (isset($HTTP_FILES_VARS[$name])) { return $HTTP_FILES_VARS[$name]; } return false; } /** * ZE FUNCTION */ /************************************** * @param: string: nom de la variable * @param: cst: type de la variable souhaité * (voir les constantes) * @param: array de cst | cst : constantes * indiquant où et dans quel ordre (si c'est un tableau) * rechercher la variable * @return: la valeur de la variable * @action: initialize la variable voulue en global **************************************/ function registerVar($name, $type, $where) { global $__magicquoteFunc, $$name; /** * Permet d'éviter d'avoir systématiquement à préciser le 'array' devant le paramètre $where */ if (!is_array($where)) { $where = array($where); } foreach ($where as $w) { switch ($w) { case VAR_COOKIE: { if (($$name = __getCookieVar($name))) { /** * Bon, c'est un peu porc, mais comme php autorise ça... */ break 2; } break; } case VAR_POST: { if (($$name = __getPostVar($name))) { /** * Bon, c'est un peu porc, mais comme php autorise ça... */ break 2; } break; } case VAR_GET: { if (($$name = __getGetVar($name))) { /** * Bon, c'est un peu porc, mais comme php autorise ça... */ break 2; } break; } case VAR_FILE: { if (($$name = __getFileVar($name))) { /** * Bon, c'est un peu porc, mais comme php autorise ça... */ break 2; } break; } } // end switch } // end foreach ($where as $w) /** * On convertit la variable vers le bon type */ switch ($type) { case VAR_INT: $$name = (int)$$name; break; case VAR_BOOL: $$name = (bool)$$name; break; case VAR_DOUBLE: $$name = (double)$$name; break; case VAR_STRING: $$name = (string)$$name; /** * /! Chaine de caractère, attention au slashs */ if ($__magicquoteFunc !== null) { $$name = $__magicquoteFunc($$name); } break; case VAR_ARRAY: $$name = (array)$$name; break; case VAR_CHECKBOX: $$name = ($$name == 'on'); break; } return $$name; } Bon, c'est un peu long, près très commenté, mais je pense que c'est simple et compréhensible J'ai pas bq testé pour le moment, néanmoins, je pense qu'il ne devrait pas y avoir de pb. Par la suite, il sera possible de rajouter des paramètres (genre est-ce qu'il faut initialiser la variable global correspondante ou pas, etc...) Z'en pensez quoi ? (je croise les doigts pour que ça soit lisible dans le forum) (arg, c'est pas lisible /) |
|
© PHPTools4U.com 2002-2019 / Hébergement eSKUeL.net | Recettes de cuisine | Jeux en flash gratuits | Météo gratuite à 7 jours