begin process at 2010 03 22 04:24:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > FONCTION DE FILTRAGE DES DONNÉES

FONCTION DE FILTRAGE DES DONNÉES


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :28/06/2005 Date de mise à jour :15/07/2005 11:26:39 Vu / téléchargé :4 630 / 157

Auteur : lnp

Ecrire un message privé
Site perso
Commentaire sur cette source (32)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
fonction de filtrage des données : Tout est dit, je pense...

Source

  • // fonction de filtrage des données
  • function fx_filter($nom, $type, $defaut = "" ) {
  • // si la variable n'a pas été reçue, renvoyer valeur par defaut
  • if( ! isset( $_REQUEST[$nom] ) ) return $defaut;
  • $unsafe = $_REQUEST[$nom];
  • switch( $type ) {
  • case 'NUMERIC':
  • // Teste si c'est un nombre. Renvoie defaut si ce n'est pas le cas
  • if( ! is_numeric( $unsafe ) ) return $defaut;
  • break;
  • case 'TEXTE':
  • // Enleve les caractères non autorisés dans un texte
  • $unsafe = eregi_replace("[^a-zA-Z0-9_&~@/,\.'()?!éèàêâôîûùç-]\S","",$unsafe);
  • break;
  • case 'STRING':
  • // Enleve les caractères non autorisés dans une chaine de caracteres
  • $unsafe = eregi_replace("[^a-zA-Z0-9_&~@/,\.'()?! éèàêâôîûùç-]","",$unsafe);
  • break;
  • case 'STRING_S':
  • // Enlève les caractères spéciaux de la chaîne de caractères
  • $unsafe = eregi_replace("[^a-zA-Z0-9_ -]+$", "", $unsafe);
  • break;
  • case 'MAIL':
  • // Teste le format d'une adresse mail. Renvoie $defaut si le format n'est normal
  • $unsafe = strtolower( $unsafe );
  • if ( ! preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!i", $unsafe) )
  • return $defaut;
  • break;
  • case 'URL':
  • // Teste le format d'une adresse Internet ou ftp. Renvoie $defaut si le format n'est normal
  • // if ( ! preg_match("!(((https?|ftp)://(w{3}\.)?)(\!www)(\w+-?)*\.([a-z]{2,4}))!",$unsafe) )
  • if ( ! preg_match("!^(https?|s?ftp):\/\/(w{3}\.?)?\S!",$unsafe) )
  • return $defaut;
  • break;
  • case 'TEL':
  • // Enleve les caractères espace, point et les parenthèses.
  • // Puis teste si la chaine ne contient que des chiffres. Renvoie $defaut si ce n'est pas le cas.
  • $unsafe = ereg_replace("[\ ().]","", $unsafe);
  • if ( ! ( ereg("^[+0-9][0-9]+$",$unsafe) ) )
  • return $defaut;
  • break;
  • case 'NOM':
  • // Enlève les caractères non autorisés dans un nom
  • // Et le reformate en MAJUSCULE
  • $unsafe = strtoupper( $unsafe );
  • $unsafe = preg_replace("![^ÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç' a-zA-Z0-9_-]*!i", "", $unsafe);
  • while ( preg_match("!^[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç]|[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç0-9]$!i", $unsafe) ) {
  • $unsafe = preg_replace("!^[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç]|[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç0-9]$!i", "", $unsafe);
  • }
  • while ( preg_match("!(__|--)!" , $unsafe) ) {
  • $unsafe = preg_replace("!_+|-+!", "-", $unsafe);
  • }
  • break;
  • case 'PRENOM':
  • // Enlève les caractères non autorisés dans un nom
  • // Et le reformate pour que chaque mot commence par une MAJUSCULE
  • $unsafe = fx_filter($nom, 'NOM');
  • $unsafe = ucwords( strtolower( $unsafe ) );
  • break;
  • default :
  • // Si le type n'est pas répertorier $defaut est renvoyé
  • return $defaut;
  • }
  • //Echappement des données saisies.
  • if ( get_magic_quotes_gpc() == 0 ) {
  • $unsafe = stripslashes($unsafe); // Pour éviter trop d'avoir trop d'anti-slashe dans un texte filtré
  • $unsafe = addslashes($unsafe);
  • }
  • return $unsafe;
  • }
// fonction de filtrage des données
function fx_filter($nom, $type, $defaut = "" ) {

	// si la variable n'a pas été reçue, renvoyer valeur par defaut
	if( ! isset( $_REQUEST[$nom] ) ) return $defaut;
	$unsafe = $_REQUEST[$nom];

	switch( $type ) {	

	case 'NUMERIC':
	// Teste si c'est un nombre. Renvoie defaut si ce n'est pas le cas
		if( ! is_numeric( $unsafe ) ) return $defaut;
		break;

	case 'TEXTE':
	// Enleve les caractères non autorisés dans un texte
		$unsafe = eregi_replace("[^a-zA-Z0-9_&~@/,\.'()?!éèàêâôîûùç-]\S","",$unsafe);
		break;

	case 'STRING':
	// Enleve les caractères non autorisés dans une chaine de caracteres
		$unsafe = eregi_replace("[^a-zA-Z0-9_&~@/,\.'()?! éèàêâôîûùç-]","",$unsafe);
		break;

	case 'STRING_S':
	// Enlève les caractères spéciaux de la chaîne de caractères
		$unsafe = eregi_replace("[^a-zA-Z0-9_ -]+$", "", $unsafe);
		break;

	case 'MAIL':
	// Teste le format d'une adresse mail. Renvoie $defaut si le format n'est normal
		$unsafe = strtolower( $unsafe );
		if ( ! preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!i", $unsafe) )
			return $defaut;
		break;

	case 'URL':
	// Teste le format d'une adresse Internet ou ftp. Renvoie $defaut si le format n'est normal
//		if ( ! preg_match("!(((https?|ftp)://(w{3}\.)?)(\!www)(\w+-?)*\.([a-z]{2,4}))!",$unsafe) )
		if ( ! preg_match("!^(https?|s?ftp):\/\/(w{3}\.?)?\S!",$unsafe) )
			return $defaut;
		break;

	case 'TEL':
	// Enleve les caractères espace, point et les parenthèses.
	// Puis teste si la chaine ne contient que des chiffres. Renvoie $defaut si ce n'est pas le cas.
		$unsafe = ereg_replace("[\ ().]","", $unsafe);
		if ( ! ( ereg("^[+0-9][0-9]+$",$unsafe) ) )
			return $defaut;
		break;

	case 'NOM':
	// Enlève les caractères non autorisés dans un nom
	// Et le reformate en MAJUSCULE
		$unsafe = strtoupper( $unsafe );
   		$unsafe = preg_replace("![^ÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç' a-zA-Z0-9_-]*!i", "", $unsafe);
 		while ( preg_match("!^[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç]|[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç0-9]$!i", $unsafe) ) {
			$unsafe = preg_replace("!^[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç]|[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç0-9]$!i", "", $unsafe);
		}
		while ( preg_match("!(__|--)!" , $unsafe) ) {
			$unsafe = preg_replace("!_+|-+!", "-", $unsafe);
		}
 		break;

	case 'PRENOM':
	// Enlève les caractères non autorisés dans un nom
	// Et le reformate pour que chaque mot commence par une MAJUSCULE
		$unsafe = fx_filter($nom, 'NOM');
		$unsafe = ucwords( strtolower( $unsafe ) );
		break;

	default :
	// Si le type n'est pas répertorier $defaut est renvoyé
		return $defaut;
	}
	
	//Echappement des données saisies.
	if ( get_magic_quotes_gpc() == 0 ) {
		$unsafe = stripslashes($unsafe); // Pour éviter trop d'avoir trop d'anti-slashe dans un texte filtré
		$unsafe = addslashes($unsafe);
	}

	return $unsafe;
}

 Conclusion

C'est un code que j'ai récupéré dans mon cours... Je met cette fonction ici pour pouvoir avoir vos réactions et pour pouvoir l'améliorer...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

28 juin 2005 10:13:47 :
Mise à jour pour rapidité accrue
28 juin 2005 10:15:22 :
Orthographe ! ! ! Faute de frappe ! ! !
28 juin 2005 11:34:32 :
Petites corections sans grandes conséquences...
29 juin 2005 07:04:37 :
Quelques améliorations ! Et surtout quelques commentaires ! C'est mieux ! Non ? Un petit exemple d'utilisation pour agrémenter tout cela ! Désolé par avance mais je n'ai pas d'exemple plus parlant pour l'instant ! ! !
30 juin 2005 09:47:45 :
Quelques modifications ! Quelques commentaires ! C'est mieux maintenant... Non ? ! ? En prime un ficher et une photo ! ! !
15 juillet 2005 11:26:40 :
Cette fonction je l'utilise pour le codage d'un site. J'y apporte de temps en temps quelques améliorations à mon sens...

 Sources du même auteur

FONCTION FORMATE LA DATE ET L'HEURE POUR QU'ELLES SOIENT ENR...
Source avec Zip CETTE FONCTION RENVOIE LE TEXTE REFORMATÉ DE FAÇON À CE QU'I...

 Sources de la même categorie

CALCUL D'UNE DISTANCE ORTHONORMIQUE par bossfoot
Source avec Zip ESPACE ADMIN SIMPLE par mousaid_88
Source avec Zip IMAGINE-CMS V2.20 par djack69
Source avec Zip AFFICHAGE ET GESTION DE DIAPORAMA EN PHP SANS BASE DE DONNÉE... par mldvb
Source avec Zip Source avec une capture PARSER ALLOCINE par cyrhades

Commentaires et avis

Commentaire de Anthomicro le 28/06/2005 09:57:23

Salut,

"Mais je ne comprend pas pourquoi cela ne fonctionne pas correctement..."

direction le forum...

Commentaire de FhX le 28/06/2005 22:06:18

un "return true" - "return false" est peut-être plus approprié.
Et faire une autre fonction pour traiter la chaine pour un magic_quote_gpc() et autre trim().

Commentaire de GRenard le 29/06/2005 01:49:30

... à mon avis il manque le ï et ç et majuscule des caractères spéciaux. Un nom de famille peut être encore plus compliqué je ne le scannerait pas avec ça... (même chose pour le prénom)
Le Tel, il faut donner un exemple pour ce que ca marche parce que je suis sur que ton tel ne ressemble pas du tout au mien.
STRING_S, explique mieux pour les débutants...

Commentaire de lnp le 04/07/2005 13:13:20

Mise à jour...

Commentaire de lnp le 04/07/2005 13:15:36

J'ai posté un commentaire pour que les mises-à-jour soient visibles...

Commentaire de lordskyser1 le 14/07/2005 16:48:12

"Un nom de famille peut être encore plus compliqué je ne le scannerait pas avec ça" GRENARD

Ok, mais peux-tu préciser comment tu "scannerais" un nom de famille ou un prénom stp? C'est ce que je cherche en ce moment et j'ai bien du mal à trouver. J'ai posté un message sur le forum à ce sujet, mais personne n'y a encore répondu, est-ce vraiment si complexe?

Commentaire de GRenard le 14/07/2005 20:15:11

je sais pas plus que toi mais moi je ferais peut-être un range de caractères ou alors des caractères interdits (^)...
Je ne sais pas plus que toi sur le coup la... si je savais je le posterais moi même...

Commentaire de Anthomicro le 14/07/2005 20:16:35

Un nom de famille peut comporter :

-des lettres
-une ou plusieurs(sic) apostrophes (et encore)
-un ou plusieurs traits d'union.

Je vois pas ensuite ce qu'il faut rajouter...

Commentaire de GRenard le 14/07/2005 20:52:36

les lettres il faut y inclures tous les lettres avec accent, c'est de ça dont je voulais parler...

Commentaire de Anthomicro le 14/07/2005 20:56:35

ok, bah tu supprimes les accents avant de parser le nom de famille, y'a des sources sur ce site montrant le principe (une ligne avec un str_replace)

Commentaire de lordskyser1 le 15/07/2005 10:09:57

Mouai, c'est la solution de facilité... lol je plaisante. Mais si on veut les conserver, il se pose un autre problème, c'est qu'il y a des accents qui n'existent pas dans la langue de Molière (ex: n accent grave), donc pour le range dur dur...

Commentaire de lnp le 15/07/2005 11:28:09

Je poste un commentaire pour que les mises-à-jour soient visibles... C'est un peu lourd mais au moins cela fonctionne...

Commentaire de lordskyser1 le 15/07/2005 14:10:23

J'ai testé la fonction pour corriger le nom. Alors dans la zone de texte nom je met alex@\'(^^/:) et après passage de la fonction j'ai ALEX@\'(^^/:  !!! Bref, les caractères non autorisés dans un nom sont loin d'être tous détectés et enlevés... En tout cas je suis étonné de ne pas trouver de fonction de vérification d'un nom qui soit exhaustive, c'est pourtant nécessaire à quiconque crée un site avec inscription de membres...bizarre

Commentaire de lnp le 15/07/2005 14:22:04

Monsieur lordskyser1,

J'ai testé avec la dernière version de ma fonction est voilà le résultat :

$_REQUEST['test'] = "alex@\'(^^/:)";
echo fx_filter('test','NOM');
// affichage : ALEX

Et toi ? ? ? Toujours les mêmes bugs ? ? ?

Commentaire de Anthomicro le 15/07/2005 18:48:19

" Mouai, c'est la solution de facilité... lol je plaisante"

Bah non mais bon, pourquoi faire compliqué quand on peut faire simple ?

Commentaire de lordskyser1 le 15/07/2005 18:53:55

   en effet, c'est nettement mieux!!! cependant dans un nom il ne faut pas autoriser les underscore (_).
   Par contre, je n'ai pas pu tester si les lettres accentuées qui n'existe pas en français (n tildé ou o accent grave par exemple) sont correctement traitées car je ne sais pas comment les faire.
   De plus, à mon avis il serait peut être plus judicieux que la fonction renvoie true si le nom est correct, false sinon, afin que ce soit plus facile à exploiter dans le cadre d'une vérification de formulaire (si false --> redirection vers le formulaire). Sais-tu quelles fonctions je dois utiliser pour faire cela stp? Parce que la çà fait deux aprem que je cherche et... je sèche toujours. Alala les débuts en php c'est laborieux lol.
   Je n'ai pas encore testé les autres 'case' car je bloquais la-dessus, mais je vais pas tarder vu que j'essaie de vérifier les infos d'un formulaire d'inscription en php. Si ca t'intéresse d'ailleurs j'ai une fonction javascript pas mal pour vérifier la validité d'un email, en tout cas plus complète et surement plus juste que celles que j'ai pu croiser, enfin je crois hihi.

En tout cas FELICITATIONS pour le travail que tu as déjà accompli!

Commentaire de lordskyser1 le 15/07/2005 18:57:48

"Pourquoi faire compliqué quand on peut faire simple ?" --> Et pourquoi pas? <--> Pourquoi faire simple quand on peut faire compliqué? hihi

Commentaire de Anthomicro le 15/07/2005 19:13:01

lol après faut adapter la phrase ^^

bref pour les underscores tu peux utiliser la fonction strpos par exemple, si il ne s'agit que de ça...

Commentaire de GRenard le 15/07/2005 19:51:46

Tu m'Expliqueras aussi pourquoi tu vas chercher ca dans le request... c'est pas portable... pourquoi ne pas passer direct $_REQUEST['nom'] ...

Commentaire de Anthomicro le 15/07/2005 19:57:05

Tiens c'est vrai que ça serait préférable.

Commentaire de lnp le 15/07/2005 21:35:21

Petite explication :

Comme en PHP, il n'y a pas vraiment de typage pour les variables, alors j'utilise cette fonction. Fonction que j'ai piqué dans un de mes cours de programmation, que vous retrouverai avec ce lien "http://saphirtech.com/p5/web_dynamique.pdf". La fonction, je l'ai donc prise comme elle nous a été enseignée et finalement en l'étudiant un peu, je m'y suis adapté. Maintenant je l'utilise partout où j'ai des variables transmises via le tableau $_REQUEST. Depuis que je l'utilise j'ai ajouté les "types" dont j'avais moi-même besoin. C'est, d'ailleurs, la vocation première de cette fonction. Cette fonction sert aussi de test de sécurité. Elle vérifie ainsi que la variable a bien été transmise.

En fait, dans les exemples de cours, la fonction est surtout utilisée de la manière suivante :

if ( $_REQUEST['nom'] == fx_filter( 'nom' , 'NOM' ) ) {
  echo $_REQUEST['nom'];
}

Comprenez-vous mieux ?


LNP...
pour vous...

Commentaire de Anthomicro le 15/07/2005 21:55:10

oui donc ça convient pour ton cas personnel ;-)

Commentaire de lnp le 15/07/2005 22:00:32

Oui... Mais mon cas n'est pas unique sur Terre... D'autres peuvent prendre cette fonction pour l'utiliser, l'améliorer ou l'adapter à leurs propres cas d'utilisation...

LNP...
pour vous...

Commentaire de lordskyser1 le 16/07/2005 10:48:57

Pour ma part je vais utiliser cette fonction pour savoir si le nom entré est correct :

function verif_nom($txt) {
$txt =str_replace("'","",$txt);
$txt = str_replace(" ","",$txt);
$txt = str_replace("-","",$txt);
if (ctype_alpha($txt)) { return true;}
return false;
}

Puis s'il ne l'est pas, j'utiliserai ta fonction nom pour faire une suggestion de saisie à l'utilisateur. Je testerai les autre CASE cet aprem ou demain et je te mettrai une note à ce moment (surement bonne hihi)

Commentaire de GRenard le 16/07/2005 18:54:51

Une suggestion de nom... Aye faut être nul pour que quelqu'un se fasse suggérer un nom...
"Je crois que ton nom est incorrect, est-ce que cela serait plutôt XX..."
TSSS loll

Commentaire de lordskyser1 le 16/07/2005 21:22:05

ba quand tu fais une recherche sous google et que tu fais une faute de frappe, il te suggère bien la bonne orthographe (ex: vlile --> Essayez "ville"). Tu dois bien te marrer alors si tu lol à chaque fois que tu fais une faute dans ta recherche sous google et qu'il te fais une suggestion... hihi

Brice de nice ;-)

Commentaire de GRenard le 16/07/2005 21:59:47

... et un nom de famille... si je marques mon nom de famille
"Wougadougourastou" tu crois qui va me proposer quelque chose ton script ? (c'est pas mon nom en passant...)

Commentaire de Anthomicro le 16/07/2005 22:17:27

En même temps un nom ça a pas forcément une orthographe précise :-)

Commentaire de lnp le 17/07/2005 09:09:20

J'ai souvent entendu dire que les noms n'avaient pas d'orthographe... Mais la particularité d'un nom est qu'il ne contient pas tous les caractères. Il ne contient que des lettres accentuées ou pas et des apostrophes et des tirets... Quoi d'autre ? Je ne vois pas quoi d'autres... Des chiffres quelques fois à la fin, mais cela reste assez rares quand même !

LNP...
pour vous...

Commentaire de lordskyser1 le 17/07/2005 10:36:40

Non, si tu tapes Wougadougourastou il ne proposera rien vu que ce nom ne contient aucun caractère spécial interdit, il se contentera de le mettre en majuscule avant de l'enregistrer en base (que veux tu qu'il corrige? c'es quoi l'erreur dans ce nom?). Par contre si tu tapes Wougadougou(rastou parce que tu as dérapé sur la parenthèse, il te fera remarquer que çà doit plutôt être WOUGADOUGOURASTOU. Tu copie-colles et hop l'erreur est réglée en 2sec. Tu comprends GRenard?
A part çà je ne savais pas qu'il y a avit parfois des chiffres à la fin d'un nom! J'ai beau chercher, je ne me souviens pas avoir croisé de tels noms si ce n'est pour les login, tu as un exemple LNP stp? Au fait je t'ai mis 9/10 ;-)

Commentaire de lnp le 18/07/2005 06:59:56

MERCI LORDSKYSER1 pour la bonne note que tu as attribué à cette source... Merci beaucoup. N'hésitez pas à noter que je puisses juger le niveau de mes sources...

Quand au nom qui comportent des chiffres, voilà quelqueS exempleS :
_ Le roi Louis 14
_ Le roi Louis 16
_ Le pape Jean-Paul 2
Je crois aussi que cela se fait de numéroter les noms des enfants et petits-enfant s'ils portent le même nom que le grand-père... Effectivement cette info est à confirmer.
C'est vrai qu'en général les chiffres sont plutôt sous une forme romaine...

Merci aux autres pour les commentaires et les suggestions.

LNP...
pour vous...

Commentaire de lordskyser1 le 18/07/2005 10:25:29

Effectivement, je n'avais pas envisagé cette possibilité. Mais comme tu l'as aussi fait remarquer, à mon avis il s'agit de chiffres romains, autrement dit de lettres quand meme. Au cas où tu voudrais avoir une fonction qui te renvoie un message d'erreur si le nom de famille est incorrecte plutot que de le corriger, je viens d'en mettre une au point, tout débutant que je suis en php :

//--------------------------------------------------------------
// verif_nom : fonction qui permet de vérifier que le nom a bien
//été saisi, qu'il est correctement formaté et qu'il ne dépasse
//pas une certaine longueur.
//---------------------------------------------------------------
function verif_nom($nom){
      $tailleMax = 70; // taille du champs dans la BDD
      $erreur = '';
      // si le champs n'est pas vide
      if($nom!='') {
                 // on enlève les espaces de part et d'autre de la saisie, on convertit les tags html (qui peuvent
// poser des problème au niveau de la sécurité, et on enlève les antislashes de la chaîne.
$champs = stripslashes(htmlentities(trim($nom)));
// expression régulière permettant de vérifier la validité du nom
     $regex = "![\&\"\#\{\(\[\|\\\@\)\]\+\=\}\£\$\¤\µ\*\%\€\<\>\,\?\;\.\:\/\!\§\_\²0-9\^\`]|[ ]{2,}|\- *\'|\' *\-|\' *\'|\- *\-|^\-|\'$|\-$!";
     // si le nom contient un caractère invalide ou qu'il est vide
if(preg_match($regex,$champs)||$champs==''){
    // on avertit l'utilisateur que le champs n'est pas valide
        $erreur = 'Nom incorrect.';
     }
// on vérifie si le nom est trop long
elseif(strlen($nom)>$tailleMax){
    $erreur = 'Nom trop long de ' . (strlen($nom)-$tailleMax) . ' caractère(s).';
}
      }
  // si le champs est vide
      else{
     // on avertit l'utilisateur que le champs est vide
         $erreur = 'Veuillez saisir votre nom svp.';
      }
  return $erreur;
}

Voilà, c'est un peu long et des améliorations sont surement possible mais en attendant chez moi çà marche, j'ai beau eu testé je n'ai pas encore réussi à feinter la fonction.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales