2014-04-03 80 views
0

这应该是一个基本问题,但我正在学习。我正在登录系统,用户输入用户名和密码。如何通过javascript将密码发送到我的函数散列中。因为我需要将它与我的数据库中的数据进行比较。如果密码哈希=数据库密码,那么它是确定的。将PHP变量从输入字段传递到JavaScript函数

<link rel="stylesheet" href="style.css" /> 

<!-- ... --> 

<div align="center"> 
    <form action="connection.php" method="post">  
      <p>Fill your crendentials</p> 
      <label for="usrUserName">Your login</label> 
      <input id="usrUserName" name="usrUserName" /><br />  
      <tr><td>Password</td><td><input type="password" name="usrPassword" maxlength="25" id="usrPassword"/>  
      <form action="insert.php" method="post" onsumbit="return create_hash()"> 
    </form> 
</div> 

这就是我现在的情况。我可以给你看哈希函数,但人们说这不是一个好主意。

编辑我的完整代码

 <script type="text/javascript"> 
define("PBKDF2_HASH_ALGORITHM", "sha1"); 
define("PBKDF2_ITERATIONS", 1000); 
define("PBKDF2_SALT_BYTES", 24); 
define("PBKDF2_HASH_BYTES", 24); 

define("HASH_SECTIONS", 4); 
define("HASH_ALGORITHM_INDEX", 0); 
define("HASH_ITERATION_INDEX", 1); 
define("HASH_SALT_INDEX", 2); 
define("HASH_PBKDF2_INDEX", 3); 

function create_hash($usrPassword) 
{ 


var usrPassword =document.getElementById("usrPassword").value; 

    // format: algorithm:iterations:salt:hash 
    $salt = base64_encode(mcrypt_create_iv(PBKDF2_SALT_BYTES, MCRYPT_DEV_URANDOM)); 
    return PBKDF2_HASH_ALGORITHM . ":" . PBKDF2_ITERATIONS . ":" . $salt . ":" . 
     base64_encode(pbkdf2(
      PBKDF2_HASH_ALGORITHM, 
      $usrPassword, 
      base64_decode($salt), 
      PBKDF2_ITERATIONS, 
      PBKDF2_HASH_BYTES, 
      true 

     )); 
     alert("usrPassword"); 
} 

function validate_password($usrPassword, $good_hash) 
{ 
    $params = explode(":", $good_hash); 
    if(count($params) < HASH_SECTIONS) 
     return false; 
    $pbkdf2 = base64_decode($params[HASH_PBKDF2_INDEX]); 
    return slow_equals(
     $pbkdf2, 
     pbkdf2(
      $params[HASH_ALGORITHM_INDEX], 
      $usrPassword, 
      base64_decode($params[HASH_SALT_INDEX]), 
      (int)$params[HASH_ITERATION_INDEX], 
      strlen($pbkdf2), 
      true 
     ) 
    ); 
} 
    </script> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 

    <link rel="stylesheet" href="style.css" /> 



<div align = "center"> 
<form action = 'connection.php' method="post" > 

<p> Entrer vos informations </p> 

<label for="usrUserName">Votre code d'usager </label> <input 
id="usrUserName" name="usrUserName" /><br /> 

<label for="usrPassword">Votre mot de passe </label> <input 
id="usrPassword" name="usrPassword" type="usrPassword" /><br /> 


<input type="submit" value="submit" onsubmit=="return create_hash()"> 
</form> 
+0

获得输入字段中的值 - >散它 - >更换输入结果 - >调用.submit() – KarelG

+0

你不要在javascript中检查哈希,你需要在服务器端(php)做到这一点。但是,如果你只是想在发送到服务器进行检查之前对其进行散列(这没有任何意义),那么你应该使用ajax来提交表单。 – Dexa

+0

检查服务器上最好的数据库。别忘了加些盐。 – blue

回答

0

你应该通过价值为字符串:

<input type="button" name="myValue" value="Remove" onclick="del('<?echo $myArray[0]?>');"/> 

你也可以使用json_encode()的价值为价值JavaScript的转换:

0

这是你的HTML代码: -

<form action = 'connection.php' method="post" > 

<p> Entrer vos informations </p> 

<label for="usrUserName">Votre code d'usager </label> 
<input id="usrUserName" name="usrUserName" /><br /> 

    <tr><td>Password</td><td> 
<input type="password" name="usrPassword" maxlength="25" id="usrPassword"/> 
</td> 

<form action="insert.php" method="post" onsumbit="return create_hash()"> 
</form> 

,当你调用功能

<script type="text/javascript"> 

function create_hash(){ 

var pass =document.getElementById("usrPassword").value; 

alert(pass);//here is your password 
return false//for stop function 
} 

</script> 
+0

我编辑我的代码我显示我的功能不关心我正在学习的安全性。 – TheBaconManWithouBacon

相关问题