Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: FSDownload le le 17-12-2006 a 10:55:56

Titre: Mail de confirmation d'inscription
Posté par: FSDownload le le 17-12-2006 a 10:55:56

Bonjour tout le monde. Tout d'abord, étant nouveau, je vais faire une courte présentation.

Je m'appelle Ugo Cabrol, j'ai 13 ans, et je suis à fond sur l'informatique. Je suis Webmaster d'un site: FSDownload (gratuit). Je dois un peu le mettre à jour, et je rencontre un problème avec un Formulaire d'inscription. J'ai tout enlevé du site, sauf la rubrique inscription et connexion afin que vous puissiez allé voir. C'est ici: http://fsdownload.ifrance.com/ (http://fsdownload.ifrance.com/). L'inscription marche super bien, jusqu'au moment du mail de confirmation. Après avoir remplit le formulaire, on a le message de bienvenue et tout le tra la la, mais on ne reçoit pas le mail de confirmation. D'où cela peut-il venir ?
Si vous avez besoin de mes scripts, je peux vous les passer...

Merci de votre aide

Ugo ;)

Titre: Re:Mail de confirmation d'inscription
Posté par: Martin. le le 17-12-2006 a 11:22:14

Tu es sûr qu'Ifrance autorise la fonction mail ?

Le formulaire passe en E_ALL ?

Titre: Re:Mail de confirmation d'inscription
Posté par: FSDownload le le 17-12-2006 a 11:48:10

Bonjour C-Labs. Merci de ta réponse. Oui, I-France autorise la fontion: Function mail()Je ne comprends pas de quoi ça peut venir.


Titre: Re:Mail de confirmation d'inscription
Posté par: FSDownload le le 17-12-2006 a 13:50:52

Bon, si ça peut vous aider, pour m'aider, voici mes codes:

Confirm.php:
<?
require("conf.php3");

$sql = connect_sql();

$search = 'SELECT COUNT(*) as nb FROM pdf_membre WHERE pseudo = "'.addslashes($_GET['login']).'" AND confirm = "'.addslashes($_GET['confirm']).'"';
$req = mysql_query($search) or die(mysql_error());
$data = mysql_fetch_array($req);

if($data['nb'] == 1)
{
$login = $_GET['login'];
mysql_query("UPDATE pdf_membre SET `confirm`='' WHERE `pseudo` ='$login'") or die('erreur : '.mysql_error());

echo '<p>Votre compte à bien été créé.</p>';
echo '<p>Pour retournez à la page d\'accueil cliquez <a href="' .$http://fsdownload.ifrance.com/. '">ici</a>.</p>';
}
else
{
echo '<p>Un problème est survenu, il est possible que vous n\'êtes pas inscrit ou que l\'adresse est fausse ou que vous êtes déjà validé !.</p>';
}
mysql_close($sql);
?>




pdf_inscription.php:
<html><body><form name="form1" method="post" action="pdf_inscription2.php">
   Pseudo:<br>
<input type="text" name="pseudo"><br>
   Mot de Passe:<br>
<input name="mdp" type="password" id="mdp"><br>
Retapez votre mot de passe:<br>
<input name="verif_mdp" type="password" id="verif_mdp"><br>
Votre E-Mail:<br>
<input name="mail" type="text" id="mail"><br>
Nom:<br>
<input name="nom" type="text" id="nom"><br>   
Prenom:<br>
<input name="prenom" type="text" id="prenom"><br>
Site Web:<br>
<input name="website" type="text" id="website"><br>
   Pays:<br>
<input name="pays" type="text" id="pays"><br>
Date de Naissance (jj/mm/aa):<br>
<input name="born" type="text" id="born"><br>   
<input type="submit" name="Submit" value="Inscription">
</form>
</boby></html>




pdf_inscription2.php:
<?php
session_start();
require("conf.php3");

$mail = htmlentities($_POST['mail']);

if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail))
{
      $chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
      $confirm = str_shuffle($chaine);
      
      $pseudo = htmlentities($_POST['pseudo']);
      $mdp = htmlentities($_POST['mdp']);
      $verif_mdp = htmlentities($_POST['verif_mdp']);
      $nom = htmlentities($_POST['nom']);
      $prenom = htmlentities($_POST['prenom']);
      $website = htmlentities($_POST['website']);
      $pays = htmlentities($_POST['pays']);
      $born = htmlentities($_POST['born']);
      
   
      $message1 = '<html><body>Bonjour ' . $pseudo . ' et bienvenue sur ' .$FSDownload. '.</br>';
      $message1 .= '</br>';
      $message1 .= 'Vous venez de vous inscrire et nous sommes heureux<br>de pouvoir vous compter aujourd\'hui parmi nos membres.<br>';
      $message1 .= 'Voici un rappel de vos identifiants, notez les précieusement : <br>';
      $message1 .= 'Votre Pseudo :' . $pseudo .'.<br>';
      $message1 .= 'Votre Mot de passe:' . $mdp .'.<br><br>';
      $message1 .= 'Votre Mail:' . $mail .'.<br><br>';
      $message1 .= 'Votre Nom:' . $nom .'.<br><br>';
      $message1 .= 'Votre Prenom:' . $prenom .'.<br><br>';
      $message1 .= 'Votre Pays:' . $pays .'.<br><br>';
      $message1 .= 'Votre Site Web' . $website .'.<br><br>';
      $message1 .= 'Votre Date de naissance:' . $born .'.<br><br>';                           
      $message1 .= 'Si vous souhaitez changer vos informations, rendez-vous dans votre compte pour les mettre à jour.<br>';
      $message1 .= 'Votre Clé d\'activation:<br>';
      $message1 .= '' .$url_script. '/confirm.php?login=' . str_replace(' ','%20',$pseudo) . '&confirm=' . $confirm . '<br><br>';
      $message1 .= 'A très bientôt sur le site!<br>L\'équipe de ' .$nom_site. '.<br><a href="' .$http://fsdownload.ifrance.com/. '">' .$FSDownload. '</a>';

      $sql = connect_sql();
      
      $verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
      $donnees = mysql_fetch_array($verification)or die (mysql_error());

      if($donnees['COUNT(*)'] >= 1) //On verifie que le pseudo n'existe pas déjà
      {
         $reponse = 'Le pseudo ou l\'email est déjà utilisé, merci d\'en choisir un(e) autre. <a href="javascript:history.back(1)">Retour au formulaire</a>';
      }
      else
      {   
         if( empty($pseudo) || empty($mdp) || empty($verif_mdp) || empty($mail) || empty($nom) || empty($prenom) || empty($born)) //On verifie que les variables précédentes ne soient pas vide
         {
            $reponse = 'Un ou plusieurs champs ne sont pas remplis, <a href="javascript:history.back(1)">Retour au formulaire</a>';
         }
         elseif( $mdp != $verif_mdp)
         {
            $reponse = 'Les mots de passe ne sont pas identiques, <a href="javascript:history.back(1)">Retour au formulaire</a>';
         }
         else //Si tout est bon on entre les données dans la BDD et on envoye le mail
         {
            mysql_query("INSERT INTO pdf_membre VALUES ('','$pseudo', '$mdp', '$mail', '$confirm', '$nom', '$prenom', '$pays', '$born', '$website')");
            $reponse = 'Bravo, vous êtes maintenant inscrit sur ' .$nom_site. '. <br>Vous allez recevoir un e-mail pour activer votre compte. <br><a href="' .$url_site. '">Retour à l\'Accueil</a>';
            $entete = "MIME-Version: 1.0\r\n";
            $entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
            $entete .= "From: <$email_admin>\r\n";
            $entete .= "Reply-To: $email_admin\r\n";
            mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'.' , $message1, $entete);
         }
      }
      
      mysql_close($sql); //On se deconnecte
   }
   else
   {
      $reponse = 'Votre adresse e-mail "' . $mail . '" n\'est pas correcte. <a href="javascript:history.back(1)">Retour au formulaire</a>';
   }    




?>

<html>
<body>
<? echo $reponse; ?> <!-- On affiche la reponse de tout le code du dessus -->
</body>
</html>






Vous ne pouvez vraiment pas m'aider ?

Ugo :P

Titre: Re:Mail de confirmation d'inscription
Posté par: theonlydrayk le le 17-12-2006 a 20:36:37

Salut,

Premierement bravo ! C'est un peu spaghetti mais si ta écrit ce code la a 13 ans c'est très prometteur.

La function mail() renvoit un bool :
bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters] )
Tu peut le tester pour savoir si ca marcher ou pas (c'est d'ailleurs conseiller)

$r = mail($mail,'Bi....
if ($r)
{
echo "mailed";
} else
{
echo "what's wrong";
}

Change le destinataire essaye hotmail, gmail, yahoo... plusieurs clients de email efface sans aucun avertissement certain email : ceux qui sont uniquement en html sans version text, certain on besoin du mailer dans les ententes ?? et oui jai deja vue ca : 'X-Mailer: PHP'.phpversion();

Tu peut envoyer un mail tres simple pour tassurer que tout marche bien :

Code:
<?php
$r = mail('monemail@site.tld', 'My Subject', 'test');
if ($r)
{
echo "mailed";
} else
{
echo "what's wrong";
}
?>



EN passant ta function str_replace(' ','%20',$pseudo) est bien penser mais donne un ptit coup d'oeil a ca :
http://www.php.net/manual/fr/function.urlencode.php (http://www.php.net/manual/fr/function.urlencode.php)

Titre: Re:Mail de confirmation d'inscription
Posté par: FSDownload le le 17-12-2006 a 20:59:48

Bonjour. Merci beaucoup pour votre aide. Mais, je ne suis pas sur d'avoir tout compris ::) Le code que vous avez mis, ou faut-il que je le place ???

Merci de votre réponse

Ugo ;D

Titre: Re:Mail de confirmation d'inscription
Posté par: Martin. le le 18-12-2006 a 21:21:36

Tu remplaces ta ligne mail(... par $r = mail(...

Ainsi, $r prendra la valeur de retour de mail, et ensuite tu la testes pour savoir si le mail a été envoyé correctement (r est vrai) ou non (r est faux).

Titre: Re:Mail de confirmation d'inscription
Posté par: FSDownload le le 19-12-2006 a 06:51:55

Bonjour. Merci de ton aide, mais ca ne marche pas.

J'aimerai faire plus simple, pas besoin de valider. L'internaute peut s'inscrire, et directement se connecter.

Comment faire ? Qu'est-ce que je dois modifier dans mes scripts ?

Merci de ta réponse, Ugo ;)


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.