поле для ввода php
Работа с формами в PHP
Формы
Формы — это часть языка HTML. Формы нужны для передачи данных от клиента на сервер. Чаще всего формы используются для регистрации пользователей, заполнения анкет, оформления заказа в интернет магазине, и так далее.
Через формы можно отправлять как простую текстовую информацию, так и файлы.
Большую часть времени программирования на PHP вы будете так или иначе работать с формами и данными из них.
HTML описывает то, из каких элементов состоит форма, и как она выглядит. Но без принимающей стороны, то есть сервера, который принимает эти данные и обрабатывает их нужным образом, создавать формы нет никакого смысла.
PHP содержит множество средств для работы с формами. Это позволяет очень просто решать типичные задачи, которые часто возникают в веб-программировании:
Практически любой современный сайт содержит как минимум несколько разных HTML-форм.
Отправка формы
Рассмотрим один типичный пример — форма обратной связи. Для связи пользователей с авторами сайта, как правило, используются формы обратной связи, где человек указывает имя, почту для обратной связи и текст своего сообщения.
Такая форма в HTML может выглядеть следующим образом:
Это очень простая форма, состоящая из трёх полей и одной кнопки отправки.
Почти весь приведённый код описывает внешний вид и содержание формы, но следует обратить внимание на два атрибута тега
Тут есть два важных отличия от первого примера:
PHP автоматически сохраняет все загруженные файлы во временную папку на сервере. Но хранить там файлы нельзя, потому что эта директория периодически очищается, и ссылку на такой файл нельзя дать на сайте. Решение здесь только одно — переместить загруженный файл в другую папку. Перемещение файла всегда выполняют сразу после загрузки.
Перемещение загруженного файла
Код для перемещения файла в новую папку:
Функция move_uploaded_file() выполняет два действия:
Валидация формы
Валидация формы — это проверка содержимого её полей. Задача такой проверки — убедиться, что необходимые поля заполнены, а значения в них соответствуют ожидаемому формату.
Так, например, при регистрации пользователя на сайте, он должен заполнить поля с адресом электронной почты и придумать себе пароль. Оба поля обязательны к заполнению, но значение из поля email также должно быть корректным email-адресом.
Помимо текстовых значений формы, можно проверять формат и размер загружаемых файлов.
Общий подход к валидации
При выполнения валидации любой формы порядок действий будет всегда одним:
PHP и формы
Ни для кого не является секретом, что наиболее распространенным способом взаимодействия html-страницы с сайтом является форма. Форма (то есть, html-элемент образуемый тегом form) используется и бесплатными почтовыми службами, электронными магазинами и многими другими типами сайтов.
Обработка простых форм посредством PHP не представляет никакого труда. Однако время от времени возникает потребность обработать форму, содержащую несколько однотипных полей, притом, что их количество может изменяться в широком диапазоне и их количество заранее не известно. В PHP предусмотрено для таких случаев обработка однотипных полей как массива значений.
Рассмотрим подробнее варианты для разных типов полей.
Текстовые поля
Переключатели
Однако обработка такой формы отличается от обработки, описанной для текстовых полей. В данном случае необходимо определить, включил или нет посетитель сайта тот или иной переключатель. Если включил — то соответствующий элемент массива существует, если нет — то отсутствует. В следующем листинге приведен пример PHP сценария, который распечатывает включенные переключатели:
Радио-кнопки
Перед тем как описывать обработку радио-кнопок необходимо вспомнить, как они работают. Суть радио-кнопок (элементы созданные тегами input со значением параметра type равным radio ) заключается в том что, выбирая одну кнопку, пользователь автоматически снимает выделение с другой кнопки из этого же набора. Кнопки объединяются в набор очень просто: у всех кнопок в наборе одно и тоже имя.
А вот значения (то есть параметры value ) у кнопок в наборе — разные. И на сайт будет отправлено значение выбранной кнопки с именем набора. Так же как и в случае с текстовыми полями и переключателями имена наборов радио-кнопок должны оформляться как имена элементов массива в PHP. Пример такой формы приведен в следующем листинге:
Обработка радио-кнопок объединяет идеи, использование при обработке, как текстовых полей, так и переключателей. Если автор html-страницы не установил значение по умолчанию, а пользователь не выбрал определенную кнопку в наборе радио-кнопок, то данный элемент будет отсутствовать в массиве (как для переключателей).
Если же кнопка выбрана, то соответствующий элемент массива будет содержать ее значение (как для текстовых полей). Ниже приведен листинг примера, обрабатывающего форму с несколькими наборами радио-кнопок.
Таким образом, ничего сложного в обработке сложных форм нет.
Работа с формами
Пример #1 Простейшая форма HTML
Пример #2 Выводим данные формы
Пример вывода данной программы:
В PHP можно также работать и с XForms, хотя вы найдёте работу с обычными HTML-формами довольно комфортной уже через некоторое время. Несмотря на то, что работа с XForms не для новичков, они могут показаться вам интересными. В разделе возможностей PHP у нас также есть короткое введение в обработку данных из XForms.
User Contributed Notes 3 notes
You should use the GET method when your form is, well, getting something off the server and not actually changing anything. For example, the form for a search engine should use GET, since searching a Web site should not be changing anything that the client might care about, and bookmarking or caching the results of a search-engine query is just as useful as bookmarking or caching a static HTML page.
POST is not more secure than GET.
Security is only a consideration here due to the fact that a GET is easier to share than a POST. Example: you don’t want a password to be sent by GET, because the user might share the resulting URL and inadvertently expose their password.
However, a GET and a POST are equally easy to intercept by a well-placed malicious person if you don’t deploy TLS/SSL to protect the network connection itself.
All Forms sent over HTTP (usually port 80) are insecure, and today (2017), there aren’t many good reasons for a public website to not be using HTTPS (which is basically HTTP + Transport Layer Security).
As a bonus, if you use TLS you minimise the risk of your users getting code (ADs) injected into your traffic that wasn’t put there by you.
Поле для ввода php
| |
| |
Ввод информации в основном реализуется с применением форм HTML. Как правило, пользователь заполняет в форме одно или несколько полей (например, имя и адрес электронной почты), нажимает кнопку отправки данных, после чего получает ответное сообщение. При вводе данных в форму используются различные управляющие элементы. В одних элементах пользователь вводит информацию с клавиатуры, в других он выбирает нужный вариант, щёлкая кнопкой мыши. В формах могут присутствовать скрытые поля, которые поддерживаются самой формой; содержимое скрытых полей не должно изменяться пользователем. Одна страница может содержать несколько форм, поэтому необходимы средства, которые позволили бы отличить одну форму от другой. Более того,вы должны как-то сообщить форме, куда следует перейти, когда пользователь выполняет действие с формой (как правило, нажимает кнопку отправки данных). Обе задачи решаются заключением форм в следующие теги HTML. Как видно из приведённого фрагмента, в тегах форм указывается два важных элемента: действие и метод. Действие указывает, какой сценарий должен обработать форму, а метод определяет способ передачи данных по этому сценарию. Существует два метода: Текстовое полеОпределение текстового поля включает пять атрибутов: Особой разновидностью текстовых полей является поле для ввода паролей. Оно работает точно также, как обычное текстовое поле, однако вводимые символы заменяются звёздочками. Чтобы создать в форме поле для ввода паролей, достаточно указать type=»password» вместо type=»text». Введите следующий код HTML: Сохраните файл под именем vvod_s_klaviatury.html, откройте его в браузере. Если Вы всё сделали правильно, Вы увидите в окне браузера страничку, приведённую на рисунке 2.1. Протестируйте текстовые поля при вводе разных имён и паролей. Текстовая область (text area) используется для ввода небольших объемов текста, не ограничивающихся простым именем или адресом электронной почты, а например для ввода текстового сообщения. Синтаксис определения текстовой области следующий: Определение текстового поля включает три основных атрибута: Введите следующий текст HTML: Сохраните файл под именем text_oblast.html, откройте его в браузере. Если Вы всё сделали правильно, Вы увидите в окне браузера страничку, приведённую на рисунке 2.2, в которой к полям для ввода имени и пароля добавилось поле ввода сообщений. В других элементах форм пользователь выбирает один из заранее определённых вариантов при помощи мыши. Ограничимся описанием флажков, переключателей и раскрывающихся списков. Синтаксис определения флажка: Определение флажка включает три атрибута: Введите следующий текст HTML: Сохраните файл под именем flagi.html, откройте его в браузере. Если Вы всё сделали правильно, Вы увидите в окне браузера страничку, приведённую на рисунке 2.3, в которой организован список из нескольких пунктов. Пользователь может отметить один, несколько, или даже все пункты флажками. В данном случае для каждого пункта установлены разные значения атрибута Name=, но они могут быть и одинаковыми. Синтаксис определения переключателя: Как видите, синтаксис определения переключателя почти не отличается от синтаксиса определения флажка. Определение переключателя поля включает три атрибута: Введите следующий текст HTML: Сохраните файл под именем switsh.html, откройте его в браузере. Вы увидите страничку, приведённую на рисунке 2.4, в которой организованы два переключателя. Каждый из переключателей создается с помощью тега c атрибутом type=»radio», однако в одну группу объединяются те переключатели, теги которых имеют одинаковые значения атрибута name=. Синтаксис определения раскрывающегося списка: Определение раскрывающегося списка включает два атрибута: Введите следующий текст HTML: Сохраните файл под именем spiski.html, откройте его в браузере. Вы увидите страничку, приведённую на рисунке 2.5, в которой организованы два раскрывающихся списка. Синтаксис определения стрытого поля gрактически индентичен синтаксису текстовых полей, отличается только атрибут поля. Поскольку текстовые поля не отображаются в браузере, привести пример на страниwах методического пособия невозможно. Синтаксис определения скрытого поля: Определение скрытого поля включает три атрибута: Синтаксис определения кнопки отправки формы: Определение кнопки включает два атрибута: Кнопка сброса отменяет все изменения, внесённые в элемент формы. Синтаксис определения кнопки сброса: Определение кнопки сброса включает два атрибута: Кнопка сброса выглядит точно также, как и кнопка отправки данных, если не считать того, что на ней обычно выводится слово Reset. Формы HTML должны содержать следующие элементы: В HTML-коде первая строка для формы будет выглядеть примерно так: Когда Вы щёлкните мышью на кнопке для пересылки HTML-формы, переменные будут посланы вашей программе, указанной в параметре action=, с помощью метода, указанного в параметре method=. Метод может быть один из двух: или «post» или «get». Переменные, передаваемые из формы в сценарий РНР, помещаются в глобальный ассоциативный массив $http_post_vars или $http_get_vars в зависимости от метода, указанного в форме. Они автоматически становятся доступными для Вашей программы. В следующем параграфе этого методического пособия Вы создадите HTML-форму и связанный с ней сценарий РHP, выполняющий вычисления в соответствии с полученными из формы данными. В этом параграфе Вы создадите форму для сценария калькулятора. Эта форма будет содержать два поля ввода и переключатели для выбора типа расчёта. Введите следующий текст HTML: Чтобы начать создание формы с методом post и действием, выполняющимся в сценарии calculate.php, введите заголовок формы: Чтобы создать поля ввода с надписью для двух переменных, введите: Чтобы создать кнопку «Вычислить», введите текст Чтобы закрыть форму, и завершить HTML-код введите текст: Сохраните созданный файл под именем calculate_form.html в папке для документов Вашего Web-сервера. Запустите браузер, в строку Адрес: введите: http://localhost/calculate_form.html и нажмите Enter. В браузер отобразится страница calculate_form.html (pис. 2.6) В окне браузера находится форма, содержащая поля ввода Значение 1 и Значение 2 и кнопку Вычислить. Остановитесь на минутку, чтобы посмотреть на HTML-форму и понять, какие имена будут иметь переменные, значения которых вводятся через форму. Выберите в браузере команду меню Вид/В виде HTML, чтобы переключить режим отображения вашего браузера для просмотра исходного HTML-кода. На экране появится рабочее окно текстового редактора Блокнот с исходным текстом отображенной браузером страницы (рис. 2.7). Теперь добавим к уже созданной форме переключатели, состояние которых будет определять тип операции над двумя значениями: сложения, вычитания, умножения и деления. и нажмите клавишу Enter. Если Вы все сделали правильно, то в рабочем окне браузера появится страница calculate_form.html с группой переключателей Действиe: (рис. 2.8). Теперь созданная нами форма содержит два поля ввода Значение 1 и Значение 2, переключатель Действие и кнопку Вычислить. Кроме того, к уже существующим двум переменным ($vall и $val2) добавилась еще одна с именем $calc, которая также будет посылаться в ваш сценарий. Теперь вся предварительная подготовка выполнена, и в следующем параграфе Вы создадите сценарий калькулятора. Это выражение как бы говорит: «Если любая из переменных не имеет значения, то нужно выполнить блок программы, распо-ложенный сразу после оператора if«. //здесь будет находиться блок программы, на две следующих строки: header («location: http://localhost/calculate_form.html»); Удостоверьтесь, что перед началом PHP-блока нет пустых строк, пробелов или другого текста. Вы не можете использовать функцию header (), если что-то уже было отправлено браузеру. Мы создали все, что нужно для калькулятора: внешний вид (форму) и внутреннее содержание (сценарий), теперь можно приступить к его проверке. Запустите ваш Web-браузер, в поле Адрес: введите: и нажмите клавишу Enter, в рабочем окне браузера появится страница с формой (рис. 2.10). Нажмите кнопку Вычислить, не вводя ничего в поля ввода формы. Web-браузер перезагрузит страницу, потому что вы не ввели значения в три требуемых поля. Теперь, после проверки работы сценария на присутствие необходимых данных, попробуйте выполнить несколько вычислений для проверки правильности работы программы. В рабочем окне браузера появится страница с результатом вычитания двух чисел (рис. 2.12). Рис. 2.12. Результат проверки действия вычитания двух чисел. Результат умножениядвух чисел показан на рис. 2.13. Рис. 2.13. Результат проверки действия умножения двух чисел. Вы проверили все возможные вычисления с различными значениями переменных. Как видите, калькулятор вполне работо-способен, он может даже выполнять операции с отрицательными и дробными числами. Убедитесь в этом сами, только помните, что в дробных числах целая часть должна отделяться от дробной части точкой, а не запятой. Переменные окружения HTTPКогда Web-браузер выполняет запрос к Web-серверу, он вместе с запросом посылает еще дополнительный список перемен-ных. Эти переменные называются переменными окружения и могут использоваться для отображения динамического содержимого или авторизации пользователей. Функция phpinfo () выводит большое количество информации о программном обеспечении Web-сервера, версии РНР, который вы запустили, и об основных переменных окружения HTTP. Чтобы посмотреть эту информацию, выполните следующие действия: и нажмите клавишу Enter. В рабочем окне браузера появится очень длинная страница, полная информации (рис. 2.15). Информация, выводимая функцией phpinfо (), будет различной не только на разных компьютерах, но и при использовании разных операционных систем. На Рис. 2.15 показана информация, полученная при использовании операционной системы Windows. Чтобы посмотреть переменные окружения, прокрутите страницу вниз с помощью вертикальной полосы прокрутки и найдите раздел Apache Environment (Окружение) (pис. 2.16). В следующем параграфе вы узнаете, как использовать две переменные окружения REMOTE_ADDR и HTTP_USER_AGENT. Получение и использование значения переменной REMOTE_ADDRПеременная окружения REMOTE_ADDR содержит IP-адрес компьютера, выполняющего запрос. Чтобы получить значение переменной окружения REMOTE_ADDR, выполните следующие действия: и нажмите клавишу Enter. В рабочем окне браузера появится информация о IP-адресе вашего компьютера (Рис. 2.17). Ваш IP-адрес в зависимости от настроек вашего Web-сервера и операционной системы компьютера может отличаться от показанного на рис. 2.17. Получение и использование значения переменной HTTP_USER_AGENTMozilla/4.0 (compatible; MSIE 5.0; Windows 98) He забудьте еще о текстовых браузерах. В операционной системе Linux значение переменной HTTP_USER_AGENT может выглядеть так: Чтобы найти и вывести на экран переменную HTTP_USER_AGENT, выполните следующие действия: и нажмите клавишу Enter. В рабочем окне браузера появится информация о типе браузера и операционной системе вашего компьютера (рис. 2.18). В следующей части вы узнаете много основных задач Web-разработчиков, включая отображение динамического содержимого, отправку электронной почты (E-mail) и работу с файловой системой вашего компьютера.
|