Generateur de mot de passe plus durée de validité

SHQ
Petit nouveau ! | 6 Messages

18 oct. 2012, 18:31

bonjour
pouvez-vous m'aider a créer un code php, sa fonction c'est de créer un mot de passe avec une durée de validité dans cette ordre
pour le type de mot de passe "chiffres uniquement"
code:jours
0673490124:30
exemple pour un seul code:

Image

exemple pour 5 codes:

Image

merci pour votre passage

cordialement

Eléphanteau du PHP | 45 Messages

18 oct. 2012, 19:28

Hello.
Pour ton générateur de pass numérique:
$nombre_aleatoire = rand(1000000000, 9999999999);
Ceci n'est qu'un exemple basique!
Je pense que le meilleurs serait de faire une boucle à ajout de nombre aléatoire jusqu'au dixième chiffre.
Par contre, pas convaincu du tout qu'un pass numérique à 10 chiffres soit véritablement sécure!
Pour le temps de validité du pass, tu as pas mal de mods sur le net (vs joomla ou phpbb par ex) sur lesquels tu peux t'inspirer niveau code...
Mais tu peux le définir dans ton cookies si tu utilises ce mode, après, en session, c'est une comparaison entre le moment de la création du mot de passe et son enregistrement dans la bdd et un temps time que tu auras défini dans tes paramètres admin de ton site. Ne pas oublier de hasher avant enregistrement dans la bdd.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 oct. 2012, 19:42

salut


pour la validité, c'est une table qui enregistre le code + la d'expiration.

de temps en temps tu exécute une requete SQL qui supprime de la base les codes dont la date d'expiration est inférieure à la date actuelle.

de plus a l'utilisation tu vérifie aussi la date pour éviter les d'utilisation avant passage du script de nettoyage.


@+
Il en faut peu pour être heureux ......

SHQ
Petit nouveau ! | 6 Messages

18 oct. 2012, 23:23

bonjour
# moogli
oui c'est tout a fait sa, j'ai déjà ça mais il me manque juste un générateur de code avec la durée devant

cordialement

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 oct. 2012, 18:19

Heu tu as tout la hein je vois pas ce qu'il te manque.

Qu'est que tu sais pas faire ?
Le formulaire ?
La validation du formulaire ?
Générer un nombre aléatoire ?

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

19 oct. 2012, 21:18

Il y a un truc passioonnant ici:
http://fr2.php.net/manual/fr/function.crypt.php
par harry at simans dot net
Ça répond à la marge de la question, mais je me demande si la semence du hâchage ne pourrait pas être le timestamp d'inscription ou d'expiration) :(comme la semence est stockée en bout de pass codé....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

SHQ
Petit nouveau ! | 6 Messages

19 oct. 2012, 21:39

Heu tu as tout la hein je vois pas ce qu'il te manque.

Qu'est que tu sais pas faire ?
Le formulaire ?
La validation du formulaire ?
Générer un nombre aléatoire ?

@+
bjr

au fait je sais pas faire grande chose, je débute dans le domaine
voila ce que j'ai pour le moment:
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<title>Generator</title>
	<meta http-equiv="content-type" 
		content="text/html;charset=utf-8" />
	<script type="text/javascript" src="js/jquery.js"></script>
	<script type="text/javascript" src="js/main.js"></script>
<style>
	.genform{width:280px;float:left}
	.genform div>*{float:left}
	.genform label{display:block;width:100px;}
	.clr{clear:both}
	.bigbutton{height:30px;width:100%}
	.left{float:left}
	.list{width:279px;}
	.margin{margin-left:20px}
</style>
<script>
	$us = "<?php echo $s ?>"
</script>
</head>

<body>

<div>
	<form method="post" class="genform">
		<div>
			<label>Generate:</label>
			<input type="number" min="1" size="10" value="1" name="qt" />
		</div>
		<div class="clr"></div>
		<div>
			<label>Length:</label>
			<input type="number" size="10" value="10" disabled name="ln" />
		</div>
		<div class="clr"></div>
		<div>
			<label>Validity:</label>
			<select id="vl1" name="vl">
				<option value="1" >1 Month</option>
				<option value="6">6 Months</option>
				<option selected value="12">12 Months</option>
			</select>
		</div>
		<div class="clr"></div>
		<br/>
		<div>
			<input type="submit" name="genform" value="Generate" class="bigbutton" />
		</div>
	</form>
	<form method="post" class="margin genform">
		<div>
			<label>Codes:</label>
			<select name="codes" class="list" size="10"></select>
		</div>
		<div class="clr"></div>
		<br/>
		<div>
			<input type="hidden" id="vl2" value="1" name="vl" />
			<input type="hidden" value="" name="list" />
			<input type="submit" name="genform" value="Insert" class="bigbutton" />
		</div>
	</form>
</div>

</body>
</html>


merci

Eléphanteau du PHP | 45 Messages

20 oct. 2012, 18:04

Je suis en train de bricoler un truc mais, bon, on verra bien... Bon exercice.
EDIT:
Juste un exemple exploitable à améliorer et sûrement pas super top mais bon, indulgence:
<?PHP
$ttl = $_POST['vl'];
$genere = $_POST['genere'];
$destroy = $_POST['destroy'];
$getcode = $_POST['code'];

	session_set_cookie_params($ttl);
	session_start();
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
        <title>Generator</title>
        <meta http-equiv="content-type"
                content="text/html;charset=utf-8" />
        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript" src="js/main.js"></script>
<style>
        .genform{width:280px;float:left}
        .genform div>*{float:left}
        .genform label{display:block;width:100px;}
        .clr{clear:both}
        .bigbutton{height:30px;width:100%}
        .left{float:left}
        .list{width:279px;}
        .margin{margin-left:20px}
</style>
</head>
<body>
<div>
<?php
	for ($i=1; $i<99999; $i++)
	{
		$ID1 = mt_rand(10000, $i);
		$ID2 = mt_rand(10000, $i);
	}
$code = $ID1.$ID2;
if($genere !='true')
{ 
?>

        <form method="post" class="genform" action="genpass.php">
        <input type="hidden" name="genere" value="true" />
        <input type="hidden" name="code" value="<?php echo $code; ?>" />
               <div>
                        <label>Validité:</label>
                        <select id="vl1" name="vl">
                                <option value="1" >1 Mois</option>
                                <option value="6">6 Mois</option>
                                <option selected value="12">12 Mois</option>
                        </select>
                </div>
                <div class="clr"></div>
                <br/>
                <div>
                        <input type="submit" name="genform" value="Générer" class="bigbutton" />
                </div>
        </form>
<?php
}
else
{ 
	$_SESSION['ID'] = $getcode;
	$_SESSION['validity'] = time()+$ttl;
	echo 'ID de session ('.$_SESSION['ID'].') pour '.(($_SESSION['validity'])-time()).' mois.';
?>
        <form method="post" class="margin genform">
                <div>
                        <label>Code:</label>
                        <input type="text" name="codes" class="list" value="<?php echo $_SESSION['ID']; ?>"/>
                </div>
                <div class="clr"></div>
                <br/>
                <div>
                        <label>Validité:</label>
                        <input type="text" id="vl2" value="<?php echo $ttl; ?>" name="vl" /> mois
                        <input type="hidden" value="true" name="destroy" />
                        <input type="submit" name="genform" value="Détruire session" class="bigbutton" />
                </div>
        </form>
<?php
}
if ($destroy =='true')
{
	session_unset();
	session_destroy();
}
?>
</div>
</body>
</html>
ReEdit:
Cela fonctionne en l'état mais il y a une erreur... Les pros du forum trouverons! ;)
J'ai fais exprès de faire deux générateurs de code et les assembler car générer 10 chiffres d'un seul jet demande beaucoup de temps au serveur.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 oct. 2012, 17:47

salut,


@asf21 : ne jamais faire ceci
$ttl = $_POST['vl'];
$genere = $_POST['genere'];
$destroy = $_POST['destroy'];
$getcode = $_POST['code'];

tu auras fatalement une erreur d'indexs indéfinis au premier affichage (tant que le formulaire n'existe pas en fait).

de plus il est inutile d'ajouter des variables qui ne seront que des références aux premières.

et j'veux pas entendre : oui mais on est pas obligé d'afficher les erreur, car ce n'est pas parce que l'on peux faire du cache misère que l'on ne peux pas faire bien ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 45 Messages

25 oct. 2012, 12:35

Non non non, pas de p'oblème pat'on! ;)
Je ne dirais pas "oui mais on est pas obligé d'afficher les erreur..."
Par contre, pas d'erreur d'index au premier affichage (ah moins qu'ovh aient activé une fonction débuguante en fantôme...
Cependant, l'info est juste et de ce fait doit être appliquée, tu as raison. Même du cache misère peut être propre et fonctionnel.
Merci bien.

SHQ
Petit nouveau ! | 6 Messages

07 nov. 2012, 17:37

voila c fait
<?php


$loguntil = 10;
$nologs = "None";
$failedloginlog = "10 Latest Failed Login Attempts";

if (isset($_POST["sublogshowall"]) and $_POST["sublogshowall"] == "Show all") {
	$loguntil = 0;
	$failedloginlog = "All Failed Login Attempts";
}

if (isset($_POST["sublogclear"]) and $_POST["sublogclear"] == "Clear logs") {
	$conn = @mysql_connect($dbhost,$dbuser,$dbpass) or sqlerror();
	mysql_select_db($dbname, $conn);
		$sql = mysql_query("TRUNCATE TABLE cmum_failedlogins");
	mysql_close($conn);
	$nologs = "Logs cleard!";
}

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php print($charset); ?>" />
<title>:: <?php print($longtitle); ?></title>
<link rel="shortcut icon" href="favicon.ico">
<link rel="apple-touch-icon" href="favicon.png"> 
<link href="css/main.css" rel="stylesheet" type="text/css">



	<script type="text/javascript" src="js/jquery1.js"></script>
	<script type="text/javascript" src="js/main.js"></script>
<style>
	.genform{width:280px;float:left}
	.genform div>*{float:left}
	.genform label{display:block;width:100px;}
	.clr{clear:both}
	.bigbutton{height:30px;width:100%}
	.left{float:left}
	.list{width:279px;}
	.margin{margin-left:20px}
</style>
<script>
	$us = "<?php echo $s ?>"
</script>
	
	
</head>

<body>
<table width="780" border="0" align="center" valign="top" cellpadding="0" cellspacing="0" style="border-left: 1px solid #DDDDDD; border-right: 1px solid #DDDDDD; text-align: left;">
  <tr bgcolor="#FFFFFF">
    <td height="22" colspan="6">&nbsp;</td>
  </tr>
  <tr bgcolor="#0066FF">
    <td width="15" bgcolor="#808080">&nbsp;</td>
    <td width="751" height="120" bgcolor="#808080"><?php require("includes/header.php"); ?></td>
    <td width="15" bgcolor="#808080">&nbsp;</td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td height="18">&nbsp;</td>
    <td height="18"><center><?php require("includes/menu.php"); ?></center></td>
    <td height="18">&nbsp;</td>
  </tr>
    <tr bgcolor="#FFFFFF">
    <td height="18">&nbsp;</td>
    <td height="18">&nbsp;</td>
    <td height="18">&nbsp;</td>
  </tr>
</table>
<table width="780" height="20" border="0" align="center" valign="top" cellpadding="0" cellspacing="0" style="border-left: 1px solid #DDDDDD; border-right: 1px solid #DDDDDD; text-align: left;">
  <tr bgcolor="#FFFFFF">
    <td width="15" height="20">&nbsp;</td>
    <td height="20" colspan="4">
    <fieldset>
	<legend>Code Generator</legend>




    
    <div>
	<form method="post" class="genform">
		<div>
			<label>Generate:</label>
			<input type="number" min="1" size="10" value="1" name="qt" />
		</div>
		<div class="clr"></div>
		<div>
			<label>Length:</label>
			<input type="number" size="10" value="10" disabled name="ln" />
		</div>
		<div class="clr"></div>
		<div>
			<label>Validity:</label>
			<select id="vl1" name="vl">
				<option value="30" >1 Month</option>
				<option value="180">6 Months</option>
				<option selected value="365">12 Months</option>
			</select>
		</div>
		<div class="clr"></div>
		<br/>
		<div>
			<input type="submit" name="genform" value="Generate" class="bigbutton" tabindex="25" id="submit"/>
		</div>
	</form>
	<form method="post" class="margin genform">
		<div>
			<label>Codes:</label>
			<select name="codes" class="list" size="10"></select>
		</div>
		<div class="clr"></div>
		<br/>
		<div>
			<input type="hidden" id="vl2" value="" name="vl" />
			<input type="hidden" value="" name="list" />
			<input type="submit" name="genform" value="Insert" class="bigbutton" tabindex="25" id="submit" />
		</div>
	</form>
</div>

<div class="clr"></div>


     
    </fieldset>



    
    </td>
    <td width="15" height="20">&nbsp;</td>
  </tr>
</table>
<table width="780" height="20" border="0" align="center" valign="top" cellpadding="0" cellspacing="0" style="border-left: 1px solid #DDDDDD; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left;">
    <tr bgcolor="#FFFFFF">
    <td height="25" width="780">&nbsp;</td>
  </tr>
</table>
<?php
require("includes/footer.php");
?>
</body>
</html>