Предотвратите выполнение сценария php дважды - PullRequest
0 голосов
/ 17 мая 2018

возможно, этот вопрос был задан.Но не могу найти никакого решения, поэтому я отправляю это сам.

Мне нужно предотвратить многократное выполнение сценария php (codeigniter) из-за зависания браузера или скорости сети.Из-за этого он делает несколько записей для отдельных данных с разницей времени и даты в 1-2 минуты.

Застрял в этом.Нужно решение.Мы будем благодарны за любую помощь!

1 Ответ

0 голосов
/ 17 мая 2018

Простое решение - используйте ключи формы. Каждый раз, когда вы визуализируете форму, создайте случайную уникальную строку и добавьте ее в форму как скрытое поле. В дополнение к этому, храните этот ключ внутри таблицы с отметкой времени. Вы также можете связать эту запись с текущим пользователем, если хотите.

После того, как пользователь опубликует форму, вам просто нужно проверить, существует ли ключ внутри таблицы, и удалить ее. Если ключ не существует - показать какое-то сообщение об ошибке.

Преимуществом этого подхода также является то, что вы предотвращаете атаки csrf.

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

Существует также встроенный csrf, использующий куки. Вам просто нужно включить его ($config['csrf_protection'] = TRUE;) и использовать form_open для создания формы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...