Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1486 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php] envoi de mail de confirmation, suppression si > 24h

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] envoi de mail de confirmation, suppression si > 24h

n°1515296
cyberP@cal
Posté le 15-02-2007 à 23:32:13  profilanswer
 

salut à tous,
 
je suis en train de réaliser un site mais je galere un peut sur l'envoi de confirmation de mail après saisi d'un formulaire, j'obtien une page blanche aprés click sur le bouton envoi du formulaire. Voici donc mon code php :
 

Code :
  1. <?php
  2. include('include/connexion_bdd.php');
  3. $mail= "".htmlentities($_POST['mail'])."";
  4. $titre= "".htmlentities($_POST['titre'])."";
  5. $nom= "".htmlentities($_POST['nom'])."";
  6. $prenom= "".htmlentities($_POST['prenom'])."";
  7. $adresse= "".htmlentities($_POST['adresse'])."";
  8. $cp= "".htmlentities($_POST['cp'])."";
  9. $ville= "".htmlentities($_POST['ville'])."";
  10. $pays= "".htmlentities($_POST['pays'])."";
  11. $telephone= "".htmlentities($_POST['telephone'])."";
  12. $jj= "".htmlentities($_POST['jj'])."";
  13. $mm= "".htmlentities($_POST['mm'])."";
  14. $aa= "".htmlentities($_POST['aa'])."";
  15. $mois=$mm+1;
  16. $datenaiss = $jj."-".$mois."-".$aa;
  17. //verification des entrées dans la bdd pour détécter un utilisateur déja enregistré
  18. //$requete2=mysql_query("select * from utilisateurs where login = '$val'" );
  19. $requete3=mysql_query("select * from utilisateurs where mail = $mail" );
  20. //stock le résultat de la requete dans une variable
  21. //$sql=mysql_fetch_array($requete2);
  22. $sql2=mysql_fetch_array($requete3);
  23. //si la requete ne renvoi rien (pas d'existance de pseudo ni de mot de passe), on enregistre dans la bdd
  24. if($sql2 == null)
  25. {
  26. $requete=mysql_query("INSERT INTO utilisateurs (id_user,login,pass,nom,prenom,mail,titre,adresse,cp,ville,pays,tel,datenaiss,date_crea)
  27. VALUES('','','','$nom','$prenom','$mail','$titre','$adresse','$cp','$ville','$pays','$tel','$datenaiss',NOW())" );
  28. echo "<br><br><center>La création de votre compte à réussi</center><br><br>";
  29.     $Corps = "Bonjour,";
  30.     $Corps .= "<BR>";
  31.     $Corps .= "Pour valider votre inscription dans la base de données, ";
  32.     $Corps .= "<a href='http://localhost/site/confirmation.php?conf=1'>";   
  33.     $Corps .= "veuillez cliquer sur ce lien";
  34.     $Corps .= "</a> s'il vous plait";
  35.     mail(toto@neuf.fr,"Confirmation dinscription" , $Corps , "Content-type: text/html" );
  36. echo " Merci de votre inscription. Pour la valider, relevez vos E-Mails : un nouveau message vient de vous être envoyé avec les instructions nécessaires.";
  37. }
  38. else
  39. {
  40. echo '<br><br><br><center><img src="images/warning.gif" ><br><br><br><b><FONT COLOR="red" >Cet identifiant ou adresse e-mail existe déja ! Merci de recommencer</b></font></center><br><br>';
  41. echo '<FORM> <center><INPUT TYPE="button" VALUE="Retourner au formulaire d\'inscription" onClick="history.back()"></center> </FORM>';
  42. }
  43. //ceci referme la connexion à la base
  44. mysql_close();
  45. ?>
  46. <html>
  47. <head>
  48. <title>Enregistrement</title>
  49. <link rel="stylesheet" media="screen" type="text/css" title="css" href="style/style.css" />
  50. </head>
  51. <body>
  52. <center><a href="index.html"class="lien2">Retourner à la page d'accueil</a> </center>
  53. </body>
  54. </html>


 
En fait sans le code d'envoi du mail, j'ai bien un enregistrement dans la bdd. Ce que je voudrai faire c'est que lorsque l'on reçoi le mail, en cliquant sur le lien on ajoute un 1 dans le champ confirm, mais faudrai deja que l'envoi du mail fonctionne...
 
Et je voudrai aussi savoir comment faire pour que l'activation soit faite sous 24h, sinon la pré inscription (champ conf à null donc) s'efface de la bdd.
voici mon fichier pour la confirmation :
 

Code :
  1. <?php
  2. include('include/connexion_bdd.php');
  3. $requete=mysql_query("INSERT INTO utilisateurs (conf) VALUES('$conf')" );
  4. mysql_close();
  5. ?>


 
merci d'avance pour votre aide.

mood
Publicité
Posté le 15-02-2007 à 23:32:13  profilanswer
 

n°1515327
Mxtrem
Posté le 16-02-2007 à 08:54:32  profilanswer
 

A. Il faudrait mieux que tu créés une chaine de caractères pour la confirmation:

Code :
  1. $chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
  2.  $confirm = str_shuffle($chaine);


puis tu inserts la variable $confirm dans un champs conf de ta table.

 

ensuite, l'utilisateur reçoit un lien par mail qui l'amene sur cette page : (ou alors le lien l'amene directement sur le case4)

Code :
  1. echo ' <strong style="font-family:\'Century Gothic\'; font-size:19px; color:#808080">Inscription 3/4</strong><p></p>';
  2.  echo '<font size="+1">Bravo '.$login.' !</font><br>
  3.  Vous êtes maintenant inscrit sur Mxtrem.<p></p>';
  4.  echo 'Avant de pouvoir bénéficier de tous les avantages liés à la création de votre compte, vous devez confirmer votre
  5.  inscription par le biais d\'un email qui vous a été envoyé à <b>'.$mail.'.<p></p>';
  6.  echo '<form action="signup.php?go=4&login='.$login.'" method="Post">';
  7.  echo '<center>';
  8.  echo '<table cellspacing="1px" cellpadding="0" bgcolor="#000000" width="500px"><tr><td>';
  9.  echo '<table cellspacing="0px" cellpadding="0" bgcolor="#F1F1F1" width="100%"><tr><td align="left">';
  10.  echo '<b>Collez ci-dessous le code d\'activation que vous avez reçu par email:';
  11.  echo '<p></p>';
  12.  echo '<center><input type="text" name="confirm" style="width:400px" value=""></center><br>';
  13.  echo '<div align="right"><input type="submit" value="Activer mon compte"></div>';
  14.  echo '</td></tr></table></td></tr></table></form>';
 

et

 
Code :
  1. case 4:
  2.  echo ' <strong style="font-family:\'Century Gothic\'; font-size:19px; color:#808080">Inscription 4/4</strong><p></p>';
  3.   if(empty($confirm))
  4.   {
  5.   echo("<b>Erreur</b><br>" );
  6.   exit("Certains champs ne sont pas remplis." );
  7.   }
  8.  $db = mysql_connect("localhost","root","" ) or die("Connection impossible. Veuillez réessayer d'ici quelques minutes" );
  9.  mysql_select_db("myxtrem",$db) or die ('Erreur :'.mysql_error());
  10.  $search = 'SELECT COUNT(*) as nb FROM members WHERE login = "'.addslashes($_GET['login']).'" AND confirm = "'.addslashes($_POST['confirm']).'"';
  11.  $req = mysql_query($search) or die(mysql_error());
  12.  $data = mysql_fetch_array($req);
  13.  if($data['nb'] == 1)
  14.  {
  15.  $login = @$_GET['login'];
  16.  mysql_query("UPDATE members SET `confirm`='' WHERE `login` ='$login'" ) or die('erreur : '.mysql_error());
  17.  if(file_exists($login)){die("Problème" );}
 


Il faut donc ici que conf soit vide pour que le membre soit inscrit (il s'agit d'une partie de mon lourd script d'inscription, dsl si cay pas evident ;)


Message édité par Mxtrem le 16-02-2007 à 08:55:37
n°1515329
Mxtrem
Posté le 16-02-2007 à 08:59:13  profilanswer
 

ah, et pour la suppression, il faut un cron qui execute toutes les 24h un fichier php recherchant les inscrits > 24H qui ont le la chaine $confirm encore présente dans le conf de la table membre et qui delete les champs qui y sont relatifs ;)
 
(enfin 24H cay un peu juste quand même)

n°1515424
cyberP@cal
Posté le 16-02-2007 à 11:22:15  profilanswer
 

désolé les gars mais je début en php la, je suis largué...
 
En fait comme je vous ai dit avant de pouvoir écrire la syntaxe du mail, il me faudrai le code pour ENVOYER le mail, donc si quelqu'un pouvais m'aider à partir de de : if($sql2 == null). Merci pour votre aide
 

n°1515450
Mxtrem
Posté le 16-02-2007 à 11:52:04  profilanswer
 

alors :
 
mail(toto@neuf.fr,"Confirmation dinscription" , $Corps , "Content-type: text/html" );
 
=
 
mail($mail,"Confirmation dinscription" , $Corps , "Content-type: text/html" );
 
 
puis (niveau sécurité cay pas tip/top)
[cpp]
<?php  
$conf = $_GET['conf'];
$nom = $_GET['nom'];
$telephone = $_GET['telephone'];
 
include('include/connexion_bdd.php');  
$requete=mysql_query("UPDATE ta_table SET conf=`$conf`WHERE utilisateurs=`$nom` AND telephone=`$telephone` AND ville=`$ville`);
 
mysql_close();  
?>
 
Le lien envoyé par email doit alors se présenter tel que celui ci dessous dans le module envoyé par email :
http://localhost/site/confirmation [...] telephone.
 
 
attention, par mesure de sécurité je te conseil que lorsque l'utilisateur s'inscrit, une variable est générée en sha1 (non visible) puis incrémentée dans la bdd par sha1(rand()) puis lorsque l'utilisateur confirme le lien la variable sha1rand est récupérée en get et est vérifiée en correlation avec le pseudo ;)
 
voilou


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php] envoi de mail de confirmation, suppression si > 24h

 

Sujets relatifs
[html] mailto + modification adresse mail [Résolu]Probleme securite fonction mail php
Mail avec image incluse sans pièce jointePouvez vous m'aider sur la fonction mail () de php ?
[Divers] Lotus Notes envoi d'un mail avec un sujet videFonction mail
[ PHP ] fonctions mail en localphp Suppression de données d'une bd à partir d'un bouton
Extraire le fax d'un mail 
Plus de sujets relatifs à : [php] envoi de mail de confirmation, suppression si > 24h


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR