как исправить ф-ию? генератор паролей.
Есть функция генератора паролей следующего вида:
<HEAD > <SCRIPT LANGUAGE="JavaScript"> function a1(q) { var i=document.myform.passlength.value; document.myform.password.value=""; if (i==8) document.myform.password.size=8; if (i==10) document.myform.password.size=10; if (i==12) document.myform.password.size=12; } function getRandomNum(lbound, ubound) { return (Math.floor(Math.random() * (ubound - lbound)) + lbound); } function getRandomChar() { var upperChars = "0123456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ"; var charSet = ""; charSet += upperChars; return charSet.charAt(getRandomNum(0, charSet.length)); } function getPassword(length) { var rc = ""; if (length > 0) for (var idx = 0; idx < length; ++idx) { rc = rc + getRandomChar(); } return rc; } </script> </HEAD> проблема заключается в том, что он периодически выдает комбинацию без цифр. Подскажите плз, как переделать так, чтобы цифра там была всегда? т.е., например, 4-ый, 5-ый символы пароля - обязательно цифры? Заранее спс за help |
Решил по другому сделать, долго не думал и вышло это:
<script type="text/javascript"> function gen(n){ var arg = new Array(); for(var i=0; i<n;i++) arg.push(rand(48,58), rand(65,91), rand(97,123)) for(var j, x, y = arg.length; y; j = parseInt(Math.random() * y), x = arg[--y], arg[y] = arg[j], arg[j] = x); return String.fromCharCode.apply(this, arg); } function rand(min, max){ return Math.floor(Math.random() * (max - min) + min); } </script> <input id="pass" type="text" /> <input type="button" value="Генерировать" onclick="document.getElementById('pass').value = gen(4)" /> Всегда состоит из четырёх цифр, а так же четырёх маленьких и четырёх больших символов. |
Цитата:
а как же мне быть с 8-и символьным паролем? Можно не менять фунцию полностью, а задать, например, параметр, который будет отвечать за генерацию именно 4-ого символа паса? |
Последовательность моего скрипта n*3, вам такой не подойдёт?
|
<script type="text/javascript"> function gen(n){ var arg = new Array(); for(var i=0; i<n;i++) arg.push(rand(48,58), rand(65,91), rand(97,123)) for(var j, x, y = arg.length; y; j = parseInt(Math.random() * y), x = arg[--y], arg[y] = arg[j], arg[j] = x); return String.fromCharCode.apply(this, arg); } function rand(min, max){ return Math.floor(Math.random() * (max - min) + min); } </script> <input id="pass" type="text" /> <input type="button" value="Генерировать 12" onclick="document.getElementById('pass').value = gen(4)" /> <input type="button" value="Генерировать 10" onclick="document.getElementById('pass').value = gen(4).substr(1, 10)" /> <input type="button" value="Генерировать 8" onclick="document.getElementById('pass').value = gen(3).substr(1, 8)" /> |
Сделал чуток по проще, в функцию просто передаётся необходимая длина.
<script type="text/javascript"> function gen(l){ var arg = new Array(), l = l || 4; for(var i = 0; i < Math.round((l / 3) + 0.49); i++) arg.push(rand(48,58), rand(65,91), rand(97,123)) for(var j, x, i = arg.length; i; j = parseInt(Math.random() * i), x = arg[--i], arg[i] = arg[j], arg[j] = x); return String.fromCharCode.apply(this, arg).substr(0, l); } function rand(min, max){ return Math.floor(Math.random() * (max - min) + min); } </script> <input id="pass" type="text" /> <input type="button" value="Генерировать 12" onclick="document.getElementById('pass').value = gen(12)" /> |
Вложений: 1
Skipp, глянь как это все выглядит в конечном варианте, архив я приложил..
В JS я есмь дерево еще то) все сделал по аналогии с готовых скриптов, поэтому если ты внедришь свое творение в мой чудо-генератор - счастью и благодарности моим не будет предела!:) |
Прости, но это уж делай сам.
|
Skipp,
ок, спс за help |
Часовой пояс GMT +3, время: 12:32. |