Bonjour,

J'ai un système d'enregistrement d'utilisateurs qui est soumis à une validation par e-mail. Celle-ci fonctionne bien dans l'absolu mais je me suis rendu compte de quelque chose d'étrange dernièrement, il semble y avoir une incompatibilité entre le client de messagerie Hotmail et mon code.

Je m'explique : Lorsque je m'inscris avec une adresse hotmail, je reçois donc un email sur la boite en question. Si je passe par Mozilla Thunderbird, le lien de validation s'ouvre sans problème et valide mon compte mais si je passe par le client Hotmail directement, le lien ne s'ouvre pas.

Voici mon code :

<?php
if(!empty($_POST) && strlen($_POST'prenom'])>4 && filter_var($_POST'email'], FILTER_VALIDATE_EMAIL)) {
    $prenom = addslashes($_POST'prenom']);
    $email = addslashes($_POST'email']);
    $password = sha1($_POST'password']);
    $token = sha1(uniqid(rand()));
    $q = array('prenom'=>$prenom, 'email'=>$email, 'password'=>$password, 'token'=>$token);
    $sql = 'INSERT INTO users (prenom, email, password, token) VALUES (:prenom, :email, :password, :token)';
    $req = $cnx->prepare($sql);
    $req->execute($q);
    //Envoyer un mail pour la validation du compte
    $to = $email;
    $sujet = 'Activation de votre compte';
    $body = '
    Bonjour compagnon ! Vous souhaitez vivre une grande aventure sur Archelune ? Veuillez activer votre compte en cliquant ici ->
    <a href="http:www.archelune.fr/espace/activate.php?token='.$token.'&email='.$to.'">Activation du compte</a>';
    $entete = "MIME-Version: 1.0\r\n";
http://www.mozilla.org/fr/thunderbird/ $entete .= "Content-type: text/html; charset=UTF-8\r\n";
    $entete .= 'From: Archelune.FR ::' . "\r\n" .
    'Reply-To: XXXX@XXXX.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    mail($to,$sujet,$body,$entete);
    $valid_email = '<h3>Afin de valider votre inscription, un email vous sera envoyé dans quelques instants !</h3>';

}else{
    if(!empty($_POST) && strlen($_POST'prenom'])<4){
        $error_prenom = '<h3>Votre prénom doit comporter au minimun 4 caractères !</h3>';
    }
    if(!empty($_POST) && !filter_var($_POST'email'], FILTER_VALIDATE_EMAIL)){
        $error_email = '<h3>Votre Email n\'est pas valide !</h3>';
    }
}
?>

Auriez-vous une idée ? Merci d'avance.

3 réponses


Euh je regarde juste le code en speed et je remarque que si je m'apelle Léo, Léa, Zoé, Max ... par exemple je peux pas m'inscrire sur ton site c'est ça ?

Teilijan
Auteur

Bonjour à toi.

Si tu as effectivement un Pseudo ($prenom) comportant moins de 4 caractères, c'est exact. J'ai laissé "Prénom" dans le registre et cette condition car j'avais suivi le tutoriel, ce sont des détails que je verrais par la suite. Pour le moment, je me concentre sur l'aspect fonctionnel mais tu as toutefois raison de le souligner, tu ne pouvais pas savoir que sous la variable prénom se cachait pseudo.

C'est plus logique dans ce sens effectivement !