Как сохранить пароль в браузере при отправке html формы с $.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>

Как сохранить пароль в браузере, когда форма отправляется таким образом? там в любом случае? или я должен использовать куки?

3 ответа

Решение

Дело в том, что вы используете 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 следующим образом:

$.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 вы ожидаете, что скрипт вернется login ключевое слово, чтобы определить, что процесс входа был успешным

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

Теперь в будущем, если вы хотите использовать $_SESSION["username"] или же $_SESSION["p"] в любом будущем PHP-коде просто используйте его, как любую другую переменную.

Надеюсь это поможет

Используйте PHP для установки сеанса, он будет хранить пароль на сервере и может вызываться каждый раз, когда это потребуется, например, что-то вроде..

session_start();
$_SESSION['p']=$_POST['p'];
Другие вопросы по тегам