fonction eregi

Eléphanteau du PHP | 19 Messages

06 avr. 2019, 09:10

Bonjour
Je sollicite votre aide afin de mettre à jour un ancien formulaire que je souhaite garder car il est très simple et le retour d’envoi est en self.
Il utilise la fonction eregi obsolète depuis quelques années …
Je l’ai remplacé par preg_match en vain, j’ai un message d’erreur
Warning : preg_match (): No ending delimiter '
Et class='erreur’ qui s’affiche au-dessus du message
http://www.chalets-de-pierretoun.com/pip.php

Quelle serait la solution ?
Merci pour votre aide ou vos conseils.
Bon weekend

Code : Tout sélectionner

<h1>Contact<br /> <? if (isset($_POST['f_envoyer'])) { $email = trim($_POST['f_email']); $message = $_POST['f_message']; $erreur_email = 0; $erreur_message = 0; $retour = ""; $destinataire = "[email protected]"; $sujet = "contact"; $merci = "Votre message à bien été envoyé, merci."; if ($email == "") { $retour .= "Entrez votre adresse email.<br />"; $erreur_email = 1; } else { if (! eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$",$email)) { $retour .= "L'adresse email n'est pas correcte.<br />"; $erreur_email = 1; } } if ($message == "") { $retour .= "Vous avez oublié votre message.<br />"; $erreur_message = 1; } if ($retour =="") { $contenu .= $email."\n"; $contenu .= $message; mail($destinataire,$sujet,$contenu,"FROM:[email protected]"); $retour = $merci; $email = ""; $message = ""; } } else { $email = ""; $message = ""; } ?> </h1> <form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" id="formulaire"> <? if ($erreur_email == 1){echo "class='erreur'";} ?><p>Votre email : </p> <div><input name="f_email" type="text" id="f_email" size="40" maxlength="40" value = "<? echo $email ?>" /> </div> <? if ($erreur_message == 1){echo "class='erreur'";} ?> <p>Votre message : (<span class="rouge">Contact t&eacute;l&eacute;phonique, indiquez votre N&deg; de T&eacute;l </span>) </p> <div><textarea name="f_message" cols="60" rows="5" id="f_message" ><? echo $message ?></textarea> </div> <div id="go"><input type="submit" name="f_envoyer" value="Envoyer" /> </div> </form> <p class='retour'> <? echo $retour; ?> </p> </div>

Avatar du membre
Mammouth du PHP | 1564 Messages

06 avr. 2019, 19:06

Bonjour, en effet, la fonction est obsolète et il faut la remplacer par preg_match, vous devez mettre des ## au début et à la fin de la regex, exemple: ("#[0-9]+#")

ensuite mettre un echo avec SERVER PHP_SELF est une faille de sécurité car on peut rentrer un code dans l'URL qui sera affiché directement dans le code source de votre page, mettre plutôt une URL absolue ou relative, exemple "http mon site/page" ou "mapage.ext" ou même "mondossier/mapage.ext"

pour la vérification d'un email avec preg_match, un code gratuit ici: http://www.c2script.com/scripts/verifie ... hp-s2.html

votre <? if ($erreur_email == 1){echo "class='erreur'";} ?><.. s'affiche dans la page après la balise <form>, il faut le mettre à l'intérieur d'une balise


bref, ce code est à refaire entièrement, un script simple pour envoyer un mail en PHP disponible ici http://www.c2script.com/scripts/formula ... hp-s6.html