5007 sujets

Sémantique web et HTML

Bonjour,

Je rencontre un problème avec mon formulaire de contact depuis le passage au php 7.2...

J'ai déjà remplacé "eregi_replace" par "preg_replace"

Voici l'erreur en question :
Warning: preg_match(): Unknown modifier '_' in /homepages/18/d536574719/htdocs/contact.php on line 62

Ci-dessous, la ligne en question :
$f_7)){

Et ci-dessous, mon code complet :
<?php
header('Content-Type: text/html; charset=utf-8');
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
$list['f_8']=array("Sélectionnez","Aménagement de comble","Maison individuelle","Extension-Agrandissement","Changement de menuiseries","Changement - Pose de velux","Rénovation - Charpente","Escalier sur mesure","Travaux d'isolation","Autre");
if(isset($_POST['submit'])){
$erreur="";
// 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_1=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
$f_2=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
$f_3=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
$f_4=trim(preg_replace("[^0-9+]", "", $f_4));
$f_5=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_5)));
$f_6=trim(preg_replace("[^0-9\ +]", "", $f_6));
$f_7=strip_tags(trim($f_7));
// Verification des champs
if(strlen($f_1)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; NOM : &raquo; est vide ou incomplet.</span>";
$errf_1=1;
}
if(strlen($f_2)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Prénom : &raquo; est vide ou incomplet.</span>";
$errf_2=1;
}
if(strlen($f_3)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse : &raquo; est vide ou incomplet.</span>";
$errf_3=1;
}
if(strlen($f_4)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Code Postal : &raquo; est vide ou incomplet.</span>";
$errf_4=1;
}
if(strlen($f_5)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Ville - Commune : &raquo; est vide ou incomplet.</span>";
$errf_5=1;
}
if(strlen($f_6)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Téléphone : &raquo; est vide ou incomplet.</span>";
$errf_6=1;
}
if(strlen($f_7)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Mail : &raquo; est vide ou incomplet.</span>";
$errf_7=1;
}else{
if(!preg_match('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
$f_7)){
$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
$errf_7=1;
}
}
if($f_8==0){
$erreur.="<li><span class='txterror'>Le champ &laquo; Type de travaux : &raquo; n'a pas été défini.</span>";
$errf_8=1;
}
if(strlen($f_9)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Message : &raquo; est vide ou incomplet.</span>";
$errf_9=1;
}
if($erreur==""){
// Création du message
$titre="CONTACT";
$header="From:CONTACT@domaine/contact.php\n";
$corps.="NOM : ".$f_1."\n";
$corps.="Prénom : ".$f_2."\n";
$corps.="Adresse : ".$f_3."\n";
$corps.="Code Postal : ".$f_4."\n";
$corps.="Ville - Commune : ".$f_5."\n";
$corps.="Téléphone : ".$f_6."\n";
$corps.="Mail : ".$f_7."\n";
$corps.="Type de travaux : ".$list['f_8'][$f_8]."\n";
$corps.="Message : ".$f_9."\n";
if(mail("domaine@wanadoo.fr", $titre, stripslashes($corps), $header)){
$ok_mail="true";
}else{
$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
}
}
}
?>

Merci d'avance de votre aide
Modifié par Freemuse (13 Jun 2019 - 08:55)
Salut,
A mon avis, c'est le "^" avant le "_" dans ta regex qui pose problème, mais je suis pas expert en expressions régulières^^
Sinon, pour vérifier que c'est un email valide, tu peux remplacer ta regex par un filter_var:

if(filter_var($f_7, FILTER_VALIDATE_EMAIL) === false){
			$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
		$errf_7=1;
}