2013-09-28 5 views
0

У меня есть этот кусок кода:Проверка пустых полей после шифрования

<form action="register.php" method="post"> 
    Email: <input type="text" name="email" /><br /> 
    Username: <input type="text" name="username" /><br /> 
    Password: <input type="password" name="p" id="password" /><br /> 
    <input type="button" value="Register" onclick="formhash(this.form, this.form.password);" /> 
</form> 

Как вы можете видеть, когда кнопка нажата, функция вызывается, который шифрует пароль. Моя проблема заключается в том, что я не могу проверить, что пользователь даже написал что-либо в поле пароля, потому что шифрование шифрует пароль, прежде чем я смогу его проверить. Обычно я проверяю это так:

<?php if (empty($_POST['password'])) { 
echo "You forgot to fill the password field."; 
} 

Но поле пароля заполнено независимо от того, из-за шифрования. Мне нужно что-то, что может проверить, пусто ли поле пароля до нажатия кнопки, в которой пароль зашифрован ... Любые идеи?

+0

почему вы зашифровать пароль перед его отправлять на сервер? Создайте метод шифрования на стороне сервера в php, используя MD5, Sha1 .. – shyammtp

+0

По соображениям безопасности, и я думаю, что MD5 объявлен небезопасным в настоящее время? – owwyess

+0

use sha256 он должен быть безопасным и трудно сломать. . См. Http://php.net/manual/en/function.hash.php – shyammtp

ответ

3

Один из способов, чтобы подтвердить, что-то было введено, чтобы использовать нужный HTML5 атрибут в поле пароля, как это

<input type="password" name="yourname" id="yourid" required /> 

Это всегда подтверждает, что что-то было введено в поле пароля. Может быть, это помогает.

Попробуйте это:

<html> 
<head> 
<title>Form validation test</title> 
<script type="text/javascript"> 
function validateAndEncrypt() 
{ 
var email = document.getElementById("email"); 
var name = document.getElementById("name"); 
var pass = document.getElementById("password"); 
//if you want to validate the password only check the value of password field only 
if(email.value== "" || name.value == "" || pass.value== "") 
{ 
    alert("One of the fields is empty the script cannot continue.") 
    return false; 
} 
else 
{ 
    // you can encrypt your password here 
    alert("Everyting is fine, now we can proceed further"); 
    return true; 
} 
} 
//if you want to check the password field before hitting the button 
function checkPassword() 
{ 
var pass = document.getElementById("password"); 
if(pass.value=="") 
{ 
    alert("The password field is empty"); 
    return false; 
} 
return true; 
} 
</script> 
</head> 
<body> 
<form action="register.php" method="post"> 
Email: <input type="text" name="email" id="email" /><br /> 
Username: <input type="text" name="username" id="name"/><br /> 
Password: <input type="password" name="password" id="password" onblur="return checkPassword();"required /><br /> 
<input type="submit" value="Register" onclick="return validateAndEncrypt();" /> 
</form> 
</body> 
</html> 
+0

Да, хорошее предложение, я тоже об этом подумал. Хотя я слышал слухи, что это не работает в браузере Safari и IE 9>. Итак, что произойдет, если кто-то с Safari использует мою регистрационную форму, смогут ли они сделать пароль, содержащий 0 символов? Потому что это никоим образом не должно быть возможным. :( – owwyess

+0

да, вы правы. Почему вы не используете какую-либо проверку формы, а затем вызываете функцию хеширования. Что-то вроде проверки формы внутри функции, а затем вызывается хеширование из функции проверки или вы можете использовать шифрование на стороне сервера например, md5 или sha2 для шифрования вашего пароля. – nurakantech

+0

Хм, могу ли я проверить поле пароля перед его отправкой на сервер, если я создаю функцию php и вызываю ее в

? – owwyess

0

Таким образом, вы не можете использовать свой пароль динамически, это просто, когда введен полный пароль.

Вы можете использовать .submit, чтобы отправить форму только тогда, когда хэш закончена

document.forms[form_name].submit() 
+0

Позволяет ли я проверить форму до того, как она будет хеширована? Я имею в виду, если я хочу проверить, что поле пароля не пустое, и оно содержит менее 30 символов, тогда оно должно быть проверено перед его хэшей. Иначе это будет путь длиннее 30 символов? – owwyess

Смежные вопросы