Fonction de filtrage des données


Description

fonction de filtrage des données : Tout est dit, je pense...

Source / Exemple :


// 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...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.