【问题标题】:Pass JavaScript var to PHP inside JavaScript function在 JavaScript 函数中将 JavaScript var 传递给 PHP
【发布时间】:2019-07-30 01:34:22
【问题描述】:

我知道这个问题可能会重复。但我仍然找不到解决方案。假设我有一个像这样的表单

function validateForm(){
  var cryptedoriginalPassword = "<? echo $cryptedOriPassword; ?>";
  var password = document.forms["userForm"]["password"].value;
  
  if(password != ""){	
    if(password == crytedoriginalPassword){
      return true;
    }else{
     alert("Password do not match!");
     return false;     
    }
  }else{
    alert("Please type your password!");	
    return false;
  }
}
<form name="userForm" action="#" onsubmit="return validateForm()" method="POST">
<p>Old Password</p>
<input id="password" type="password" name="password" style="width: 200px;" />
<button>Submit</button>
</form>

我的问题,我设法在 validateForm() 中获取密码值,但是我需要传递给 php 变量,所以我能够检查密码是否与原始密码匹配。我怎样才能做到这一点?

原始密码已加密。这就是为什么我需要获取密码值以便我可以在 php.ini 中对其进行加密的原因。当然,这发生在提交表单之前!

【问题讨论】:

  • 为什么要在前端而不是后端进行检查???您是否意识到这根本不安全!?
  • 因为我所有的错误信息都在前端的这个表单中。我确实喜欢这样,所以“用户”不需要点击提交按钮然后等待错误出现。对我来说很容易像这样立即验证。这就是我加密密码的原因。我想如果没有解决方案我需要在后端检查。
  • 您正在使密码可访问,这是一种安全性....您必须在纯 JavaScript 中进行加密以验证它是否匹配....无法比较两者... . 进行 Ajax 调用或提交表单。你只是自找麻烦
  • 你从哪里得到加密密码的?我的意思是加密算法是前端或后端的地方。js密码是纯文本和cryptedpassword不一样..js只是验证字符串不是啊加密匹配。suerly这不是更好的方法。使用ajax调用或表单提交发布请求
  • 我在PHP中有一个可以加密密码的函数,当屏幕加载时我已经获取了“用户”信息和密码,然后运行加密密码函数并将其存储到变量中( cryptedOriPassword)。

标签: javascript php html passwords


【解决方案1】:

我认为更好的解决方案是将 PHP 变量存储在 DOM 元素中。

在你的 HTML 文件中:

<body>
  <div id="cryptedOriPassword"><?=$cryptedOriPassword?></div>
</body>

并且在你的 javascript 文件中,你可以通过这种方式访问​​这个变量:

function validateForm(){
    var cryptedOriPassword = document.getElementById('cryptedOriPassword');
    var password = document.forms["userForm"]["password"].value;
    if(cryptedOriPassword == password) {
        blablabla...
    }
}

但是从前端添加密码判断逻辑可能是不安全的,认为这不会导致任何安全问题

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2012-03-10
    • 2016-08-21
    相关资源
    最近更新 更多