当使用 $.post 提交 html 表单时如何在浏览器上存储密码

How can store password on browser when html form submiting with $.post

我创建了一个登录表单。因为我不想在提交表单时刷新页面,所以我使用 $.post 方法将数据发送到数据库并接收它。

我有一个问题,如果浏览器想要保存密码,他们不会保存密码,因为表单不会以通常的方式提交,我认为 cookie 可能是个好方法,但我认为它不安全。

$.post 登录示例

function formsubmited(form, p, username) {
    $.post("process_login.php", {username: username.value, p: p.value},
            function(response) {
                if(response == 'login')
                {
                      // do something
                }
            }
});

HTML 表格示例

<form name="form_login">
  <input name="username"/>
  <input type="password" name="password"/>
  <input type="button" value="login" onclick="formsubmited(this.form, this.form.password, this.form.username);" />
</form>

这种方式提交表单时如何在浏览器中存储密码? 有什么办法吗?或者我应该使用 cookie?

问题的情况是您正在使用 input type="button" 并且在上述输入类型上没有触发浏览器保存密码。使用 input type="submit"

只需在这一行中做一处更改

<input type="button" value="login" onclick="formsubmited(this.form, this.form.password, this.form.username);" />

不要使用 button ,使用 submit

所以如下所示:

<input type="submit" value="login" onclick="return formsubmited(this.form, this.form.password, this.form.username);" />

并在函数末尾添加 return false ,这样表格就不会被提交。

使用PHP设置会话,这会将密码存储在服务器上,每次需要时都可以调用,例如像..

session_start();
$_SESSION['p']=$_POST['p'];

这是对我的评论的阐述,以便您理解。

您正在做的是向 php 脚本发出 post 请求,如下所示:

$.post("process_login.php", {username: username.value, p: p.value},

如果您想使用 javascript 来实现,我会亲自将其更改为:

function formsubmited() {
    var username = document.getelementsbyname("username").value;
    var p = document.getelementsbyname("password").value;
    $.post("process_login.php", {username: username, p: p},
        function(response) {
            if(response == 'login')
            {
                  // do something
            }
        }
}

然后编辑您的 html 使其看起来更干净一些:

<input type="button" value="login" onclick="formsubmited();" />

现在,在您的 PHP 脚本中,您需要将 POST 数据存储在内存中,以便在以后的阶段使用。执行此操作的最佳方法之一是使用 $_SESSION[] 数组。

因此您的 PHP 脚本将如下所示

<?php
   session_start();
   //On the server side, you can access data you have sent there in the $_POST[] array. 
   //The key you specify in the array has the exact name as the parameter you pass in 
   //javascript:
   $inputtedUsername = $_POST["username"];
   $inputtedPassword = $_POST["p"];
   //first do a check to determine if the username and password are correct
   //add your code here:
   //....

添加代码以确定用户名和密码是否正确后,您可以继续将用户名和密码存储在内存中:

    $_SESSION["username"] = $inputtedUsername;
    $_SESSION["p"] = $inputtedPassword;

现在在您的 javascript 代码中,您期望脚本使用 return login 关键字来确定登录过程是否成功

  //basically you'll need to do something like this
  if($yourloginboolean == true){
      echo "login";
  }else{
     echo "error";
  }
  ?>

以后,如果您希望在以后的任何 PHP 代码中使用 $_SESSION["username"]$_SESSION["p"],只需像使用任何其他变量一样使用它即可。

希望对您有所帮助