Validation par email

Signaler
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008
-
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
-
Bonjour,


Je cherche a faire une validation par email pour les utilisateurs puissent devenir membre. J'ai passablement de petit problème, notamment au niveau de la fonction mail, elle l'accepte pas comme je l'ai écrit. Si quelqu'un pouvait m'aider?


 


<?
if(isset($pseudo))
{
if(isset($newsl))
 $news= 1;
else
 $news=0;
 
$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$Validation = str_shuffle($chaine);


$message = 'Cher '.$pseudo.',';
$message .= 'Ceci est un mail automatique de confirmation d\'inscription au site de l\'Escobar';
$message .= 'Pour confirmer et ainsi terminer l\'inscription à votre compte, veuillez cliquer sur le lien de confirmation: ';
$message .= 'http://127.0.0.1/escobar/index.php?page=valid.php?pseudo='.str_replace(' ','%20',$pseudo); 
 
$RequeteInsertionPersonne = "INSERT INTO personne VALUES('',
              '".addslashes($nom)."',
              '".addslashes($prenom)."',
              '".addslashes($pseudo)."',
              '".addslashes($passe)."',
              '".addslashes($tel)."',
              '".addslashes($mail)."',
              '$news',
              '$Validation')"; 


              
$result = mysql_query($RequeteInsertionPersonne);
if($result)
 mail($mail,'Confirmation d\'inscription au site de l\'Escobar',$message);
 echo "Bravo, ton inscription a été validée";
else
 echo "une erreur est survenue, merci de réessayer plus tard.";
}
else
{
?>


Bienvenue sur la page d'inscription de l'Esco-Bar

<form name="inscription" action= "javascript:verifChamps();"; enctype="application/x-www-form-urlencoded" method="post">
  <fieldset>
   <legend> Création du compte </legend>
        ----

    ----

     Nom :,
     ,
    
    ----

     Prenom :,
     ,
    
    ----

     Pseudo : *,
     ,      
    
    ----

     Mot de passe : *,
     ,      
    
    ----

     Telephone :,
     ,
    
    ----

     Email : *,
     ,
    
    ----

     M'inscrire à la newsletter :,
     ,
    
    ----

     ,
     ,
    
    

    

    <small>Les champs marqués d'un * sont obligatoires.</small>  
  </fieldset>
</form>


<?
}
?>

Et voici ma page validation




<? 
include 'variables.inc.php';


// Connexion à la base de donnée
 $mysql_connect =mysql_connect($hostddb,$loginddb,$passddb);
 mysql_select_db($baseddb, $mysql_connect);
  $RequeteModifValid mysql_query("UPDATE personne SET Validation'1' WHERE pseudo ='$_GET[pseudo]'") or die ('erreur : '.mysql_error());
 echo 'Votre compte est validé, cliquez [bienvenu.php ici] pour vous connecter
';
?>

35 réponses

Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Bonjour,

 mail($mail,'Confirmation d\'inscription au site de l\'Escobar',$message);
La variable $mail existerait ça serait déjà bien.

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

voilà, je récupère les variables, ca joue toujours pas.

<?
if(isset($pseudo))
{
if(isset($newsl))
 $news=1;
else
 $news=0;
 
  $nom = $_REQUEST['nom'];
  $prenom = $_REQUEST['prenom'];
  $pseudo = $_REQUEST['pseudo'];
  $passe = $_REQUEST['passe'];
  $tel = $_REQUEST['tel'];
  $mail = $_REQUEST['mail'];
  
 
$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$Validation = str_shuffle($chaine);


$message = 'Cher '.$pseudo.',';
$message .= 'Ceci est un mail automatique de confirmation d\'inscription au site de l\'Escobar';
$message .= 'Pour confirmer et ainsi terminer l\'inscription à votre compte, veuillez cliquer sur le lien de confirmation: ';
$message .= 'http://127.0.0.1/escobar/index.php?page=valid.php?pseudo='.str_replace(' ','%20',$pseudo); 
 
$RequeteInsertionPersonne = "INSERT INTO personne VALUES('',
              '".addslashes($nom)."',
              '".addslashes($prenom)."',
              '".addslashes($pseudo)."',
              '".addslashes($passe)."',
              '".addslashes($tel)."',
              '".addslashes($mail)."',
              '$news',
              '$Validation')";


              
$result = mysql_query($RequeteInsertionPersonne);
if($result)
 
 echo "Bravo, ton inscription a été validée";
else
 echo "une erreur est survenue, merci de réessayer plus tard.";
}
else
{
?> 
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Maintenant la fonction mail n'est plus appelée.

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

Oui en effet, petit problème de copier-coller. Maintenant tout y est mais ca joue toujours pas.

<?
 if(isset($pseudo))
{
if(isset($newsl))
 $news=1;
else
 $news=0;

  $nom = $_REQUEST['nom'];
  $prenom = $_REQUEST['prenom'];
  $pseudo = $_REQUEST['pseudo'];
  $passe = $_REQUEST['passe'];
  $tel = $_REQUEST['tel'];
  $mail = $_REQUEST['mail'];
  
 
$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$Validation = str_shuffle($chaine);


$message = 'Cher '.$pseudo.',';
$message .= 'Ceci est un mail automatique de confirmation d\'inscription au site de l\'Escobar';
$message .= 'Pour confirmer et ainsi terminer l\'inscription à votre compte, veuillez cliquer sur le lien de confirmation: ';
$message .= 'http://127.0.0.1/escobar/index.php?page=valid.php?pseudo='.str_replace(' ','%20',$pseudo); 
 
$RequeteInsertionPersonne = "INSERT INTO personne VALUES('',
              '".addslashes($nom)."',
              '".addslashes($prenom)."',
              '".addslashes($pseudo)."',
              '".addslashes($passe)."',
              '".addslashes($tel)."',
              '".addslashes($mail)."',
              '$news',
              '$Validation')";


              
$result = mysql_query($RequeteInsertionPersonne);
if($result)
 mail($mail,'Confirmation d\'inscription au site de l\'Escobar',$message);
 echo "Bravo, ton inscription a été validée";
else
 echo "une erreur est survenue, merci de réessayer plus tard.";
}
else
{
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Si j'ai bien compris l'insertion se fait bien mais c'est bien l'envois de mail qui va pas?

D'après la doc il doit y avoir un from il faut donc l'ajouter dans les additionnalheaders ou dans le php.ini si le from n'est pas defini dans ton php.ini la fonction ne peut pas fonctionner.

http://fr.php.net/manual/fr/function.mail.php
<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

Non, ben même l'insertion ne fonctionne pas, il m'affiche le message d'erreur de la clause else
(echo "une erreur est survenue, merci de réessayer plus tard.";). Pige pas.
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
if(isset($newsl))
 $news=1;
else
 $news=0;

news n'est pas defini avant ça? il est defini qu'après l'avoit testé? y'a un problème dans ce cas la...

idem pour pseudo

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

Si j'écris ma requête d'insertion comme ceci, y a aucun problème, les informations s'inscrive dans la bd, c'est lorsque je modifie pour avoir une confirmation par mail qu'il y a problème. Donc le problème ne vient pas de

if(isset($pseudo))
{
if(isset($newsl))
 $news=1;
else
 $news=0;

Mais d'ailleurs. Je t'avoue que je navigue pas mal.

//Le code qui fonctionne mais sans la confirmation par mail


<?
if(isset($pseudo))
{
if(isset($newsl))
 $news=1;
else
 $news=0;
$query = "INSERT INTO personne VALUES ('',
          '".addslashes($nom)."',
          '".addslashes($prenom)."',
          '".addslashes($pseudo)."',
          '".addslashes($passe)."',
          '".addslashes($tel)."',
          '".addslashes($mail)."',
          '$news')";
$result = mysql_query($query);
if($result)
 echo "Bravo, ton inscription a été validée";
else
 echo "une erreur est survenue, merci de réessayer plus tard.";
}
else
{
?>

//Le code qui fontionne pas avec confirmation par mail

<?


 if(isset($pseudo))
{
if(isset($newsl))
 $news=1;
else
 $news=0;
 
$nom = $_REQUEST['nom'];
$prenom = $_REQUEST['prenom'];
$pseudo = $_REQUEST['pseudo'];
$passe = $_REQUEST['passe'];
$tel = $_REQUEST['tel'];
$mail = $_REQUEST['mail'];


 
  
$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$Validation = str_shuffle($chaine);


$message = 'Cher '.$pseudo.',';
$message .= 'Ceci est un mail automatique de confirmation d\'inscription au site de l\'Escobar';
$message .= 'Pour confirmer et ainsi terminer l\'inscription à votre compte, veuillez cliquer sur le lien de confirmation: ';
$message .= 'http://127.0.0.1/escobar/index.php?page=valid.php?pseudo='.str_replace(' ','%20',$pseudo); 
 
$RequeteInsertionPersonne = "INSERT INTO personne VALUES('',
              '".addslashes($nom)."',
              '".addslashes($prenom)."',
              '".addslashes($pseudo)."',
              '".addslashes($passe)."',
              '".addslashes($tel)."',
              '".addslashes($mail)."',
              '$news',
              '$Validation')";
              
$result = mysql_query($RequeteInsertionPersonne);
if($result)
 mail($mail,'Confirmation d\'inscription au site de l\'Escobar',$message);
else
 echo "une erreur est survenue, merci de réessayer plus tard.";
}
else
{
 ?>
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Non mais ce que je veux dire c'est tu testes si pseudo et news existent mais ils sont définis après les tests. (dans les if)

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

C'est bon j'ai pu résoudre une partie de mon problème, alors maintenant l'insertion se passe nickel au niveau de la base de donnée, j'ai cependant un notre message d'erreur qui est :

Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\users\nasbe\desktop\site\subscribe.php on line 70

La ligne 70 c'est celle-ci

mail($mail,'Confirmation d\'inscription au site de l\'Escobar',$message);

Apparemment y a des réglages a faire, mais j'en ai aucune idée de comment le faire. Aurais-tu une piste?
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Les problèmes se situe au niveau de la configuration dans le php.ini
Je ne connais pas trop ça donc à part chercher ou trouver quelq'un qui connait...
Tu peux voir ta configuration actuel avec la fonction phpinfo().

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

Ok, ben je vais chercher encore en peu, en tout cas merci bien pour ton aide, bonne fin de journée.
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
De rien et bonne fin de journée a toi aussi.

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

Salut,

J'ai encore un petit problème de lien lorsque je clique sur le lien de configuration sur mon mail




<?


 if(isset($pseudo))
{
if(isset($newsl))
 $news=1;
else
 $news=0;
 
$nom = $_REQUEST['nom'];
$prenom = $_REQUEST['prenom'];
$pseudo = $_REQUEST['pseudo'];
$passe = $_REQUEST['passe'];
$tel = $_REQUEST['tel'];
$mail = $_REQUEST['mail'];


 
  
$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$Validation = str_shuffle($chaine);


$message = 'Cher '.$pseudo.',';
$message .= 'Ceci est un mail automatique de confirmation d\'inscription au site de l\'Escobar ';
$message .= 'Pour confirmer et ainsi terminer l\'inscription à votre compte, veuillez cliquer sur le lien de confirmation: ';
$message .= 'http://127.0.0.1/escobar/index.php?page=valid';




 
$RequeteInsertionPersonne = "INSERT INTO personne VALUES('',
              '".addslashes($nom)."',
              '".addslashes($prenom)."',
              '".addslashes($pseudo)."',
              '".addslashes($passe)."',
              '".addslashes($tel)."',
              '".addslashes($mail)."',
              '$news',
              '$Validation')"; 




 
echo "Vos paramètre sont enregistrés, vous allez recevoir un email afin de valider l'inscription";             
$result = mysql_query($RequeteInsertionPersonne);
if($result)
 
 mail($mail,'Confirmation d\'inscription au site de l\'Escobar',$message);
else
 echo "une erreur est survenue, merci de réessayer plus tard.";
}
else
{ 
             
 
?>





L'insertion dans la table ce fait correctement, le mail je le recois.
Voici le code de la page de validation


<? 
include 'variables.inc.php';


// Connexion à la base de donnée
 $mysql_connect=mysql_connect($hostddb,$loginddb,$passddb);
 mysql_select_db($baseddb, $mysql_connect);
  $RequeteModifValid mysql_query("UPDATE personne SET Validation'1' WHERE pseudo ='$_GET[pseudo]'") or die ('erreur : '.mysql_error());
 echo 'Votre compte est validé, cliquez [index.php ici] pour vous connecter
';
  
?>



c'est lorsque je clique sur le lien j'ai le message d'erreur suivant.


[b]Notice: Undefined index: pseudo in c:\users\nasbe\desktop\site\valid.php on line 8
Votre compte est validé, cliquez ici pour vous connecter/b


Je ne sais pas comment récupérer le pseudo si quelqu'un peut m'aider?
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Tu peux faire un truc du genre [index.php?pseudo ici]

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

C'est pas ce lien qui fontionne pas, c'est celui de l'autre page ($message .= 'http://127.0.0.1/escobar/index.php?page=valid'; ). Lorsque je clique dessus, il ne me met pas la validation à 1 car j'ai le message

Notice: Undefined index: pseudo in c:\users\nasbe\desktop\site\valid.php on line 8

Je sais pas comment récupérer le pseudo. Voici ma requête
$RequeteModifValid mysql_query("UPDATE personne SET Validation'1' WHERE pseudo ='$_GET[pseudo]'")
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Les liens c'est topus la meme chose... si tu sais pas adepter...
"http://127.0.0.1/escobar/index.php?page=valid&pseudo=".$pseudo;

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

Merci c'est exactement ce qu'il me fallait. Après ca je decide de tester si il existe déjà le même pseudo et la même adresse email dans la base de données, si aucun des deux existes, alors je crée l'enregistrement, si l'un des deux existe alors je met un message d'erreur.
Ca joue nickel pour le pseudo mais pas pour l'adresse mail. Voici mon code :

$VerificationPseudo = mysql_query("SELECT COUNT(*) FROM personne WHERE pseudo='$pseudo'");
$DonneePseudo = mysql_fetch_array($VerificationPseudo);
$VerificationMail = mysql_query("SELECT COUNT(*) FROM personne WHERE mail='$mail'");
$DonneeMail = mysql_fetch_array($VerificationMail);


if($DonneePseudo['COUNT(*)'] >= 1)


{ echo 'Ce pseudo est déjà utilisé, veuillez en choisir un autre.';
 
 } else {
 if($DonneeMail['COUNT(*)'] >= 1)


 { echo 'Cette adresse email est déjà utilisée, vous pouvez redemander votre mot de passe et votre login si vous les avez oublié';
 
 } else {
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
$DonneePseudo = mysql_num_rows($VerificationPseudo);
...
if ($DonneePseudo >= 1) {
...

Ça sera plus performant déjà idem pour l'adresse mail.

Si le pseudo est déjà pris ça ne va pas tester l'adresse mail c'est pour ça que tu n'as pas le message.

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
31
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
11 juin 2008

Voilà j'ai modifier mon code comme ceci.

$VerificationPseudo = mysql_query("SELECT COUNT(*) FROM personne WHERE pseudo='$pseudo'");
$DonneePseudo = mysql_num_rows($VerificationPseudo);
$VerificationMail = mysql_query("SELECT COUNT(*) FROM personne WHERE mail='$mail'");
$DonneeMail = mysql_num_rows($VerificationMail);


if($DonneePseudo['COUNT(*)'] >= 1)


{ echo 'Ce pseudo est déjà utilisé, veuillez en choisir un autre.';
 
 } else {
 if($DonneeMail['COUNT(*)'] >= 1)


 { echo 'Cette adresse email est déjà utilisée, vous pouvez redemander votre mot de passe et votre login si vous les avez oublié';
 
 } else {

Si je ne met pas le ['COUNT(*)'] >=1 il me dit que le pseudo est déjà utilisé même si cela n'est pas le cas, donc je le laisse. Et sinon ca change rien le message d'erreur est le suivant.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\users\nasbe\desktop\site\subscribe.php on line 50

Je suis d'accord avec toi que mon message ne s'affiche pas pour le mail si le pseudo est déjà utilisé mais cela n'est pas grave, par contre si il est pas utilisé, je teste l'adresse mail. Je comprends pas ce qui ne va pas.