8791 sujets

Développement web côté serveur, CMS

Bonjour pluvieux...

Tout est dans le titre, le problème se situe dans un formulaire de contact simple pour envoyer
du mail et donc vérifier la validité de l'@dresse...

J'aimerai, sans avoir à trop modifier mon code, régler ce pb d'obsolescence avec la fonction "preg_match" par exemple mais je ne sais comment faire au plus simple... et efficace si possible !


Voici mon bout de code :



header('Content-Type: text/html; charset=utf-8');
ini_set('arg_separator.output', '&');
ini_set("url_rewriter.tags","a=href,area=href,frame=src,iframe=src,input=src");
session_start();
$email_webmaster = "name@ndd.fr";

		if (isset($_POST["envoyer"])){

        $etat = "erreur";

        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));
        }
		
        if (isset($_SESSION['captcha']) && $_POST['captcha'] == $_SESSION['captcha']){
                  $_POST["captcha"]=trim(stripslashes($_POST["captcha"]));
        }

		if (!empty($_POST['protection']) || $_POST['protection'] !== ''){
				 $erreur='<p class="erreur">Ce message est assimilé à un Spam...</p>';
		}	
	
		
///////////// --- test de la validité des champs ---

       
        else if (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
                 	$erreur='<p class="erreur">Cette adresse e-mail semble invalide...</p>';
        }
				
        else if (empty($_POST["message"])) {
                 $erreur='<p class="erreur">Vous n\'avez pas écrit de message...</p>'; 
        }
	
		else if (isset($_SESSION['captcha']) && $_POST['captcha'] != $_SESSION['captcha']){
				  $erreur='<p class="erreur">La clé de vérification semble invalide...</p>';
            session_destroy();
        }
		else if (substr_count($_POST["message"], "http://")>=1) { 
            $erreur='<p class="erreur">!! Spam !!</p>';
        } 
		
        else {
                 $etat="ok";
        }
}
		else {
           $etat="attente";
}



Merci d'avance...
Sam
je crois avoir trouvé avec ça :


if(!preg_match("#^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$#",$_POST["email_expediteur"])){
		// e-mail invalide
                 	$erreur='<p class="erreur">Cette adresse e-mail semble invalide...</p>';
        }


J'avais un "Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\wamp\www\..." car je n'avais pas encadré les conditions par des délimiteurs #.

Si ça peut aider...

Je test un chouille avant de marquer [Resolu] et si toutefois il y avait des commentaires...

Merci...
Bonjour,

L'express régulier est mal écrite tout simplement il faudrait vérifier dans une chaine morceaux par morceaux et en indiquant combien de fois un caractères peut ce répéter .

Dans ton script pour le mail serait :


if(!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-z]{2,4}$#",$_POST["email_expediteur"])){ 
        // e-mail invalide 
                     $erreur='<p class="erreur">Cette adresse e-mail semble invalide...</p>'; 
        }