将Javascript变量传递到PHP
我正在开发一个登录系统,在将密码发送到服务器之前,在客户端对密码进行散列。我已经获取了密码并对其进行哈希运算,现在我只需要将其插入数据库和/或进行登录比较将Javascript变量传递到PHP,javascript,php,html,json,Javascript,Php,Html,Json,我正在开发一个登录系统,在将密码发送到服务器之前,在客户端对密码进行散列。我已经获取了密码并对其进行哈希运算,现在我只需要将其插入数据库和/或进行登录比较 <form action="javascript:;" onsubmit="return changeFormLogin()"> <p>Email</p> <input id="username" type="email" name="username" pla
<form action="javascript:;" onsubmit="return changeFormLogin()">
<p>Email</p>
<input id="username" type="email" name="username" placeholder="Enter Email" required>
<p>Password</p>
<input id="getPass" type="password" name="password" placeholder="••••••" required>
<input type="submit" name="login" value="Sign In">
<p id="demo"></p>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js" ></script>
<script>
function changeFormLogin() {
var pass = document.getElementById('getPass').value;
var username = document.getElementById('username').value;
var getSalt = 123566;
var hashpass = sha256(pass+pass);
console.log(hashpass);
var tmp = validateLogin(hashpass);
if(tmp ==1){
//Welcome the user back, and load new form
}
else{
//Tell them to try again, notify them.
}
document.getElementById("demo").innerHTML = hashpass; //Used for testing
return true;
}
电子邮件
密码
函数changeFormLogin(){
var pass=document.getElementById('getPass').value;
var username=document.getElementById('username')。值;
var getSalt=123566;
var hashpass=sha256(pass+pass);
log(hashpass);
var tmp=validateLogin(hashpass);
如果(tmp==1){
//欢迎用户返回,并加载新表单
}
否则{
//告诉他们再试一次,通知他们。
}
document.getElementById(“demo”).innerHTML=hashpass;//用于测试
返回true;
}
为什么不将整个加密逻辑转移到服务器端并插入数据库?这样,您只需将操作更改到服务器页面并发布即可
但是如果您想保持这种方式,那么可以在JavaScript函数中进行ajax调用
参考:
注意:虽然没有人可以反向散列这个东西,但仍然可以从开发人员工具中看到密码,并且可以应用蛮力算法来获取密码,因此建议在服务器上执行此操作
编辑:
为了简单起见,我在发送数据时总是使用FormData对象
var fd=new FormData();
fd.追加(“名称”,[VALUE]);
然后在XmlHttpRequest中发送该对象
另外,我并不真正做安全性,所以我不知道,但是散列应该在服务器端进行吗?您可以:
PHP默认只支持SHA256 as,但仍优于SHA256 as。在这里大声思考,我是否可以创建密码作为会话变量,然后在PHP代码中引用它?我尝试过,但没有成功。你应该使用
ajax
从未使用过ajax,你能举个例子吗?