Validation d une inscription par mail

martiallover Messages postés 6 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 20 août 2009 - 19 août 2009 à 19:28
martiallover Messages postés 6 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 20 août 2009 - 20 août 2009 à 03:12
je vous poste mon prob je travaille sur une solution
pour une inscription sur un espace membre et la reception d un mail de confirmation je tombre sur un script pour faire des test et pa la suite l adapater avec mes exigence jquery , regex ect
je procede à l utilisation de class open source phpmailer

le mail est correctement envoyé je le recoit meme sur ma boite
au moment ou je clique sur le mail de confirmation pour la validation rien ne change pou explique un peut
le script

-une page de d inscription
-le membre recoit une page de validation
-le compte s actif au moment de la validation de ce fait
j il ya deux table une table comptes-provisoires et compte-definitifs
lorsque on valide l inscription la table compte provisoire est vidé
tout va bien lorsque en arrive au compte provisoire mais lorsque on procede a l activation rien.
voila mon script merci pour votre aide.
<?php


// variable initialisée à zero pour tester les conditions
require("class.phpmailer.php");
$nb_faux = 0;


if (isset($_POST['pseudo']) && isset($_POST['password']) && isset($_POST['confirm_password']) && isset($_POST['mail']))
{
$pseudo = $_POST['pseudo'];
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
$mail = $_POST['mail'];

// incrémenter la variable $nb_faux si les champs du formulaire sont vides
if (empty($_POST['pseudo']) || empty($_POST['password']) || empty($_POST['confirm_password']) || empty($_POST['mail']))
{
?>Champs non remplis
<?
$nb_faux++;
}

// incrementer la variable $nb_faux si des caracteres ne sont pas autorisés pour le pseudo
if (!preg_match('`^(\w{4,15})$`', $pseudo))
{
?>Caractères non autorisés pour le pseudo
<?
$nb_faux++;
}

// incrementer la variable $nb_faux si des caracteres ne sont pas autorisés pour le mot de passe et sa confirmation
if (!preg_match('`^(\w{4,15})$`', $password) or !preg_match('`^(\w{4,15})$`', $confirm_password ))
{
?>Caractères non autorisés pour le mot de passe
<?
$nb_faux++;
}

// incrementer la variable $nb_faux si le mot de passe et la confirmation du mot de passe ne sont pas les meme
if ($password != $confirm_password)
{
?>Mauvais pass
<?
$nb_faux++;
}

// incrementer la variable $nb_faux si le pseudo existe dans la base de donnée
if ($nb_faux >= 0)
{
include("pcdb.php");
$connexion = mysql_connect($hote, $utilisateur, $mdp) or die('
Connexion au serveur impossible.
Contactez le webmaster si le problème n\'est pas résolu.
');
$choix_base = mysql_select_db($data_base, $connexion) or die('
Sélection de la base de donnée echouée.
Contactez le webmaster si le problème n\'est pas résolu.
');
$requete = "SELECT pseudo FROM $table_cp WHERE pseudo='$pseudo'";
$resultat = mysql_query($requete) or die('
Exécution de la requête impossible.
Contactez le webmaster si le problème n\'est pas résolu.
');
$ligne = mysql_fetch_array($resultat);


if ($pseudo == $ligne['pseudo'])
{
?>Ce pseudo existe déja sur ce site
<?
$nb_faux++;
}
}

// incrémenter la variable $nb_faux si la case à cocher "conditions" est null
if (isset($_POST['conditions']) == null)
{
?>Conditions non coché
<?
$nb_faux++;
}

// affectation de la chaine "oui" ou "non" dans une variable pour la newsletter
if (isset($_POST['newsletter']) != null)
{
$newsletter = "oui";
}
else
{
$newsletter = "non";
}

if (isset($_POST['pays']) || isset($_POST['ville']) || isset($_POST['sexe']) || isset($_POST['jours'])
|| isset($_POST['mois']) || isset($_POST['annees']))
{
$pays = $_POST['pays'];
$ville = $_POST['ville'];
$sexe = $_POST['sexe'];
$date_naissance = ($_POST['jours']) ."/". ($_POST['mois']) ."/". ($_POST['annees']);
}

// connexion à la base de donnée si il n'y a pas d'erreur (champs oubliés, expressions régulirères, vérification de mot de passe, vérification du pseudo)
if ($nb_faux == 0)
{
include("pcdb.php");

// affecter un nombre aléatoire dans la variable clef qui servira a la validation du compte par mail
$clef = "0123456789";
$clef = rand();

// requette envoi les données de l utilisateur dans la table comptes_provisoirs
$connexion = mysql_connect($hote, $utilisateur, $mdp) or die('
Connexion au serveur impossible.
Contactez le webmaster si le problème n\'est pas résolu.
');
$choix_base = mysql_select_db($data_base, $connexion) or die('
Sélection de la base de donnée echouée.
Contactez le webmaster si le problème n\'est pas résolu.
');
$requete = "INSERT INTO $table_cp VALUES
('', '$pseudo', '$password', '$mail', '$newsletter', '$pays', '$ville', '$sexe', '$date_naissance', '$clef')";
$resultat = mysql_query($requete) or die('
Exécution de la requête impossible.
Contactez le webmaster si le problème n\'est pas résolu.
');
mysql_close($connexion);

// Envoyer le mail si la requête à fonctionnée
if ($resultat == true)
{
?>Vous allez reçevoir un mail pour la validation de votre compte
<?

$mail_destinataire = $_POST['mail'];
$sujet = "jeu, validation de l'inscription";
$message = "Cet email a été envoyé à partir de http://www.jeu.com Ton mot de passe est: $password \n Ton pseudo est: $pseudo
Pour valider ton inscription clique sur le lien suivant. Nous te demandons ca pour s'assurer que l'adresse mail que tu as entrée était correcte.
Ceci pour prévenir du spam et des abus.
http://127.0.0.1/mailphp/inscription.php?&pseudo=$pseudo&clef=$clef
Le Webmaster";
$head = "Salut $pseudo ";
// mail($mail_destinataire, $sujet, $message, $head);
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.monfai.com";
$mail->SMTPAuth = true;
$mail->Username = "xxxxxxxxx";
$mail->Password = "xxxxxxxx";
$mail->From = "martial_zero1981@gnet.tn";
$mail->FromName = "marouen kefi";
$mail->AddAddress($mail_destinataire );
$mail->Subject = $sujet;
$mail->Body =$message;
if(!$mail->Send()){ //Teste le return code de la fonction
echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
}
else{
echo 'Mail envoyé avec succès';
}
$mail->SmtpClose();
unset($mail);

}
}
}

//--------------------------------------------------------------------
// VALIDATION DU COMPTE APRES INSCRIPTION
//
// Verification du lien de validation via mail :
// 1 - connexion si la clef et le pseudo existe dans la table "comptes_provisoirs"
// 2 - transfert des données dans la table "comptes_definitifs"
// 3 - suppression des données dans la table "comptes_provisoirs"
//--------------------------------------------------------------------

if (isset($_GET['pseudo']) && isset($_GET['clef']))
{
$pseudo = $_GET['pseudo'];
$clef = $_GET['clef'];
//echo $pseudo;
include("pcdb.php");

// requette chercher les données lorsque le champs pseudo et le champs clef existent dans la table "comptes_provisoirs"
$connexion = mysql_connect($hote, $utilisateur, $mdp) or die('
Connexion au serveur impossible.
Contactez le webmaster si le problème n\'est pas résolu.
');
$choix_base = mysql_select_db($data_base, $connexion) or die('
Sélection de la base de donnée echouée.
Contactez le webmaster si le problème n\'est pas résolu.
');
$requete "SELECT pseudo, password, mail, newsletter, pays, ville, sexe, date_naissance FROM $table_cp WHERE pseudo '$pseudo' AND clef = '$clef'";
$resultat = mysql_query($requete) or die('
Exécution de la requête impossible.
Contactez le webmaster si le problème n\'est pas résolu.
');

// affecter les infos utilisateurs si la clef et le pseudo existent dans la table "comptes_provisoirs"
if($donnees = mysql_fetch_array($resultat))
{
$pseudo = $donnees['pseudo'];
$password = $donnees['password'];
$mail = $donnees['mail'];
$newsletter = $donnees['newsletter'];
$pays = $donnees['pays'];
$ville = $donnees['ville'];
$sexe = $donnees['sexe'];
$date_naissance = $donnees['date_naissance'];

// requette transferer les données de la table "comptes_provisoirs" à la table "comptes_definitifs"
$requete = "INSERT INTO $table_cd VALUES('', '$pseudo', '$password', '$mail', '$newsletter', '$pays', '$ville', '$sexe', '$date_naissance')";
$resultat = mysql_query($requete) or die('
3 Exécution de la requête impossible.
Contactez le webmaster si le problème n\'est pas résolu.
');
// requette suppression des données provisoir de la table "comptes_definitifs"
$requete "DELETE FROM $table_cp WHERE clef '$clef' AND pseudo = '$pseudo'";
$resultat = mysql_query($requete) or die('
Exécution de la requête impossible.
Contactez le webmaster si le problème n\'est pas résolu.
');
mysql_close($connexion);
?>Votre compte est validé
<?
}
else
{
?>Votre compte est deja validé ou le lien de validation est incorrect
<?
}
}

?>

<link rel="stylesheet" media="screen" type="text/css" title="index" href="includes.css" />

<form action="inscription.php" method="post">

Inscription :

<fieldset>
<legend>Infos obligatoires</legend>

Pseudo :, ,
----
Mot de passe :, ,
----
Confirmer le mot de passe :, ,
----
Mail :,

J'ai lu et j'accepte les conditions générales d'utilisation de titre (trouver un nom) .

Je souhaite recevoir la newletter dans ma boite mail .
</fieldset>

<fieldset>
<legend>Infos personelles</legend>
Pays :, , Sexe : Homme Femme Assexué,
----
Ville :, , Date de naissance : <select name="jours">
<option></option><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="O4">04</option><option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option><option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> /
<select name="mois">
<option></option><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="O4">04</option><option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option><option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
</select> /
<select name="annees">
<option></option><option value="1987" >1987</option><option value="1986" >1986</option><option value="1985" >1985</option><option value="1984" >1984</option><option value="1983" >1983</option><option value="1982" >1982</option><option value="1981" >1981</option><option value="1980" >1980</option><option value="1979" >1979</option><option value="1978" >1978</option><option value="1977" >1977</option><option value="1976" >1976</option><option value="1975" >1975</option><option value="1974" >1974</option><option value="1973" >1973</option><option value="1972" >1972</option><option value="1971" >1971</option><option value="1970" >1970</option><option value="1969" >1969</option><option value="1968" >1968</option><option value="1967" >1967</option><option value="1966" >1966</option><option value="1965" >1965</option><option value="1964" >1964</option><option value="1963" >1963</option><option value="1962" >1962</option><option value="1961" >1961</option><option value="1960" >1960</option><option value="1959" >1959</option><option value="1958" >1958</option><option value="1957" >1957</option><option value="1956" >1956</option><option value="1955" >1955</option><option value="1954" >1954</option><option value="1953" >1953</option><option value="1952" >1952</option><option value="1951" >1951</option><option value="1950" >1950</option><option value="1949" >1949</option><option value="1948" >1948</option><option value="1947" >1947</option><option value="1946" >1946</option><option value="1945" >1945</option><option value="1944" >1944</option><option value="1943" >1943</option><option value="1942" >1942</option><option value="1941" >1941</option><option value="1940" >1940</option><option value="1939" >1939</option><option value="1938" >1938</option><option value="1937" >1937</option><option value="1936" >1936</option><option value="1935" >1935</option>
</select>

</fieldset>



</form>

1 réponse

martiallover Messages postés 6 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 20 août 2009
20 août 2009 à 03:12
l erreur est très microscopique
voilà
a la place mon editeur affiche & à la place de &
il suffisait de les remplacer et ca fonctionne parfaitement
http://127.0.0.1/mailphp/inscription.php?&pseudo=$pseudo&clef=$clef


bon travail pour tout le monde .
0
Rejoignez-nous