2013-07-16 3 views
0

У меня есть 2 PHP файлы, login.php и register.php
Я использую sha512 шифрования и с использованием механизма входа из following site
Часть кода регистрации появляется там, но я создал форма регистрации и изменила письменное регистрационную форму на сайте, чтобы быть `process_registration»PHP не может найти элемент формы с помощью Post

в login.php, форма отправляется с использованием: onclick="formhash(this.form,this.form.password);"
Вот formhash(): (от forms.js)

function formhash(form, password) { 
// Create a new element input, this will be out 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. 
password.value = ""; 
// Finally submit the form. 
form.submit(); 
} 

Таким образом, в порядке регистрации и Войти, чтобы иметь тот же самый процесс шифрования, регистрационная форма должна использовать этот метод, как хорошо, но когда я добраться до process_registration.php с моей форме (и он получает там, со всеми правильными параметры) p var не существует в POST, хотя он существует в login.php, который является точно такой же формой и полями, за исключением того, что login использует в качестве своего действия process_login.php, а register.php использует в качестве своего действия process_registration.php.

Вот файл регистрации форма:

<script type="text/javascript" src="sha512.js"></script> 
<script type="text/javascript" src="forms.js"></script> 


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

Я бы предложил использовать событие onsubmit формы вместо события onclick кнопки, чтобы вы получили каждую базу. Также не нужно было ничего пропускать, поскольку форма будет отвечать на ключевое слово 'this' внутри области действия этого обработчика событий. Кроме того, ваш код выглядит нормально, и может быть, проблема в коде, который вы нам не показываете ... там где-то должна быть разница. –

+0

Должен признаться, я не могу понять, чего это будет реально делать с точки зрения безопасности. Если я «человек в середине», я все же могу легко захватить информацию о пользователе и хешировать пароль. – RiggsFolly

+0

Пожалуйста, смотрите это: http://www.matasano.com/articles/javascript-cryptography/ – ntoskrnl

ответ

2

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

var p = document.createElement("input"); 
p.name = "p"; 
p.type = "hidden"; 
p.value = hex_sha512(password.value); 
// Add the new element to our form. 
form.appendChild(p); 
+0

Это сделало работу! благодаря ! – SagiLow

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