Как сохранить пароль в браузере при отправке 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'];