Espace membres en php: envoi mail???

[Résolu/Fermé]
Signaler
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
-
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
-
bonsoir
j'ai un petit problème concernant un espace membres.
voilà, le, en fait c'est censé envoyer un mail de confirmation, mais ça ne le fait pas. On s'inscrit bien, mais on ne recoit pas d'e-mail voila le code si c'est plus clair comme ça :
<?php
//Identifiants de connexion à la base de données.
require("config.inc.php");

//On vérifie que la variable $_POST['inscription'] existe
if (isset($_POST['inscription'])) 
{
        //Si les variables contenant le pseudo, le mot de passe et l'email existent et contiennent quelque chose.
        if (isset($_POST['pseudo'], $_POST['mot_passe'], $_POST['email']) && !empty($_POST['pseudo']) && !empty($_POST['mot_passe']) && !empty($_POST['email']))
        {
                //Si le pseudo est supérieur à 3 caractères et inférieur à 35 caractères.
                if (strlen(trim($_POST['pseudo'])) > 3 && strlen(trim($_POST['pseudo'])) < 35) 
                {
                        //Si le mot de passe est supérieur à 4 caractères.
                        if (strlen(trim($_POST['mot_passe'])) > 4)
                        {
                                //Mesure de sécurité.
                                $pseudo = htmlentities(addslashes($_POST['pseudo']));
                                $mot_passe = htmlentities(addslashes($_POST['mot_passe']));
                                $email = htmlentities(addslashes($_POST['email']));
                                
                                //Hashage du mot de passe avec md5().
                                $mot_passe = md5($mot_passe);
                                
                                //Envoi du mail de confirmation.
                                $message = '
                                Bonjour '.$pseudo.'\n\n
                                Vous venez de vous inscrire sur "nom_du_site" et pour valider votre inscription, vous devez cliquer sur le lien suivant : <a href="http://adresse_du_site.com/confirmation.php?pseudo='.$pseudo.'">http://adresse_du_site.com/confirmation.php?pseudo='.$pseudo.'</a>
                                ';
                                
                                //Si le mail a été envoyé on peut enregistrer le membre
                                if (mail($email, 'Confirmation de l\'inscription sur [Nom_du_site]', $message))
                                {
                                        //Connexion à mysql.
                                        mysql_connect($host,$username,$password);
                                        mysql_select_db($bdd_name);
                                        
                                        //On éxécute la requête qui enregistre un nouveau membre.
                                        mysql_query("INSERT INTO membres (id, pseudo, mot_passe, confirmation, email) VALUES ('', '".$pseudo."', '".$mot_passe."', '0', '".$email."')");
                                        
                                        //Déconnection de mysql.
                                        mysql_close();
                                }
                                else
                                {
                                        echo 'Erreur : echec lors de l\'envoi du mail ! veuillez vous ré-inscrire';
                                }
                        }
                        else
                        {
                                echo 'Erreur : le mot de passe est trop court !';
                        }
                }
                else
                {
                        echo 'Erreur : le pseudo est soit trop court, soit trop long !';
                }
        }
        else
        {
                echo 'Erreur : vous avez oublié d\'entrer votre pseudo ou votre mot de passe ou votre adresse email !';
        }
}
?>

merci d'avance pour votre aide

7 réponses

Messages postés
1709
Date d'inscription
vendredi 7 juillet 2000
Statut
Membre
Dernière intervention
24 mars 2009
186
petite question con, ton hébergeur accept la fonction mail () ???
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
54
je pense enfin je suis pas sur, je vais aller demander à un admin (ifrance).....
Messages postés
1709
Date d'inscription
vendredi 7 juillet 2000
Statut
Membre
Dernière intervention
24 mars 2009
186
par ailleurs, j'ai pas l'impression que ton script envoie de mail
if (mail($email, 'Confirmation de l\'inscription sur [Nom_du_site]', $message))
                                {
                                        //Connexion à mysql.
                                        mysql_connect($host,$username,$password);
                                        mysql_select_db($bdd_name);
                                        
                                        //On éxécute la requête qui enregistre un nouveau membre.
                                        mysql_query("INSERT INTO membres (id, pseudo, mot_passe, confirmation, email) VALUES ('', '".$pseudo."', '".$mot_passe."', '0', '".$email."')");
                                        
                                        //Déconnection de mysql.
                                        mysql_close();
                                }

ca ca n'envoie pas de mail.
Pour envoyer un mail il faut au moins
mail($adresse,$titre,$message,$headers);

avec
$adressse l'adresse du destinataire du mail;
$titre le titre du mail
$message le corps du mail
$headers des headers optionnels
voire http://www.commentcamarche.net/faq/117-php-fonction-mail
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
54
bon normalement j'ai rajouté la fonction mail et je reprends mon ancien hebergeur (le seul qui accepte la fonction mail())
voilà :
                                //Envoi du mail de confirmation.
                                mail($email,'Inscription au site de X',
								$message = '
                                Bonjour '.$pseudo.'\n\n
                                Vous venez de vous inscrire sur le site de X et pour valider votre inscription, vous devez cliquer sur le lien suivant : <a href="http://adresse_du_site.com/confirmation.php?pseudo='.$pseudo.'">http://adresse_du_site.com/confirmation.php?pseudo='.$pseudo.'</a>
                                ';
                                )
                                //Si le mail a été envoyé on peut enregistrer le membre
                                if (mail($email, 'Confirmation de l\'inscription sur [Nom_du_site]', $message))
                                {
                                        //Connexion à mysql.
                                        mysql_connect($host,$username,$password);
                                        mysql_select_db($bdd_name);
                                        
                                        //On éxécute la requête qui enregistre un nouveau membre.
                                        mysql_query("INSERT INTO membres (id, pseudo, mot_passe, confirmation, email) VALUES ('', '".$pseudo."', '".$mot_passe."', '0', '".$email."')");
                                        
                                        //Déconnection de mysql.
                                        mysql_close();
                                }

le code est bon ou ça n'enverrai pas de mail à ton avis?
Messages postés
1709
Date d'inscription
vendredi 7 juillet 2000
Statut
Membre
Dernière intervention
24 mars 2009
186
pour
mail($email,'Inscription au site de X',$message = 'Bonjour '.$pseudo.'\n\nVous venez de vous inscrire sur le site de X et pour valider votre inscription, vous devez cliquer sur le lien suivant : <a href="http://adresse_du_site.com/confirmation.php?pseudo='.$pseudo.'">http://adresse_du_site.com/confirmation.php?pseudo='.$pseudo.'</a>';
)

je ferait
$message='Bonjour '.$pseudo.'\n\nVous venez de vous inscrire sur le site de X et pour valider votre inscription, vous devez cliquer sur le lien suivant : <a href="http://adresse_du_site.com/confirmation.php?pseudo='.$pseudo.'">http://adresse_du_site.com/confirmation.php?pseudo='.$pseudo.'</a>';
$sujet='Inscription au site de X';
$go= mail($email,$sujet,$message);

Je suppose que tes paramétres pour les headers sont définit ailleurs ...
Bon courage
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
54
eh bien en fait je n'en ai pas encore mit...
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
54
$go= mail($email,$sujet,$message);
c'est quoi en fait ce $go et est-ce que j'ai vraiment besoin de headers???
Messages postés
1709
Date d'inscription
vendredi 7 juillet 2000
Statut
Membre
Dernière intervention
24 mars 2009
186
je crois que les headers vont définir les reply-to ... et tout
je ne sais pas si c'est obligatoire
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
54
Ok merci et vraiment désolé pour les remerciements tardifs.^^'