Validation d'un accès par mail

Signaler
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
-
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
-
Bonjour, j'ai créer mon formulaire qui part vers ma page de "validation". Celle-ci écrit dans la table et en même temps envoi un mail à la personne qui vient de s'inscrire avec un lien pour valider définitivement. Le lien est du time_md5. Le problème est que quand les gens clic sur le lien, ils tombent sur la page 404 alors qu'il y a bien la fonction dans la page.

Merci à vous pour vos réponses.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Validation Secu</title>
<style type="text/css">
.validation {
background-color: #CCC;
height: 120px;
width: 300px;
margin-right: auto;
margin-left: auto;
text-align: center;
border-top-style: double;
border-right-style: double;
border-bottom-style: double;
border-left-style: double;
}
#valid {
height: 200px;
width: 300px;
}
</style>
<?php require ("config.php") ?>
</head>




<?php
$page=$serveur.$_SERVER["PHP_SELF"];
$nom=$_POST["nom"];
$prenom=$_POST["prenom"];
$surnom=$_POST["surnom"];
$pass=$_POST["pass"];
$pass2=$_POST["pass2"];
$mail=$_POST["mail"];
$IP=$_SERVER['REMOTE_ADDR'];
$heure=time();
?>
<?php
//connection au serveur
$cnx = mysql_connect( "$db_host", "$db_user", "$db_pass" ) ;

//sélection de la base de données:
$db = mysql_select_db( "$db" ) ;

// transformation du mot de passe simple en mot de passe crypté.
$pass_md5=(md5('pass'));

//code unique
$uniqueid=md5(time());

//création de la requête SQL:
$sql = "INSERT INTO membre (nom, prenom, surnom, pass_md5, mail, IP, heure, uniqueid)
VALUES ('$nom', '$prenom', '$surnom', '$pass_md5','$mail', '$IP', '$heure', '$uniqueid') " ;



//exécution de la requête SQL:
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;

// Attendre qu'il n'y ait pas d'autres utilisateur avec le même numéro.
do
{
$uniqueid=md5(time());
$resultat = mysql_query("SELECT * FROM membre WHERE uniqueid='$uniqueid'");
}
while(false!=($ligne = mysql_fetch_array($resultat)));


?>

<?php //On créée le message email
$subject = "Veuillez confirmer votre inscription";
$headers = "From: ".$adresse_webmaster."\n";
$message .= "Bonjour ".$surnom."\n\n";
$message .= "Vous avez reçu ce mail parce que cette adresse mail a été enregistré sur le site de ".$site_name.".\n";
$message .= "Pour valider cet inscription, cliquez sur ce lien :\n ".$page."?code=".$uniqueid."&BL=0 \n";
$message .= "Si vous ne vous êtes pas inscrit sur ".$site_name.", veuillez ignorer ce message et accepter nos excuses.\n";
$message .= "Vous pouvez aussi choisir d'ajouter votre mail à notre blacklist pour être importuné de notre part en cliquant sur ce lien :\n ".$page."?code=".$uniqueid."&BL=1 \n";
$message .= "Cordialement,\n";
$message .= "Stéphane";

$recipient = "".$mail.""; //On met l'adresse email ou on veut recevoire le mail
mail($recipient, $headers, $subject, $message); // message confirmation que le mail a bien été envoyé
echo "<HTML><HEAD>";
echo "<TITLE>Formulaire envoyer!</TITLE></HEAD>";
echo "Merci, $prenom
";
echo "Un mail vous a été envoyé à cette adresse mail: $mail

vous devez cliquez sur le lien pour être définitivement enregistrer.

";
echo "</HTML>";
?>

<?php
// Fonction de vérification de l'adresse de confirmation
// - Suppression des utilisateurs n'ayant pas confirmer avant la durée impartie
// - Extraction de la personne concernée
// - Validation de son enregistrement
// - Si l'on veut être blacklisté, après confirmation on effectue le blacklistage
// - Le webmaster recoit un mail lorsque l'inscription est validé

function code_check($code="",$BL="")
{
require "config.php";


$heure=time();

// On profite de l'occasion pour supprimer les users n'ayant pas confirmé dans la durée impartie
$heure2=$heure-$validite;
mysql_query("DELETE FROM membre WHERE heure<$heure2 AND enregistrer='en_attente'");

// On extrait la personne qui souhaite valider son inscription
$uniqueid=$code;
$resultat mysql_query("SELECT * FROM membre WHERE uniqueid'$uniqueid' AND enregistrer='en_attente'");
if(false==($ligne = mysql_fetch_array ($resultat)))
{
mysql_close();
$page_validation = "Ce code n'existe pas, est expiré ou à déjà été validé, veuillez remplir à nouveau le formaulaire : here.";
}
else
{
// Si l'utilisateur vient pour confirmer, on passe son enregistrer de "en_attente" à "registered"
if($BL==0)
{
mysql_query("UPDATE membre SET enregistrer='registered' WHERE uniqueid ='$uniqueid' AND enregistrer='en_attente'");
$page_validation = "Merci, vous êtes maintenant enregistré ! Vous pouvez maintenant vous connectez librement ICI.";
if ($mail_controle==1)
{
$subject="Nouvelle inscription sur $site_name";
$message="Bonjour,\n\n";
$message.="Un nouveau membre vient de s'inscrire :\n";
$message.="Nom : ".$ligne["userid"]."\n";
$message.="E-Mail : ".$ligne["email"]."\n";
$headers="From: ne_pas_repondre@free.fr\n";
@mail($adresse_webmaster, $subject, $message, $headers);
}
}
// Si l'utilisateur vient pour être blacklisté, on passe son level de "en_attente" à "blacklist"
// Mais avant une petite confirmation
if($BL==1)
{
$page_validation = "Vous souhaitez ajouter votre adresse mail à notre blackliste. Cliquez ici pour que vous puissiez confirmer.";
}
// Si l'utilisateur a confirmé qu'il veut être dans la liste noire, on l'y met
if($BL==2)
{
mysql_query("UPDATE membre SET enregistrer='blacklist' WHERE uniqueid ='$uniqueid' AND enregistrer='en_attente'");
$page_validation = 'Votre e-mail a été blacklisté. Vous ne receverez plus aucun e-mail de notre part.';
}
mysql_close();
}
echo "".$page_validation."

";
}
?>



</html>

4 réponses

Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012

et petite question, je viens de m'apercevoir que mon mot de passe_md5 était le même pour tous dans ma base de donnée.
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012

J'ai résolu pour le pass_md5.
Pour ceux qui cherchent:
$pass_md5=md5($_POST['pass']);

mais pour le mail, je suis dans l'inconnu!!
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonjour

peux tu détailler que veux tu faire
ce code fait parti d'un fichier ou plusieurs
nommer les parties s.t.p.
je crois que $uniqueid=md5(time()); écrase à chaque fois la valeur du départ


Bonne programmation !
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012

cette page envoi un mail à la personne qui vient de s'inscrire avec un lien à l'intérieur. Il doit cliquer sur le lien pour terminer de s'enregistrer.
j'ai la page "inscription" qui envoi vers cette page "validation".

j'espère avoir tout dit.

Merci