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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]