Navigation : Forums > Suggestions > Membres

Pages : < 1 2 3 Poster un nouveau sujet Ajouter un message
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 :-//)
Profil Citer

Navigation : Forums > Suggestions > Membres

Pages : < 1 2 3 Poster un nouveau sujet Ajouter un message


Se rendre directement sur le forum :