Поле установки чужого пароля

Наиболее удобный способ управлением чужим паролем в форме.

Самый простой способ, это обычное текстовое поле (не поле пароля, ведь пароль нужно видеть), но тогда получаем проблему, когда при просмотре формы чужой человек может увидеть этот пароль.

Чтобы избежать такой ситуации, пароль размещаем не в атрибуте <input value="pass">, а в <input value="" data-value="pass">, и рядом создаём кнопку, при нажатии на которую показываем пароль:

<input type="text" name="password" value="" data-value="<?php echo htmlspecialchars($password);?>"/>
<a href="#show_pass" class="btn fui-eye" title="Показать пароль"
    onclick="$(this).prev('input').val($(this).prev('input').data('value')); return false;">
</a>

Так как формируется чужой пароль, то чтобы его не придумывать, рядом располагаем кнопку для генерации пароля:

<a href="#gen_pass" class="btn fui-lock" title="Придумать пароль"
    onclick="$(this).prev('input').val(gen_pass(10)); return false;">
</a>

Собственно сама функция генерации пароля:

function gen_pass(len) {
    var iteration = 0;
    var password = "";
    var randomNumber;
    while(iteration < len){
        randomNumber = (Math.floor((Math.random() * 100)) % 94) + 33;
        if ((randomNumber >=33) && (randomNumber <=47)) { continue; }
        if ((randomNumber >=58) && (randomNumber <=64)) { continue; }
        if ((randomNumber >=91) && (randomNumber <=96)) { continue; }
        if ((randomNumber >=123) && (randomNumber <=126)) { continue; }
        iteration++;
        password += String.fromCharCode(randomNumber);
    }
    return password;
}

При сохранении формы нужно учесть, что при пустом пароле не нужно его сохранять в базу данных, это означает, что пароль не был изменён.

В примерах кода используются классы от twitter-bootstrap и flat-ui.

25 июня 2013