Как сделать php форму

Работа с формами в PHP

Формы

Формы — это часть языка HTML. Формы нужны для передачи данных от клиента на сервер. Чаще всего формы используются для регистрации пользователей, заполнения анкет, оформления заказа в интернет магазине, и так далее.
Через формы можно отправлять как простую текстовую информацию, так и файлы.
Большую часть времени программирования на PHP вы будете так или иначе работать с формами и данными из них.

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

PHP содержит множество средств для работы с формами. Это позволяет очень просто решать типичные задачи, которые часто возникают в веб-программировании:

Практически любой современный сайт содержит как минимум несколько разных HTML-форм.

Отправка формы

Рассмотрим один типичный пример — форма обратной связи. Для связи пользователей с авторами сайта, как правило, используются формы обратной связи, где человек указывает имя, почту для обратной связи и текст своего сообщения.
Такая форма в HTML может выглядеть следующим образом:

Это очень простая форма, состоящая из трёх полей и одной кнопки отправки.

Почти весь приведённый код описывает внешний вид и содержание формы, но следует обратить внимание на два атрибута тега

Тут есть два важных отличия от первого примера:

PHP автоматически сохраняет все загруженные файлы во временную папку на сервере. Но хранить там файлы нельзя, потому что эта директория периодически очищается, и ссылку на такой файл нельзя дать на сайте. Решение здесь только одно — переместить загруженный файл в другую папку. Перемещение файла всегда выполняют сразу после загрузки.

Перемещение загруженного файла

Код для перемещения файла в новую папку:

Функция move_uploaded_file() выполняет два действия:

Валидация формы

Валидация формы — это проверка содержимого её полей. Задача такой проверки — убедиться, что необходимые поля заполнены, а значения в них соответствуют ожидаемому формату.
Так, например, при регистрации пользователя на сайте, он должен заполнить поля с адресом электронной почты и придумать себе пароль. Оба поля обязательны к заполнению, но значение из поля email также должно быть корректным email-адресом.
Помимо текстовых значений формы, можно проверять формат и размер загружаемых файлов.

Общий подход к валидации

При выполнения валидации любой формы порядок действий будет всегда одним:

Источник

Делаем форму обратной связи на сайте

Говорят, что если программист может написать форму обратной связи, он может написать всё.

Форма обратной связи — древнейшее программистское искусство. Тут есть всё: форма с проверкой, приём запроса, обработка, безопасность, хранение и ответ. Это как Hello World, только для самых крутых.

В сегодняшней версии программы — только самые основы этого упражнения. В следующих частях мы прокачаем систему.

Смысл программы в том, что посетитель страницы заполняет нужные поля, пишет текст сообщения и нажимает кнопку «Отправить». На почту владельцу сайта приходит письмо с текстом сообщения и данными о том, кто это сообщение отправил.

Чтобы сделать у себя на сайте такое, нам понадобится:

Сервер для PHP

Для того, чтобы PHP-код исполнялся, нужен какой-то компьютер-исполнитель. Мы называем его сервером — то есть «раздающим». На сервере должна работать программа для PHP, которое отвечает за правильную обработку таких файлов.

Когда мы делали проект «Публикуем свою страницу в интернете», то уже использовали сервер (эту услугу нам предоставила хостинговая компания SpaceWeb). Этот же сервер мы можем использовать для нашей сегодняшней задачи, потому что он тоже умеет работать с PHP-файлами:

Готовим страницу с формой

Возьмём стандартный шаблон страницы и наполним его стилями и кодом для формы.

Пропишем CSS-стили, чтобы наша страница выглядела опрятно. Забежим немного вперёд и используем в стилях разделы input и textarea :

Чтобы сделать форму на странице, мы будем использовать такие теги:

— для ввода имени, почты для связи и темы письма. Они занимают одну строку, нам этого достаточно.

— здесь будут писать само сообщение, поэтому нужно будет сделать это поле побольше и пошире.

Ещё мы воспользуемся тегом

Пишем обработчик формы на PHP

Когда мы заполним и отправим форму на нашей странице, произойдёт следующее:

Логика работы PHP-программы будет такая:

Отправляем PHP-скрипт на сервер

Последнее, что осталось сделать — загрузить файл скрипта на сервер. Для этого сохраним его как post.php и загрузим по адресу mihailmaximov.ru/projects/mail/post.php. Если у вас ещё нет своего сервера, можете использовать этот скрипт для тестирования формы обратной связи.

Как загружать файлы, мы рассказывали в статье про публикацию сайта в Сети, поэтому просто сделаем всё по той инструкции:

Как сделать php форму. Смотреть фото Как сделать php форму. Смотреть картинку Как сделать php форму. Картинка про Как сделать php форму. Фото Как сделать php форму

Теперь, когда мы обновим HTML-страницу, заполним все поля и нажмём «Отправить», на указанную почту придёт письмо с нашим сообщением. Это значит, что форма работает, а мы с вами сделали очередной полезный проект!

Что дальше

Дальше как обычно — улучшаем.

Источник

Создание контактной формы в PHP

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

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

Но если вы хотите узнать, как создается контактная форма, тогда читайте дальше! Это может быть проще, чем вы думаете.

Разметка нашей HTML контактной формы

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

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

Давайте напишем HTML-код, чтобы добавить все поля, которые я только что упомянул, в нашу контактную форму.

Следующая демонстрация CodePen показывает нам, как выглядит наша контактная форма с разметкой выше а также CSS.

Создание вашей контактной формы HTML с использованием PHP

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

Начните с создания файла contact.php и вставьте в него следующий код.

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

Тем не менее, вы должны быть очень осторожны при избавлении от нежелательных символов при вводе пользователем. Например, вы можете решить использовать filter_var($user_input, FILTER_SANITIZE_STRING); чтобы на некотором поле убрать все теги и кодировать специальные символы. Однако этот флаг также удаляет безвредные символы введенные пользователями. Вот пример:

Если на вашем веб-сайте много тем, связанных с математикой, пользователи будут относительно часто писать в контактных формах или сообщениях на форуме. Использование флага FILTER_SANITIZE_STRING с функцией filter_var() в этом случае удалит необходимую информацию из сообщения.

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

Заключительные мысли

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

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

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

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

Источник

Создание форм регистрации и авторизации на PHP

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

Разработка форм регистрации и авторизации

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

Код регистрационной формы

Ниже приведен HTML-код необходимый для создания формы регистрации. Сохраните его вфайле register.php.

Несмотря на простоту данной формы, для проведения простейшей валидации данных в ней используется HTML5. К примеру, использование type=»email» обеспечит уведомление пользователя о том, что он неправильно ввел адрес электронной почты. Кроме того, применение pattern позволит провести проверку имени пользователя – логин может состоять только из латинских букв и цифр.

Наиболее продвинутый способ валидации данных подразумевает использование jQuery – в этом случае разработчик получает полный контроль над показом, расположением и внешним видом сообщений об ошибках ввода. Подробнее о валидации на стороне клиента с использованием jQuery рассказывается в этой статье.

Исходный код страницы авторизации

CSS-стили для оформления форм

Для улучшения внешнего вида форм примените к ним следующие CSS-стили:

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

Создание таблицы с учетными данными и подключение к базе данных

Следующий шаг – создание таблицы базы данных, содержащей учетные данные пользователей. В нашем случае таблица состоит всего из четырех столбцов:

Для быстрого создания таблицы базы данных можно использовать следующий SQL-запрос:

Теперь создайте файл config.php и сохраните в нем приведенный далее код для подключения к базе данных:

В приведенном выше коде замените название базы данных на то, которое вы используете для своего собственного сайта.

Исходный код для регистрации пользователей

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

Сохраните приведенный далее код в начале файла registration.php :

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

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

Функция авторизации

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

Приведенный далее код должен располагаться в начале файла login.php:

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

Ограничение доступа к страницам

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

Все, что нужно сделать для ограничения или предоставления доступа – это использовать в начале приведенного выше скрипта строку session_start().

Типичные ошибки и способы их решения

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

Некорректное имя переменной

«Заголовки уже отправлены»

Переменные сессии не сохраняются при переходах между страницами

Источник

Работа с формами

Пример #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.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *