将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中发送该对象

另外,我并不真正做安全性,所以我不知道,但是散列应该在服务器端进行吗?

您可以:

  • 使用请求以表单形式发送信息(将导致页面刷新)
  • 使用/(不刷新页面)
  • 使用一个
  • 由于您正在尝试创建登录系统,因此我建议使用POST请求(因此它不会在url栏中显示提交的信息)和PHP会话来检查用户是否已登录()

    不仅如此,如果你想让你的用户登录信息保密,你不应该使用javascript进行身份验证,搜索正确的方法,你会在stackoverflow和


    PHP默认只支持SHA256 as,但仍优于SHA256 as。

    在这里大声思考,我是否可以创建密码作为会话变量,然后在PHP代码中引用它?我尝试过,但没有成功。你应该使用
    ajax
    从未使用过ajax,你能举个例子吗?