вещь перестанет путать людей. Тем не менее, спасибо за вашу помощь!

ить 25.07.2018: Как сказал в ответ Павнеш Кумар, похоже, это проблема браузера. Если я нажимаю кнопку несколько раз в Firefox, приведенный ниже скрипт отправит только одинPOST запрос, но если я делаю то же самое в Chrome, я получаюPOST запрос на каждый клик.

Тем не менее, я могу повторить проблему ввидео в 01:00 Это означает, что когда я устанавливаю Laravel сАутентификациязатем, если я дважды нажму кнопку отправки в форме входа, Firefox отправит 2 запроса.

Почему Firefox иногда отправляет несколькоPOST запрос а иногда только один, при многократном нажатии на кнопку?

у меня естьпользователь Таблица

id | name
 1 | John

где полеid первичный, целочисленный, автоинкрементный ключ Когда я отправляю фиктивную форму, в которой есть только одна кнопка, тогда будет вставлена ​​новая запись с именемJohn, Теперь вот что я заметил:

Если я отправляю форму один раз, возвращаюсь в браузере и отправляю ее снова, тогда я нахожу две новые строки в БД.

Если я отправлю форму, дважды щелкнув (или двадцать раз)Add кнопку, то есть только одна новая строка в БД.

Почему это? Я ожидаю, что если я нажму кнопку отправки несколько раз, то форма будет отправлять несколько запросов - и вставлять несколько строк.

Вот моя форма:

<form action="/test.php" method="POST">
  <input type="submit" value="Add">
</form>

который подчиняетсяtest.php:

<?php
$servername = "localhost";
$username = "adam";
$password = "password";
$dbname = "test-db";

$conn = new mysqli($servername, $username, $password, $dbname);       
$sql = "INSERT INTO user (name) VALUES ('John')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
}     
$conn->close();

sleep(4);

Из-заsleep часть, я могу нажать наAdd кнопка несколько раз подряд. Тем не менее, независимо от того, как часто я нажимаюAdd Кнопка при загрузке, есть только одна новая строка в БД.

В моем файле access.log я также нахожу только одинGET а такжеPOST запрос после нажатия на кнопку двадцать раз:

2001: ****: ****: 4400: ****: ****: ****: **** - - [25 июля / 2018 год: 11:30: 03 +0200] "GET /test/form.php HTTP / 1.1" 200 301 "-" "Mozilla / 5.0 (X11; Ubuntu; Linux x86_64; rv: 57.0) Gecko / 20100101 Firefox / 57.0" "*******. Net "

2001: ****: ****: 4400: ****: ****: ***: **** - - [25 / Jul / 2018: 11: 30: 34 +0200] " POST /test/test.php HTTP / 1.1 "200 31" http: //********.net/test/form.php "" Mozilla / 5.0 (X11; Ubuntu; Linux x86_64; rv: 57.0 ) Gecko / 20100101 Firefox / 57.0 "" ********. Net "

Примечание:

Я читал о методах предотвращения множественных представлений либо вбэкенд или жевнешний интерфейс, Таким образом, я думаю, что должна быть возможность отправить форму несколько раз, нажав кнопку несколько раз.

Я также прочитал в статье викиPost / Redirect / Get что этот шаблон не может предотвратить, если пользователь вводит форму несколько раз слишком быстро:

Если веб-пользователь обновляется до завершения первоначальной отправки из-за задержки на сервере, что приводит к дублированию POST-запроса у определенных пользовательских агентов.

Также в этомвидео в 1:00 кто-то дважды щелкает по кнопке и получает ошибку, потому что он отправил дважды.

Ответы на вопрос(4)

Ваш ответ на вопрос