PHP проверить JavaScript и отправить текущий и новый пароль

Я пишу форму "Смена пароля", но я не слишком хорошо разбираюсь в javascript и мне нужно немного помочь:)

Это моя текущая функция:

function changeformhash(form, currentpwd, password, conf) {
    // Check each field has a value
    if (currentpwd.value    == ''   ||
        password.value      == ''   ||
        conf.value          == '') {

        alert('¡Debes proporcionar todos los datos solicitados!');
        form.currentpwd.focus();
        return false;
    }

    // Check that the current password is sufficiently long (min 6 chars)
    // The check is duplicated below, but this is included to give more
    // specific guidance to the user
    if (currentpwd.value.length < 6) {

        alert('Tu contraseña actual debe contener, como mínimo, 6 carácteres. Por favor, intentalo de nuevo.');
        currentpwd.value    = "";
        password.value      = "";
        conf.value          = "";
        form.currentpwd.focus();
        return false;
    }

    // At least one number, one lowercase and one uppercase letter
    // At least six characters

    re = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/;
    if (!re.test(currentpwd.value)) {

        alert('Tu contraseña actual debe contener, como mínimo, 1 númnero y 1 letra mayúscula y minúscula. Por favor, intentalo de nuevo.');
        currentpwd.value    = "";
        password.value      = "";
        conf.value          = "";
        form.currentpwd.focus();
        return false;
    }

    // Check that the new password does not match with the current password
    // and is sufficiently long (min 6 chars)
    // The check is duplicated below, but this is included to give more
    // specific guidance to the user
    if (password.value == currentpwd.value) {

        alert('¡No puedes usar la misma contraseña!');
        currentpwd.value    = "";
        password.value      = "";
        conf.value          = "";
        form.currentpwd.focus();
        return false;
    }

    if (password.value.length < 6) {

        alert('La contraseña debe contener, como mínimo, 6 carácteres. Por favor, intentalo de nuevo.');
        currentpwd.value    = "";
        password.value      = "";
        conf.value          = "";
        form.currentpwd.focus();
        return false;
    }

    // At least one number, one lowercase and one uppercase letter
    // At least six characters

    var re = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/;
    if (!re.test(password.value)) {

        alert('La contraseña debe contener, como mínimo, 1 númnero y 1 letra mayúscula y minúscula. Por favor, intentalo de nuevo.');
        currentpwd.value    = "";
        password.value      = "";
        conf.value          = "";
        form.currentpwd.focus();
        return false;
    }

    // Check password and confirmation are the same
    if (password.value != conf.value) {

        alert('¡Las contraseñas no coinciden!');
        currentpwd.value    = "";
        password.value      = "";
        conf.value          = "";
        form.currentpwd.focus();
        return false;
    }

     // Create a new element input, this will be our hashed current password field.
    var currentp = document.createElement("input");

    // Add the new element to our form.
    form.appendChild(p);
    p.name = "currentp";
    p.type = "hidden";
    p.value = hex_sha512(currentpwd.value);

    // Create a new element input, this will be our hashed password field.
    var p = document.createElement("input");

    // Add the new element to our form.
    form.appendChild(p);
    p.name = "p";
    p.type = "hidden";
    p.value = hex_sha512(password.value);

    // Make sure the plaintext password doesn't get sent.
    currentpwd.value    = "";
    password.value      = "";
    conf.value          = "";

    // Finally submit the form.
    form.submit();
    return true;
}

Но сначала я хотел бы задать один вопрос для безопасности и комфорта пользователя: если проблем с безопасностью нет, могу ли я оставить поле текущего пароля заполненным, если проверка нового пароля не удалась? Я знаю, из первых рук, что написание паролей снова и снова, потому что некоторые опечатки... могут быть действительно раздражающими:)

Я также хотел бы, кроме проверки того же пароля, проверить аналогичный пароль, проверяя новый и текущий пароль, как я могу это сделать?

На самом деле, если все проверки пройдены, ничего не происходит, стиль css hover зависает:

Вот что я получаю в консоли Firefox: TypeError: Аргумент 1 из Node.appendChild не является объектом.

Я на самом деле использую input type="button", потому что submit будет отправлять, даже если javascript возвращает false, так что... как я могу использовать input type="submit" и предотвратить отправку, если возвращает false?

Заранее спасибо!

0 ответов

Другие вопросы по тегам