8791 sujets

Développement web côté serveur, CMS

Bonjour,

Un copain informaticien m'a fait un programme pour vérifier si le mail est bien rempli.

J'avais un problème en php 5.3, donc il m'a refait le code le voici

// Nettoyage des entrées
while(list($var,$val)=each($_POST)){
if(!is_array($val)){
$$var=strip_tags($val);
}else{
while(list($arvar,$arval)=each($val)){
$$var[$arvar]=strip_tags($arval);
}
}
}
// Formatage des entrées
$f_3=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
$f_4=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_4)));
$f_5=strip_tags(trim($f_5));
$f_6=str_replace("\n","<BR>",$f_6);

// Verification des champs

if($f_1==0){
$erreur.="<li><span class='txterror'>Le sujet n'a pas été défini.</span>";
$errf_1=1;
}
if($f_2==0){
$erreur.="<li><span class='txterror'>La civilité n'a pas été défini.</span>";
$errf_2=1;
}
if(strlen($f_3)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
$errf_3=1;
}
if(strlen($f_5)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Email &raquo; est vide ou incomplet.</span>";
$errf_5=1;
}else{
if(!preg_match('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
$f_5)){
$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
$errf_5=1;
}
}
if(strlen($f_6)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Message &raquo; est vide ou incomplet.</span>";
$errf_6=1;
}
if($erreur==""){


Ca marchait nickel chrome sauf que depuis quelques jours ça ne fonctionne plus !!! Le serveur est toujours en php 5.3.3

J'ai comme message d'erreur :

Warning: preg_match() [function.preg-match]: Unknown modifier '_' in

Je vois pas la solution, j'ai beau cherché je trouve pas.

Merci de votre aide.
Modifié par CVS (21 Aug 2012 - 17:36)
Hello,

Je sais pas d'où sort cette expression régulière, mais elle est franchement compliquée.

Voici ce que j'ai confectionné pour vérifier la syntaxe d'une adresse email :

%^[a-z0-9]+[-_.]?[a-z0-9]+[-_.]?[a-z0-9]+@[a-z]+\.[a-z]{2,}$%

Essaies donc ça et dis moi si ça te convient.

Bye !
Merci pour la ligne de code je tape ça comment ?

Je suis pas un grand spécialiste.
Modifié par CVS (21 Aug 2012 - 17:20)
Mouais...

A mon souvenir, ce filtre est très basique et laisse passer beaucoup d'adresses incorrectes.

Après, déclarer une expression régulière comme étant officielle c'est moyen. Surtout si celle qui est proposée dans le lien ne semble pas à jour. Chacun fixe l'exactitude de la vérification comme il l'entends.