J'ai créer un espace membre, et je ne sais vraiment pas quelle piste prendre pour permettre aux ultilisateurs qui aurait perdu leur mot de passe d'en générer un nv ??
Qui pourrais me mettre sur une piste?
D'avance merci
Ce que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.$rand_pass = '';
$length = rand(9, 16);
for ($i = 0; $i < $length; $i++)
{
$range = rand(0, 55);
if ($range < 23)
{
$rand_pass .= chr(rand(65, 90));
}
else
{
if ($range < 46)
{
$rand_pass .= chr(rand(97, 122));
}
else
{
$rand_pass .= chr(rand(48, 57));
}
}
}
Génère le mot de passe composé des lettres et des chiffres. La longueur du mot de passe varie aléatoirement de 9 à 16 caractères.
<?php
include("connect/fc-phpconnect_tvc.php");
/*generation du nv pass.*/
function gen_reg_key()
{
$key = ""; /*on initialise la variable $key à "vide" */
$max_length_reg_key = 10; /*on définit la taille de la chaine (10 caractères ca suffit ;))*/
/*on définit le type de caractères ascii de la chaine */
$chars = array( "a","b","c","d","e","f","g","h","i","j","k","l",
"m","n","o","p","q","r","s","t","u","v","w","x",
"y","z","1","2","3","4","5","6","7","8","9","0");
$count = count($chars) - 1; /*on comptabilise le nombre total de caractères possibles (36 :-) pour l'alphabet) */
srand((double)microtime()*1000000); /*on initialise la fonction rand pour le tirage aléatoire*/
for($i = 0; $i < $max_length_reg_key; $i++) $key .= $chars[rand(0, $count)]; /*on tire aléatoirement les $max_length_reg_key carac de la chaine*/
return($key); /*on renvois la clé générée */
}
/*Fin de le génération de clé*/
$loginnewpass = $_POST['passeperdu'];
if (isset($loginnewpass)) {
$sql = mysql_query ("SELECT
*
FROM
membre
WHERE
login='".$loginnewpass."'") ;
$rep = mysql_fetch_object($sql) ;
if ($rep->id == "" || $rep->pass2!="") { //Si le login n'existe pas
if ($rep->id == "")
{
echo "<BR><center>Aucun membre avec ce login !<BR><BR><a href=perdu.php>Retour</a><BR><BR>" ;
}
}else{ //SI LE login EXISTE DANS LA BDD
$nom = $rep->name ;
$to = '[email protected]';
$new_pass = gen_reg_key();
$destinataire = $loginnewpass ;
$email_dest = $rep->email ;
$new_pass_md5 = md5($new_pass);
$sql = "UPDATE
membre
SET
pass_md5='".$new_pass_md5."'
WHERE
login='".$loginnewpass."'" ;
if(false ===($result = mysql_query($sql))) {
die("Erreur MySQL :<br />" . $sql . "<br />" . "Impossible de sauvegarder la/les modification/s");
}
header('location:index.php');
function MySendMail($to='',$objet='',$contenu=''){
$header ='From: [email protected]'."\n".
'Bcc: [email protected]'."\n".
'Content-type: text/plain; charset=iso-8859-1'."\n".
'Content-transfer-encoding: base64'."\n".
'X-Priority: 3'."\n".
'X-MSMail-Priority: Normal'."\n".
'X-Unsent: 1'."\n".
'X-Originating-IP: [0.0.0.0]'."\n";
return @mail($to,$objet,@chunk_split(@base64_encode($contenu)),$header);
}
$objet = 'Votre nouveau mot de passe sur Cabling';
$contenu = 'Bonjour '.$nom."\n\n".
'Vous recevez cet e-mail parce que vous (ou quelqu\'un qui prétend être vous) '.
'avez demandé à ce qu\'un nouveau mot de passe vous soit envoyé pour votre '.
'compte.'.
'Si vous continuez à le recevoir, veuillez contacter l\'administrateur. '.
'Vous êtes priés de conserver cet e-mail dans vos archives. Voici les '.
'informations concernant votre compte : '."\n\n".
'++++++++++++++++++++++++++++++++++++++++++++++++++++++'."\n".
'Votre pseudo: '.$loginnewpass."\n".
'Votre nouveau mot de passe: '.$new_pass."\n".
'++++++++++++++++++++++++++++++++++++++++++++++++++++++'."\n\n".
'Si vous rencontrez des difficultés, veuillez contacter l\'administrateur.'."\n\n".
'Vous pouvez vous rendre dans votre profil pour modifier le mot de passe.'."\n\n".
'Cordialement laurent Gillet.'."\n";
return MySendMail($email_dest,$objet,$contenu);
}
} else {
}
?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<body background="img/grd-4px.gif">
<form method="post" action="perdu.php">
<fieldset style="width: 259; height: 43"><legend>Demande d'un nouveau mot de
passe.</legend>
<label for="pseudo"><font size="2" color="#000000">Votre login svp:</font></label>
<input name="passeperdu" type ="text"id="passeperdu"/><p align="center">
<input type="submit" value="Connexion" style="border: 1px solid #6699CC; padding-left: 4px; padding-right: 4px;
padding-top: 1px; padding-bottom: 1px; background-image: url('style/imgs/fd_bt_1.gif')"/><br />
</p>
</fieldset>
<br />
</form>
</html>
<?php
?>
J'ai quand même un petit soucis il m'envoie deux fois les mail ?
Ce que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.