【问题标题】:Passing PHP variable from an input field to a JavaScript function将 PHP 变量从输入字段传递到 JavaScript 函数
【发布时间】:2014-05-15 08:08:44
【问题描述】:

这应该是一个基本问题,但我正在学习。我正在登录系统,用户输入用户名和密码。如何通过 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>

【问题讨论】:

  • 获取输入字段中的值 -> 散列它 -> 替换输入中的结果 -> 调用 .submit()
  • 您不检查 javascript 中的哈希值,您需要在服务器端 (php) 进行检查。但是,如果您只想在发送到服务器进行检查之前对其进行哈希处理(这没有任何意义),您应该使用 ajax 提交您的表单。
  • 检查服务器,最好在数据库中。别忘了加点盐。
  • 我的 javascript 中有盐,我不想将它保存在我的数据库中,我只需要比较我的密码 = 密码哈希。如果你有例子,那将是好人!

标签: javascript php database hash passwords


【解决方案1】:

您应该将值作为字符串传递:

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

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

【讨论】:

    【解决方案2】:

    这是您的 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>
    

    【讨论】:

    • 我编辑我的代码我展示我的函数不关心我正在学习的安全性。
    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    相关资源
    最近更新 更多