Validation d'un accès par mail

stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012 - 15 déc. 2011 à 08:16
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012 - 15 déc. 2011 à 14:15
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

stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
15 déc. 2011 à 09:48
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.
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
15 déc. 2011 à 12:58
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!!
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
15 déc. 2011 à 14:05
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 !
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
15 déc. 2011 à 14:15
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
0
Rejoignez-nous