Mon formulaire n'accepte pas les adresses mail avec maj+minusc.

Georges97427 Messages postés 54 Date d'inscription mardi 28 juin 2011 Statut Membre Dernière intervention 21 février 2013 - 17 févr. 2013 à 21:59
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 - 19 févr. 2013 à 12:16
Bonjour,

Débutant,
Mon formulaire n'accepte pas à la rubrique, E-mail une adresse E-mail avec majuscules et minuscules "mélangées" ex:
monPrenom@gmx.de
Lorsqu'on l'envoie je reçois le message:
syntaxe du e-mail incorrecte ou majuscule.
je ne vois pas!
Dans mon fichier envoyer.php, j'ai pensé à le replacer par :
function checkMail($mail=null){
if($mail!=='' && filter_var($mail,FILTER_VALIDATE_EMAIL))return true;
return false;
}

Mais ceci ne change rien.
Merci de vote aide, car j'ai aucune idée.
Cdt
Voilà le code du fichier:j'ai laissé l'ancienne solution!
<?php
session_start();
/******************************************************************************/
//mettre ici adresse du webmaster ou administrateur ou contact commercial ...
$destinataire = "monnom@wanadoo.fr";
/******************************************************************************/
function checkMail($mail=null){
if($mail!=='' && filter_var($mail,FILTER_VALIDATE_EMAIL))return true;
return false;
}

/* ------ ancienne solution-----------
function checkMail($mail=null){
if(preg_match("/^[\d\w\/+!=#|$?%{^&}*`'~-][\d\w\/\.+!=#|$?%{^&}*`'~-]*@[A-Z0-9][A-Z0-9.-]{1,61}[A-Z0-9]\.[A-Z]{2,6}$/ix",$mail)){
return true;
}else{
return false;
}
}
*/


// -----------------------------------------
// (il manque $v , $v=htmlentities(trim($v));
// par
// -----------------------------------------

$err = null;
foreach($_POST as $k => $v){
  if(empty($_POST[$k])){
  $err .= $k.' est vide
';
  }else{
  $v=htmlentities(trim($v));
  }
} 

if(isset($_POST['code']) && isset($_SESSION['code']) && !empty($_SESSION['code']) && $_POST['code']===$_SESSION['code']){

// Pour chaque variable on verifie l'existance d'une valeur.

   if(empty($err) && checkMail($_POST['email'])===true){
        
        //aucune erreur preparation du mail pour envoi.
        $from = $_POST['email'];
        $message  = "Vous avez reçu un message
";
        $message .= "IP : ".$_SERVER["REMOTE_ADDR"]." en date du ".date('d-m-Y à H:i:s')."
";
        $message .= "
Message : 
".wordwrap($_POST['message'],100,"
",true)."

";
        //@ $text = "Un mot très très loooooooooooooooooong.";
        //@ $newtext = wordwrap($text, 8, "\n", true);
        //@ echo "$newtext\n";
                                                                        
        $msg='';
        unset($_POST['envoi']);
        unset($_POST['code']);
        unset($_POST['message']);
        
        foreach($_POST as $k => $v){
        $msg .= ''.$k.' : '.$v.'

';
        }
        
        $m = $message.$msg;
        
$headers  = 'From: "Contact_du_site "'."\n";
        $headers  = 'From: "Contact_du_site "<deuxieme@wanadoo.fr>'."\n";
        $headers .= 'Reply-To: '.$_POST['email']."\n";
        $headers .= 'Content-Type: text/html; charset="UFT-8"'."\n";
        $headers .= 'Content-Transfer-Encoding: 8bit';
        
            if(empty($err) && mail($destinataire, "Contact_de_client", $m, $headers)){
            
            unset($_SESSION['code']);
            echo '<hr>Message envoyé (erfolgreich abgeschickt) !

            Votre IP : '.$_SERVER['REMOTE_ADDR'].' est concervée
            jusqu\'au traitement du mail afin d\'éviter les abus !
[javascript:history.back(); RETOUR-zurück]
<hr>';
            }else{
            echo '<hr>Un problème sur le serveur n\'a pas permit l\'envoi de votre message.
            
Merci de réessayer ultérieurement-bitte später versuchen

            ou de me joindre directement par mail

            à l\'adresse : '.$destinataire.'
[javascript:history.back(); RETOUR]
<hr>';
            }
        
    }else{
        
                if(!checkMail($_POST['email'])){
                $err .= '<hr>Vérifier votre e-mail ?<hr>';
                $err .= '[javascript:history.back(); RETOUR]';
                }else{
                $err .= '[javascript:history.back(); RETOUR]';
                }
        
    }


unset($_POST); 

echo $err;

}else{
/*
rien envoyer ou acces direct interdit
on redirige vers le formulaire que l'on vide
et si la page n'existe pas vers google
*/  
  if(file_exists('../formulaire.html')){
  header('Location: ../formulaire.html');exit;
  }else{
  header('Location: http://www.google.us');exit;
  }

}
?>

13 réponses

cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
17 févr. 2013 à 23:07
Salut, j'ai fait ceci pour tester la fonction et elle est positive sur mon serveur.

<?php
$email = "toTo@exAmple.be"; //Note the .com missing
echo "PHP Version: ".phpversion().'
';
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo $email.'
';
    var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
}else{
    var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));   
}


et j'ai une réponse positive
PHP Version: 5.4.3
toTo@exAmple.be

string 'toTo@exAmple.be' (length=15)


Peux-tu tester cette méthode sur ton serveur et me dire ce quelle en retourne.

stéph
0
Georges97427 Messages postés 54 Date d'inscription mardi 28 juin 2011 Statut Membre Dernière intervention 21 février 2013
18 févr. 2013 à 03:48
Salut Stéph, fonctionne aussi sur mon serveur j'ai le même résultat.
Où l'insérer dans le formulaire?
Merci!
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
18 févr. 2013 à 09:30
Salut, tu peux remplacer la méthode de la fonction checkMail() par ceci
<?php
function checkMail($email) {
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) 
        return true;
    else 
        return false;
}


Tu constateras que j'ai supprimé "$mail!==''" car le filtre fait cette vérification.
Et comme cette fonction est fait uniquement pour vérifier les e-mails, j'ai également retirer en paramètre de la fonction que $email ne pouvait être égal à nulle car c'est impossible.

stéph
0
Georges97427 Messages postés 54 Date d'inscription mardi 28 juin 2011 Statut Membre Dernière intervention 21 février 2013
18 févr. 2013 à 14:05
Stéph malheureusement ça ne fonctionne pas.
Voilà j'ai installé ta modification dans mon fichier et je l'ai transférer sur mon site:

http://hebergement974.olympe.in/index.html

(rubrique Réservation > formulaire)
Je l'ai rempli et je me suis envoyé un formulaire rempli.
Sitôt que je rempli la rubrique E-mail par
monPrenom@gmx.de je reçois le message de syntaxe incorrecte, si je rentre une E-mail monprenom@gmx.de
tout semble fonctionner.
J'ai découvert ce disfonctionnement par hasard.
Tu peux essayer et tu verras le message.
Cdt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
18 févr. 2013 à 14:33
C'est très étrange.

Essaye ceci :
<?php
function checkMail($email) {
    if (preg_match('/^[_:alnum:-]+(\.[_:alnum:-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $email)) 
        return true;
    else 
        return false;
}


Voici une doc intéressante.

POSIX Non-standard Perl Vim ASCII Description
--------------------------------------------------------------------------------------------
[:alnum:] [A-Za-z0-9] Alphanumeric characters

Je viens de la créer.
Logiquement, cela doit fonctionner, je croise les doigts ;)

stéph
0
Georges97427 Messages postés 54 Date d'inscription mardi 28 juin 2011 Statut Membre Dernière intervention 21 février 2013
18 févr. 2013 à 16:31
Stéph si je puis me permettre essaye de remplir mon formulaire (tu as mon URL) et vérifie toi-même avec
toTo@exAmple.be
et donne-moi le résultat.
Je vais essaye ta nouvelle proposition.
Georges
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
18 févr. 2013 à 16:42
A plusieurs reprise, j'ai essayé avec l'erreur "Syntaxe du e-mail incorrecte", mais je ne peux rien faire avec le site, je n'ai pas accès au code source.

Mais, l'erreur qui est retourné, n'est pas la même que dans le code PHP que tu postes.
<?php
*...
if(!checkMail($_POST['email'])){
    $err .= '<hr>Vérifier votre e-mail ?<hr>';
    $err .= '[javascript:history.back(); RETOUR]';
}
*...


Sur le site : Syntaxe du e-mail incorrecte
Dans ton poste : Vérifier votre e-mail ?

C'est pas le même code PHP qui gère l'erreur du formulaire.

stéph
0
Georges97427 Messages postés 54 Date d'inscription mardi 28 juin 2011 Statut Membre Dernière intervention 21 février 2013
18 févr. 2013 à 17:57
Oui! je viens de m'aperçevoir que dans mon fichier
formulaire.html se trouve un script et la on trouve l'erreur (pardon, mais j'étais tellement omnubilé que je l'avais oublié).
Je t'envoie le code du script du fichier formulaire.html.
		
<script>

function isValidEmail(email){ 
    var RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/ 
    if(RegExp.test(email)){ 
        return true; 
    }else{ 
        return false; 
    } 
} 

function verif_des_champs(frm){

var mess_info = "";

if(!isValidEmail(frm.email.value)){
mess_info +='\nSyntaxe du e-mail '+frm.email.value+' incorrecte ou majuscule';
}else{
}

if(frm.code.value==''){
mess_info +='\nCode antispam absent';
}else{
}  

if(mess_info!=""){
alert(mess_info);
return false;      	
}else{
return true;
}
}
</script>
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
18 févr. 2013 à 18:04
:) c'est du JavaScript !

Tu auras beau essayer de modifier ton code PHP, tu auras toujours la même erreur car même si ton code PHP filtre correctement l'erreur voir même, tu le supprimes, le JavaScript ne va pas le laisser passer l'e-mail.

Donc, tu dois pas te préoccuper du code PHP mais du JavaScript.

stéph
0
Georges97427 Messages postés 54 Date d'inscription mardi 28 juin 2011 Statut Membre Dernière intervention 21 février 2013
18 févr. 2013 à 18:41
OK!
Merci Stéph pour ton aide, elle m'a vraiment ouvert les yeux au sens propre du terme.
Je vais voir le javascript.
Cdt
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
18 févr. 2013 à 19:28
Avec plaisir.

Bien à toi,

stéph
0
Georges97427 Messages postés 54 Date d'inscription mardi 28 juin 2011 Statut Membre Dernière intervention 21 février 2013
19 févr. 2013 à 04:42
Stéph! pour terminer la discussion.

Dans le script (js):
var RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/ 

j'ai remplacé :
[a-z][0-9] par [a-zA-Z0-9]
et ça fonctionne ....si ça peut aider quelqu'un!
majuscules et minuscules sont admises.
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
19 févr. 2013 à 12:16
Super :)
A+

stéph
0
Rejoignez-nous