Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Как очистить $_POST, $_GET? Реализация функции отсечения случайной множественной отправки формы.

#forms #post #php #get



В заголовке, просьба, ключевики не править: именно по ним ищут эту функцию 99% людей.
Часто отвечал, что для контроля отправки надо прописывать айдишник сабмита. И вот
что я имел ввиду(решение готовое. Можно брать и юзать):

Проверка:
function accidently_submit_check(){
    if(!isset($_POST['submit_id'])){
        //unknown submission attempt or no post data
        return false;
    }
    if(!isset($_SESSION['submit_id'][$_POST['submit_id']])){
        //unknown submission attempt
        return false;
    }
    if($_SESSION['submit_id'][$_POST['submit_id']]){
        //form was already submitted
        return false;
    }
    return true;
}

В функции обработки формы, если все нормально:
$_SESSION['submit_id'][$_POST['submit_id']] = true;

В функции генерации формы:
$form['SUBMIT_ID']['value'] = md5(microtime(true).$_SESSION['user']['id']);
$_SESSION['submit_id'][$form['SUBMIT_ID']['value']] = false;

printf('',$form['SUBMIT_ID']['value']);

Внимание, вопрос: что я упустил?
Все работает, но мало ли.    


Ответы

Ответ 1



Ну, содержание первой части заголовка вопроса не совсем соответствует самому вопросу. Очистка $_GET, $_POST производится через header('Location: {referer}'); А то что у вас - немного другое. Вот ещё вариант:


Комментариев нет:

Отправить комментарий