Générer un mot de passe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Générer un mot de passe

par renan44 » 22 févr. 2005, 15:26

Désolé de ne pas avoir pu te répondre, mais je bossais...

Pour cequi est de mon code, et bien en fait lors du chargement de la page on génère un code, qui sera le même tout le temps (enfin je veux dire qu'il ne va pas se générer plusieurs fois)

Donc lavariable $mot_de_passe restera la même tout le temps que la page sera ouverte. Si un membre au même moment demande un nouveau mot de passe, la page va se charger et définir aléatoirement un mot de passe, qui sera différent (ou alors c'est le coup de bol lol)

par Ultiny » 22 févr. 2005, 00:30

Finalement, comme l'agencement de mon code ne perméttait pas de créer les mots de passe (la variable me donnait qu'un seul caractère a cause de la position d'un } j'ai donc fais un double codage md5, un premier qui code le seul caractere delivré par la variable, ce code de 32bits sera donc envoyé par mail, puis un deuxieme codage md5 pour la base de donnée. J'ai donc résolut mon problème. J'ai utilisé ta ligne "srand((double)microtime()*1000000);" Merci

par Ultiny » 21 févr. 2005, 20:09

ça ma l'air pas mal, peut tu me detailler un peu comment le code ne se change pas ? Mais on est bien d'accors que le password doit etre aleatoire et changer d'une requète à l'autre.

Car si jecoute ma jujotte, tu lui demande de garder la meme valeur pendant un laps de temps, mais si deux membres effectuent la requete simultanément, ils auront le meme passe ?

par renan44 » 21 févr. 2005, 19:44

Moi je fais avec ça, ce qui est quasiment similaire :
<?php
$caractere= "abBDEFcdefghijkmnPQRSTUVWXYpqrst23456789";
srand((double)microtime()*1000000); 
for($i=0; $i<10; $i++) {$mot_de_passe .= $caractere[rand()%strlen($caractere)]; }
?>
ça marche très bien, le mot de passe ne change pas, puisu'il est généré une seule fois.

Pour ton cas précis, je ne sais pas du tout si ça serais générer 2 fois, à voir ...

Générer un mot de passe

par Ultiny » 21 févr. 2005, 19:35

Maintenant mon systeme de login, delogin, inscription, deletage du compte terminé, je travail sur le mot de passe perdu et sur la modification des données.

Je voudrais savoir comment je pourrais générer un mot de passe aléatoire qui sera envoyé par mail puis mis a jour dans la base de donné. En fait j'ai peur qu'avec ceci
function GenerPassword()
{
$string="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
$newpass="";
for($i=0;$i<8;$i++)
{
$pass.=$string[mt_rand()%strlen($string)];
}
return $pass;
}


$mdp = GenerPassword();
echo $mdp;

Les mots de passe appelé du coup 2 fois (1x pour mail et 1 x pour db) soient different. Alors comment pourraije proceder ?
<?PHP
//On verifi si deja cliqué OK
if (isset($_POST['envoyer'])){


//il a cliqué OK
if(isset($_POST['login']))      $login=$_POST['login'];
else      $login="";

include ('configuration.php');

//On verifie user si existe
$db = mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname,$db);
$mdpsql = "SELECT id FROM servgame_clients WHERE login='$login'";
$mdpreq = mysql_query($mdpsql) or die ('Erreur SQL !'.$mdpsql.'<br>'.mysql_error());
$mdpres = mysql_num_rows($mdpreq);
mysql_close();
if (($mdpres!=0)){

//user existe on prend mail
$db = mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname,$db);
$reqmailsql = "SELECT email FROM servgame_clients WHERE login='$login'";
$reqmailreq = mysql_query($reqmailsql) or die ('Erreur SQL !'.$reqmailsql.'<br>'.mysql_error());
$reqmailres = mysql_num_rows($reqmailreq);
while($data = mysql_fetch_assoc($reqmailreq)){

//on genere un new mot de pass


//on met a jour le pass ds la base de donnée




/*
//On mail
mail("$login", "Votre nouveau mot de passe", "$newpass", "From: $mailadmin");
*/

//On annonce que c'est bon
echo"<div align=\"center\" class=\"centre\">Votre nouveau mot de passe vient de vous &ecirc;tre envoyer &agrave; l'adresse mail<br>que vous avez indiqu&eacute; lors de votre inscription</div>";
/*<script language=\"JavaScript\">
setTimeout(\"window.location='/index.php?page=Membres'\",3000);
</script>";*/



//user existe pas on affiche erreur + formulaire
}else{
echo"<div align=\"center\" class=\"centre\">Pour recevoir votre mot de passe par mail, veuillez indiquer votre login</div>
<br><br><div align=\"center\" class=\"signale\">Le login que vous avez ent&eacute; n'existe pas</div><br><br>
<form action=\"/index.php?page=Membres&selec=Passperdu\" method=\"post\">
<table align=\"center\" border=\"0\"><tr><td width=\"67\" class=\"entete\">Login :</td>
<td width=\"10\"></td><td width=\"144\"><input type=\"text\" name=\"login\" maxlength=\"50\" class=\"entete\">
</td></tr><tr><td colspan=\"3\" align=\"center\"><table width=\"147\" border=\"0\" align=\"right\">
<tr><td width=\"149\"><input type=\"submit\" value=\"Envoyer\" name=\"envoyer\" class=\"entete\"></td>
</tr></table></td></tr></table></form>";
}







//lutilisateur na pas cliqué OK
}else{
if(isset($_POST['login']))      $login=$_POST['login'];
else      $login="";
echo"<div align=\"center\" class=\"centre\">Pour recevoir votre mot de passe par mail, veuillez indiquer votre login </div>
<br><br><br><br><br>
<form action=\"/index.php?page=Membres&selec=Passperdu\" method=\"post\">
<table align=\"center\" border=\"0\"><tr><td width=\"67\" class=\"entete\">Login :</td>
<td width=\"10\"></td><td width=\"144\"><input type=\"text\" name=\"login\" maxlength=\"50\" class=\"entete\">
</td></tr><tr><td colspan=\"3\" align=\"center\"><table width=\"147\" border=\"0\" align=\"right\">
<tr><td width=\"149\"><input type=\"submit\" value=\"Envoyer\" name=\"envoyer\" class=\"entete\"></td>
</tr></table></td></tr></table></form>";
}
?>