nemesiskoen
|
Als je per se wilt dat het een password van 12 tekens terug stuurt doe dan niet moeilijk en doe gewoon zo:
function passwordGenerate()
{
$maxlength = 12;
function passwordGenerate() { $maxlength = 12;
Want die invoer is dan nergens en werkelijk nergens voor nodig. |
|
|
leendert
|
Ik vind het niet een fout!
Het was voor eigen gebruik dus dat ik die extra controle er in had maakt opzich niet uit.
Ik wilde gewoon een 12 cijferig wachtwoord dus......
Hoe jij het nu hebt gedaan kan inderdaad ook, maar dat had ik niet nodig dus daarom heb ik dat er ook niet ingebouwd. |
|
|
nemesiskoen
|
Werkende versie;)
<?php
function passwordGenerate($maxLength = 12)
{
$possible = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$password = '';
while($i < $maxLength) {
$pass = substr($possible, mt_rand(0,strlen($possible)-1),1);
if (!strstr($password, $pass)) {
$password .= $pass;
$i++;
}
if($i > 61) break;
}
return $password;
}
echo passwordGenerate(100); //62 tekens
echo "<br />";
echo passwordGenerate(); //12 tekens
echo "<br />";
echo passwordGenerate(40); //40 tekens
?>
<?php function passwordGenerate($maxLength = 12) { $possible = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $password = ''; while($i < $maxLength) { if (!strstr($password, $pass)) { $password .= $pass; $i++; } if($i > 61) break; } return $password; } echo passwordGenerate (100); //62 tekens echo passwordGenerate (); //12 tekens echo passwordGenerate (40); //40 tekens ?>
Mja, daar heb je fouten voor he:). Om van te leren. |
|
|
leendert
|
jaja , je hebt gelijk ;)
Ik had hem een poosje geleden gemaakt als password generator voor mezelf en ik wilde 12 tekens.
Het is zoals je zegt nutteloos omdat de doen maar ik had er zelf geen last van ;) |
|
|
nemesiskoen
|
Ja
function passwordGenerate($maxLength = 12)
{
if ($maxLength != 12) {
$maxLength = 12;
}
function passwordGenerate($maxLength = 12) { if ($maxLength != 12) { $maxLength = 12; }
Dit... wat nog altijd nutteloze code is. Omdat je net zo goed kan zeggen $maxlength = 12.
echo passwordGenerate(40);
echo passwordGenerate (40);
Geeft een password van 12 tekens...
Waarom laat je de gebruiker dan überhaupt een parameter meegeven aan de functie? |
|
|
|
|
nemesiskoen
|
Hoeveel het er zijn doet er eigenlijk niet toe, het doet er toe dat je er iets tegen moet doen... |
|
|
leendert
|
Wat denk je dat dit doet:
passwordGenerate($maxLength = 12)
passwordGenerate($maxLength = 12)
Ja dat weet ik wel ;) maar het is gewoon als extra ( opzich onnodige code ;))
Ja dat snap ik wel dat als je boven de 62 komt hij in een oneidige loop komt,
en het zijn 62 cijfers want de 0 telt ook mee. |
|
|
nemesiskoen
|
Wat denk je dat dit doet:
passwordGenerate($maxLength = 12)
passwordGenerate($maxLength = 12)
Als er niets wordt meegegeven dan wordt de maxlength automatisch 12. Wordt er wel iets meegegeven dan is maxlength gelijk aan die lengte.
En dan ga jij ineens die lengte weer veranderen in 12:s
Als je een controle zou doen if(!is_numeric($maxelength)) $maxlength = 12; ofzoiets, maar wat jij doet... snap ik gewoon het nut niet van.
9 (9 cijfers) + 26 (grote letters) + 26 (kleine letters) = 61
Als je dit niet instelt kom je in een oneindige loop, want na dat alle tekens zijn geweest gaat strstr false terug sturen... en dan blijft de loop gaat. |
|
|
leendert
|
@nemesiskoen
Ja het is idd overbodig maar voor het geval dat ik hem niet vul als parameter.
edit:
Hoezo een maxlength instellen van 61? |
|
|
nemesiskoen
|
@leendert:
function passwordGenerate($maxLength = 12)
{
if ($maxLength != 12) {
$maxLength = 12;
}
function passwordGenerate($maxLength = 12) { if ($maxLength != 12) { $maxLength = 12; }
is toch hetzelfde als:
function passwordGenerate() {
$maxlength = 12;
function passwordGenerate() { $maxlength = 12;
Wat vrij dom is omdat de gebruiker van de functie geen ene inspraak heeft over de lengte van de string.
En stel dit zou wel zijn dan moet je een maximum lengte van de variabele maxlength instellen op 61 anders krijg je een onneindige loop. |
|
|
leendert
|
kan handig zijn bij het genereren van het wachtwoord:
<?php
function passwordGenerate($maxLength = 12)
{
if ($maxLength != 12) {
$maxLength = 12;
}
$possible = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$password = '';
while($i < $maxLength) {
$pass = substr($possible, mt_rand(0,strlen($possible)-1),1);
if (!strstr($password, $pass)) {
$password .= $pass;
$i++;
}
}
return $password;
}
?>
<?php function passwordGenerate($maxLength = 12) { if ($maxLength != 12) { $maxLength = 12; } $possible = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $password = ''; while($i < $maxLength) { if (!strstr($password, $pass)) { $password .= $pass; $i++; } } return $password; } ?>
Zie ook de functies:
strstr()
mt_rand()
strlen()
|
|
|