par
mosquitout » 22 août 2007, 09:11
Bonjour,
Je mets en place ma toute première fonction de validation d'un formulaire. Après avoir fait x recherche, voilà ce que ca donne
function form_validator($post_data)
{ //prend les données d'un form pour les tester et les nettoyer
foreach($post_data as $cle => $val)
{
if(!get_magic_quotes_gpc())
{
$val = addslashes($val);
}
switch ($cle)
{
case "nomprod":
$test[$cle] = test_de_la_donnee($val, 'string', 45);
break;
case "prixHT":
$data_ok[$cle] = test_de_la_donnee($val, 'int', 5, 0);
break;
}
}
return $test;
}
// fonction de test sur les données transmises par formulaire
function test_de_la_donnee($contenu, $type, $taille_max, $defaut ='')
{
if( empty($contenu) ) return $defaut;
switch( $type ) {
case 'int': // Test si c'est un nombre. Renvoie defaut si ce n'est pas le cas
if( is_numeric( $contenu ))
{
if (strlen($contenu) > $taille_max)
{
return 'saisie trop longue';
}
else
{
return 'Ok';
}
}
else
{
return 'non numerique !';
}
break;
case 'string': // Enleve les caractères non autorisés dans une chaine de caracteres
if( is_string( $contenu ))
{
if (strlen($contenu) > $taille_max)
{
return 'saisie trop longue';
}
else
{
$contenu = eregi_replace("[^a-zA-Z0-9_&~@/,\.'()?! éèàêâôîûùç-]","",$contenu);
return 'Ok';
}
}
else
{
return 'pas une chaine !';
}
break;
default : // Si le type n'est pas répertorier $defaut est renvoyé
return $defaut;
}
return $contenu;
}
et ds le prg ou il y a mon formulaire j'appelle la fonction comme ceci:
$resultat_validation = form_validator($_POST);
var_dump ('$resultat_validation');
// si = ok => traitement, sinon => afficher messages contenu dedans
if ($resultat_validation == 'Ok')
else
Pour tester j'ai saisi en entrée: prixHT = "gf*)". Ma super fonction ne me renvoie rien
je pensai recevoir 'non numerique !' . Débutant, je ne vois pas ou est le pb ! pourriez-vous m'aider ?

Bonjour,
Je mets en place ma toute première fonction de validation d'un formulaire. Après avoir fait x recherche, voilà ce que ca donne
[php]
function form_validator($post_data)
{ //prend les données d'un form pour les tester et les nettoyer
foreach($post_data as $cle => $val)
{
if(!get_magic_quotes_gpc())
{
$val = addslashes($val);
}
switch ($cle)
{
case "nomprod":
$test[$cle] = test_de_la_donnee($val, 'string', 45);
break;
case "prixHT":
$data_ok[$cle] = test_de_la_donnee($val, 'int', 5, 0);
break;
}
}
return $test;
}
// fonction de test sur les données transmises par formulaire
function test_de_la_donnee($contenu, $type, $taille_max, $defaut ='')
{
if( empty($contenu) ) return $defaut;
switch( $type ) {
case 'int': // Test si c'est un nombre. Renvoie defaut si ce n'est pas le cas
if( is_numeric( $contenu ))
{
if (strlen($contenu) > $taille_max)
{
return 'saisie trop longue';
}
else
{
return 'Ok';
}
}
else
{
return 'non numerique !';
}
break;
case 'string': // Enleve les caractères non autorisés dans une chaine de caracteres
if( is_string( $contenu ))
{
if (strlen($contenu) > $taille_max)
{
return 'saisie trop longue';
}
else
{
$contenu = eregi_replace("[^a-zA-Z0-9_&~@/,\.'()?! éèàêâôîûùç-]","",$contenu);
return 'Ok';
}
}
else
{
return 'pas une chaine !';
}
break;
default : // Si le type n'est pas répertorier $defaut est renvoyé
return $defaut;
}
return $contenu;
}
[/php]
et ds le prg ou il y a mon formulaire j'appelle la fonction comme ceci:
[php]
$resultat_validation = form_validator($_POST);
var_dump ('$resultat_validation');
// si = ok => traitement, sinon => afficher messages contenu dedans
if ($resultat_validation == 'Ok')
else
[/php]
Pour tester j'ai saisi en entrée: prixHT = "gf*)". Ma super fonction ne me renvoie rien :(
je pensai recevoir 'non numerique !' . Débutant, je ne vois pas ou est le pb ! pourriez-vous m'aider ?
:lol: