13.02.2012, 14:46
|
Новичок на форуме
|
|
Регистрация: 21.10.2011
Сообщений: 7
|
|
как исправить ф-ию? генератор паролей.
Есть функция генератора паролей следующего вида:
<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
|
|
13.02.2012, 15:25
|
|
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
Решил по другому сделать, долго не думал и вышло это:
<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)" />
Всегда состоит из четырёх цифр, а так же четырёх маленьких и четырёх больших символов.
__________________
.
Последний раз редактировалось Skipp, 13.02.2012 в 16:46.
|
|
13.02.2012, 15:52
|
Новичок на форуме
|
|
Регистрация: 21.10.2011
Сообщений: 7
|
|
Сообщение от Skipp
|
Всегда состоит из четырёх цифр, а так же четырёх маленьких и четырёх больших символов.
|
Генератор используется для получения паролей заданной длины, а именно 8, 10 и 12 символов. вашь подходит только для последнего варианта)
а как же мне быть с 8-и символьным паролем?
Можно не менять фунцию полностью, а задать, например, параметр, который будет отвечать за генерацию именно 4-ого символа паса?
|
|
13.02.2012, 16:03
|
|
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
Последовательность моего скрипта n*3, вам такой не подойдёт?
__________________
.
|
|
13.02.2012, 16:29
|
|
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
<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)" />
__________________
.
|
|
13.02.2012, 16:55
|
|
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
Сделал чуток по проще, в функцию просто передаётся необходимая длина.
<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)" />
__________________
.
Последний раз редактировалось Skipp, 13.02.2012 в 17:20.
|
|
13.02.2012, 17:20
|
Новичок на форуме
|
|
Регистрация: 21.10.2011
Сообщений: 7
|
|
Skipp, глянь как это все выглядит в конечном варианте, архив я приложил..
В JS я есмь дерево еще то) все сделал по аналогии с готовых скриптов, поэтому если ты внедришь свое творение в мой чудо-генератор - счастью и благодарности моим не будет предела!
|
|
13.02.2012, 17:26
|
|
.
|
|
Регистрация: 30.03.2010
Сообщений: 1,813
|
|
Прости, но это уж делай сам.
__________________
.
|
|
13.02.2012, 17:28
|
Новичок на форуме
|
|
Регистрация: 21.10.2011
Сообщений: 7
|
|
Skipp,
ок, спс за help
|
|
|
|