На главную страницу
Форум txt.version   




Статья :: Защита от двойного сабмита

Давайте реализуем тот же самый алгоритм, но с помощью сессий.

Постановка задачи:

  • есть переменная $flag в сессиях пользователя
  • если она равна нулю, то ее надо установить в единицу и произвести какое-нибудь действие по этому поводу (если $flag был равен нулю). В качестве действия будем создавать файл со случайным именем такого типа: [случайное число].php-test.

    Событием для выполнения проверки и создание файла будет опять кнопочка SUBMIT, который злой пользователь опять нажмет 2 раза. После выполнения программы вы обнаружите, что будет создан только один файл. Таким образом, в программах, которые используют сессии, больших проблем из-за параллельного выпонения скриптов, нет.

    Приведенная ниже программа идентифицирует всех людей по одной и той же сессии, со случайным номером 0123456789abcdef0123456789abcdef.


    <? /* перед началом программы создайте каталог tmp (см. конец скрипта) создание файла со случайным именем в этом каталоге символизирует некое действие */ session_id("0123456789abcdef0123456789abcdef"); session_start(); session_register("flag"); if (!isset($flag)) $flag=0; switch ($c) { case "": echo "FLAG=$flag <a href=$PHP_SELF?c=clear>сбросить в нуль</a> <form action=$PHP_SELF> <input type=hidden name=c value='submit'> <input type=submit> </form>"; break; case "clear": $flag=0; header("Location: $PHP_SELF"); break; case "submit": if ($flag==0) { sleep(5); $flag=1; srand ((double) microtime() * 1000000); $filename= "tmp/".rand(0,9999).".php-test"; fclose(fopen($filename,"w+")); header("Location: $PHP_SELF"); } else echo "Не выполнено, FLAG не равен нулю."; break; } ?>


    Защита от двойного сабмита

    страницы в данном разделе 
     get yahoo proxy  Имитация каталогов
     Имитация файлов и директорий. Часть 2  Building Dynamic Requests
     Виртуальный магазин?  Параллельное выполнение скриптов
     Это программа отсылает сообщение на Асю.  Передача из скрипта методом POST
     Пример работы с сессиями.  СЕССИИ - обучение и /правильное/ использование
     Как вытащить слова из текста?  Защита от двойного сабмита
     Как вырезать со страницы все ссылки?   


  • Разделы
    Околокомпьютерная литература (375)
    Программирование (102)
    Программы (75)
    ОС и Сети (49)
    Интернет (29)
    Аппаратное обеспечение (16)
    Базы данных (6)
    Flutter
    React Native
    Xamarin

    Содержание сайта (выборка)
    Apache
    Протоколы TCP/IP (принципы, протоколы и архитектура)

    PHP, PELR, JSP
    PHP
    JavaServer Pages (JSP)

    Базы данных
    Основы mysql
    СУБД INFORMIX
    СУБД POSTGRES
    Основы проектирования реляционных баз данных

    HTML, javascript
    Спецификация HTML 4.01
    Каскадные Таблицы Стилей, Уровень 2
    Клиентский JavaScript. Справочник.
    JavaScript руководство пользователя
    Серверный JavaScript 1.4. Руководство по Использованию.

    Паскаль, C, C++, C#
    GCC (примеры)
    FAQ Валентинa Озеровa DELPHI
    C





     
    ©  programming-lang.com  справочник программиста
    ©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
    ©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
    React Native
    demo forum