Php формы: PHP: Работа с формами — Manual – Работа с формами в PHP — Учебник по PHP — HTML Academy

Формы в PHP

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали о том, что такое сериализация в php. В данной статье я бы хотел рассказать о том, как работать с формами в PHP. Язык PHP предназначен для программирования web-сценариев, и обработка форм занимает, пожалуй, самое главное место в этом процессе. Сейчас уже и не встретить сайтов, на которых не было бы, к примеру, регистрации или формы обратной связи, или опросника. Форумы, интернет-магазины, добавление комментария, отправка сообщения в социальной сети — всё это обработка данных, помещенных в поля формы. Давайте на примере разберемся, как обрабатывать формы на PHP.
Будем реализовывать простую задачу: необходимо создать 2 поля (имя и фамилия), передать эти данные скрипту action.php, в результате должно выйти приветствие «Добро пожаловать, фамилия имя». Кто забыл, как создаются формы, и какие там есть поля, можно посмотреть ТУТ. Создадим файл test.html:


<html>
<head>
	<meta charset="utf-8"/>
</head>
<body>
	<form action="action.php">
		Имя: <input type="text" name="name" value=""/>
		Фамилия: <input type="text" name="surname" value=""/>
		<input type="submit" name="start" value="Запустить сценарий"/>
	</form>
</body>
</html>

Обращаю ваше внимание, что файл action.php (в нашем случае) должен находиться в одной папке с файлом test.html. Тут можно указывать как относительные, так и абсолютные пути. Будьте внимательны, многие ошибки связаны с неправильным указанием пути до скрипта-обработчика формы.

Создадим файл action.php со следующим содержимым:


<?php
echo "Данные из строки браузера: $_SERVER[QUERY_STRING]"; 
?>

Если мы сейчас откроем файл test.html, заполним поля формы и нажмём на кнопку, то попадём в файл action.php, где будет выведено сообщение. В данном случае браузер обращается к скрипту action.php и передает ему, через знак «?» все значения атрибутов name, расположенных внутри тегов <input>, разделенных символом &. Обратите внимание, что подставляется вместо $_SERVER[QUERY_STRING].

Нашу задачу мы можем решить, разобрав строку QUERY_STRING с помощью стандартных функций по работе со строками в PHP, но лучше воспользоваться другим механизмом — это использование массива $_REQUEST. Все данные, которые получены из полей формы, PHP помещает в массив $_REQUEST, не зависимо от того, каким способом были переданы данные: POST или GET (узнать можно через $_SERVER[‘REQUEST_METHOD’]). Напоминаю чем эти способы отличаются:

Метод GET является открытым, метод POST является закрытым, т.е. они отличаются способом передачи параметров. Пример:

1) Если мы используем метод post: mysite.ru/request.php.
2) Если мы используем метод get: mysite.ru/request.php?myname=»Alex»&surname=»Gulynin».

Также, помимо массива $_REQUEST, PHP создаёт массивы $_GET и $_POST. Давайте теперь реализуем нашу задачу, на основе полученных знаний:


<?php
	echo "Добро пожаловать, ".$_REQUEST["surname"]." ".$_REQUEST["name"]; //В квадратных скобках передаётся атрибут name текстового поля
?>

Если мы сейчас заполним форму и нажмём на кнопку, то увидим, что скрипт action.php приветствует нас по фамилии и имени. Всё работает корректно.

Здесь всё хорошо, но если мы изменим название скрипта, то нужно будет вносить изменения в файл test.html. Давайте модифицируем файл action.php, так, чтобы, обращаясь к нему либо выводилась форма, когда мы ничего не отправили, либо приветствие, когда мы нажали кнопку:


<html>
<head>
	<meta charset="utf-8"/>
</head>
<body>
	<?php if (!isset($_REQUEST['start'])) {?> 
		<form action="<?=$_SERVER['SCRIPT_NAME']?>"> 
			Имя: <input type="text" name="name" value=""/>
			Фамилия: <input type="text" name="surname" value=""/>
			<input type="submit" name="start" value="Запустить сценарий"/>
		</form> 
	<?php} else { 
			echo "Добро пожаловать, $_REQUEST['surname'] $_REQUEST['name']";
		} 
	}?> 
</body>
</html>

Теперь мы не зависим от имени скрипта, т.к. задаем его через переменную окружения $_SERVER[‘SCRIPT_NAME’]. Конструкция =$_SERVER[‘SCRIPT_NAME’]?> равнозначна конструкции .
Помимо переменной окружения SCRIPT_NAME существует множество других.

Домашнее задание: необходимо написать скрипт, который будет выводить ip-адрес пользователя и его браузер. Подсказка: необходимо воспользоваться другими переменными окружения $_SERVER, все переменные окружения можно вывести с помощью php_info();

В данной статье вы узнали, как работать с формами в PHP.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Следующая статья >

Обработка форм сайта с помощью PHP – База знаний Timeweb Community

73d14b8b6129.png

Введение

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

Места использования форм:

  1. Создание регистрации и авторизации
  2. Создание блока комментариев
  3. Создание обращения в техническую поддержку (тикеты)

Создаём форму на HTML

Код формы необходимо помещать в <body> HTML документа.


<!DOCTYPE html>
<html lang="ru">
  <head>
    <meta charset="UTF-8">
    <title>Формы</title>
  </head>
  <body>
    Здесь должна быть ваша форма.
   </body>
</html>

Я пропущу скелет документа дальше, чтобы было более понятно.


<form action="" method="post">
<p>Введите логин: <input type="text" name="login"></p>
<p>Введите пароль: <input type="password" name="pass"></p>
<p><input type="submit" value="Отправить" name="done"></p>
</form>

В атрибут action нужно указать обработчик формы (PHP-скрипт). Если поле пусто, значит, обработку формы выполнил тот скрипт, в котором расположена сама форма. В атрибут method нужно указать метод отправки формы (post или get). У каждого свои плюсы и минусы. Вкратце: post отправляет данные так, что пользователь не может их увидеть, а get — так, что они видны в URL-строке браузера.

Наглядный пример get:73d14b8b6129.png

Наглядный пример post:73d14b8b6129.png

Немного по PHP:

При отправке формы методом POST данные записываются в суперглобальный массив $_POST.

При отправке формы методом GET данные записываются в суперглобальный массив $_GET.

К суперглобальным массивам $_POST и $_GET нужно обращаться обычным способом (как вы делаете это и с обычными ассоциативными массивами) $массив[‘ключ’].

В форме мы сделали 3 <input>. Первые два — поле ввода логина и пароля. Третий — кнопка отправки формы.
Тег <input> имеет атрибут type=»». Для каждого случая указывают свой тип ввода. Допустим, text устанавливают для текста, submit

— для отправки формы по атрибуту (action), а password — для пароля (чтобы он отображался звёздочками *).
Кроме того, тег <input> имеет атрибут name=»» и атрибут value=»». Value — стандартное значение элемента, name — предназначено для того, чтобы обработчик формы мог его идентифицировать.

Создаём обработчика формы

Мы перешли к самому интересному моменту статьи. Если мы обрабатываем форму на другой странице (action=»example.php»), то после нажатия кнопки подтверждения вас перекинет на указанную страницу.
Если action пуст, то страница с формой перезагрузится.
В самом верху скелета документа (перед <!DOCTYPE html>) открываем теги PHP и обрабатываем форму:


<?

// Если кнопка нажата, то выполняет тело условия
if (isset($_POST['done'])) {
echo 'кнопка обработчика была нажата!<br>';

// Если логин и пароль не пуст(есть значение), а также пароль не 123
if (!empty($_POST['login']) && $_POST['pass'] != 123 && !empty($_POST['pass'])) {
echo "Всё хорошо, все поля пройдены. ";
echo "Здесь должна быть ваша обработка формы. ";
echo "Занесение в базу данных, отправка сообщения и т.п.";
}

// Если логин пуст, тогда выводит сообщение
if ($_POST['login'] == '') {
echo 'Логин пуст!<br>';
}

// Если пароль популярный 
||
(или) пуст, тогда выводит сообщение if ($_POST['pass'] == '123' || empty($_POST['pass'])) { echo "Нельзя использовать популярные пароли. Придумайте свой!<br>"; } } ?>

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

В самом верху PHP-тега заводим 2 новые переменные, которые по стандарту пусты:


$error_login = "";
$error_pas = "";

В проверке на пароль:


$error_pas .= "Нельзя использовать популярные пароли. Придумайте свой!<br>";

В проверке на логин:


$error_login .= 'Логин пуст!<br>';

.= означает то, что мы берём прошлую строку (пусто) и прибавляем к этому наше сообщение.

В форме HTML:

Добавляем после тега <input> вставку PHP (в данном случае <?= ?>), так как мы только выводим переменную. Суть проста: если ошибки в логине нет, тогда $error_login пуст, а следственно, ничего не выводится, иначе выводим там ошибку.


<p>Введите логин: <input type="text" name="login"><?=$error_login?></p>
<p>Введите пароль: <input type="password" name="pass"><?=$error_pas?></p>

Теперь доработаем форму, чтобы она сохраняла значения полей.

В самом начале добавляем 2 переменные:


$input_login ="";
$input_pass = "";

В начало проверки на ‘нажата ли кнопка отправки’ добавляем:


$input_login = $_POST['login'];
$input_pass = $_POST['pass'];

То есть мы заносим в переменные значения из суперглобального массива $_POST.

И немного изменяем нашу HTML-форму:


<form action="" method="post">
<p>Введите логин: <input type="text" name="login" value="<?=$input_login?>"><?=$error_login?></p>
<p>Введите пароль: <input type="password" name="pass" value="<?=$input_pass?>"><?=$error_pas?></p>
<p><input type="submit" value="Отправить" name="done"></p>
</form>

Добавляем тег value, чтобы указать стандартное значение поля. Теперь если выдаётся ошибка, то значения полей сохраняются, и пользователю нужно не заново их вводить, а только исправить ошибку.

Заключение

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

Всем спасибо за внимание!

Итоговый код страницы с формой + обработчика:

https://pastebin.com/N9WegitB

73d14b8b6129.png

PHP и формы | PHP

Ни для кого не является секретом, что наиболее распространенным способом взаимодействия html-страницы с сайтом является форма. Форма (то есть, html-элемент образуемый тегом form) используется и бесплатными почтовыми службами, электронными магазинами и многими другими типами сайтов.

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


Рассмотрим подробнее варианты для разных типов полей.

Под текстовыми полями в этой статье понимаются элементы, создаваемые тегам input со значением параметра type равным text и тегом textarea. Организовать обработку формы состоящей из нескольких таких полей проще всего. На листинге ниже приведен листинг с html-разметкой для такой формы.

<form action='do.html' method='post'>
 <input type='text' name='txt[0]' value=''><br>
 <input type='text' name='txt[1]' value=''><br>
 <input type='text' name='txt[2]' value=''><br>
 <input type='text' name='txt[3]' value=''><br>
 <input type='text' name='txt[4]' value=''><br>
 <input type='submit' value='Отправить'>
</form>

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

<?php
 while(list($key,$val) = each($txt))
  echo "ключ - $key, значение - $val<br>n";
?>

Переключателями (checkbox) в этой статье называются элементы, создаваемые тегам input со значением параметра type равным checkbox. Форма для использования переменного количества «переключателей» строится абсолютно так же. Обратите внимание, что выбор конкретного значения переключателя (то есть значение свойства value) не важен. Пример приведен в листинге ниже:

<form action='do.html' method='post'>
 <input type='checkbox' name='chb[0]' value='1'><br>
 <input type='checkbox' name='chb[1]' value='1'><br>
 <input type='checkbox' name='chb[2]' value='1'><br>
 <input type='checkbox' name='chb[3]' value='1'><br>
 <input type='checkbox' name='chb[4]' value='1'><br>
 <input type='submit' value='Отправить'>
</form>

Однако обработка такой формы отличается от обработки, описанной для текстовых полей. В данном случае необходимо определить, включил или нет посетитель сайта тот или иной переключатель. Если включил — то соответствующий элемент массива существует, если нет — то отсутствует. В следующем листинге приведен пример PHP сценария, который распечатывает включенные переключатели:

Перед тем как описывать обработку радио-кнопок необходимо вспомнить, как они работают. Суть радио-кнопок (элементы созданные тегами input со значением параметра type равным radio) заключается в том что, выбирая одну кнопку, пользователь автоматически снимает выделение с другой кнопки из этого же набора. Кнопки объединяются в набор очень просто: у всех кнопок в наборе одно и тоже имя.

А вот значения (то есть параметры value) у кнопок в наборе — разные. И на сайт будет отправлено значение выбранной кнопки с именем набора. Так же как и в случае с текстовыми полями и переключателями имена наборов радио-кнопок должны оформляться как имена элементов массива в PHP. Пример такой формы приведен в следующем листинге:

<form action='do.html' method='post'>
 // первый набор кнопок
 <input type='radio' name='rdi[0]' value='1'>
 <input type='radio' name='rdi[0]' value='2'>
 <input type='radio' name='rdi[0]' value='3'><br>
 // второй набор кнопок
 <input type='radio' name='rdi[1]' value='1'>
 <input type='radio' name='rdi[1]' value='2'>
 <input type='radio' name='rdi[1]' value='3'><br>
 // третий набор кнопок
 <input type='radio' name='rdi[2]' value='1'>
 <input type='radio' name='rdi[2]' value='2'>
 <input type='radio' name='rdi[2]' value='3'><br>
<input type='submit' value='Отправить'>
</form>

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

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

<?php
 while(list($key,$val) = each($rdi))
  echo "ключ - $key, значение - $val<br>n";
?>

Таким образом, ничего сложного в обработке сложных форм нет.

Обработка форм в PHP, методы GET и POST

Что такое форма

С точки зрения разработчика форма — это набор HTML-элементов, таких как <input>, <select>, <textarea> и пр., которые заполняются пользователем, отправляются на сервер и обрабатываются с помощью PHP.

Простой пример формы:

<form>
	<input type="text" name="title">
	<textarea name="content"></textarea>
</form>

В этой форме есть 2 поля для заполнения (input и textarea), а также кнопка отправки формы.

Если мы заполним эту форму любыми значениями и нажмём на кнопку, то переместимся на страницу с примерно таким URL: /?title=123&content=456.

Итак, давайте разбираться, что тут вообще происходит.

Мем с парнем, задумчиво смотрящим в монитор

Разбираемся с обработкой форм в PHP

Обработка формы с GET-параметрами

Формы можно передавать с помощью методов GET и POST. Указывается метод с помощью атрибута method тега form:

<form method="POST">
</form>

Если метод не указан, то по-умолчанию форма отправляется методом GET.

Формы, отправляемые методом GET, передают данные через URL-адрес.

Соответственно GET-параметр — это параметр, передаваемый в URL-адресе. Например, разберём URL /index.php?name=Vasya&price=1000 по частям:

  • /index.php — ссылка на сам скрипт
  • ? — символ, с которого всегда начинается перечисление GET-параметров
  • name=Vasya — это первый GET-параметр с ключом name и значением Vasya
  • & — разделитель между GET-параметрами
  • price=1000 — это второй GET-параметр с ключом price и значением 1000

Ну а раз мы эти параметры передали, значит теперь можем получить их в PHP. Для этого существует суперглобальный массив $_GET.

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

Получить доступ к этим параметрам можно так:
<?php
    echo $_GET['name'] . ' ' . $_GET['price'];

Когда вы отправляете форму, браузер получает ключ и значение каждого элемента (ключ указывается в атрибуте name, значение — то, что ввёл пользователь) и подставляет их в новый URL-адрес, на который затем и переходит.

Поэтому важно указывать атрибут name каждому элементу формы, иначе этот элемент не отправится на сервер.

Итак, создадим простенькую форму и добавим ей PHP-обработчик:

<?php
	if(isset($_GET['form'])) {
		echo $_GET['title'] . ' : ' . $_GET['content'] . '<br>';
	} else {
		echo 'Форма не отправлена';
	}
?>
<form>
	<input type="text" name="title">
	<br><br>

	<textarea name="content"></textarea>
	<br><br>

	<button name="form">Отправить!</button>
</form>

Теперь при отправке заполненной формы PHP выведет на экран то, что мы в эту форму написали.

Метод POST

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

Однако у этого метода есть недостаток — GET-параметры видны в адресной строке. Это значит, что введённые в форму логин и пароль будут передаваться в URL-адресе, а значит видны в истории браузера, что очень нехорошо.

По этой причине для отправки форм, которые могут содержать конфиденциальную информацию, нужно всегда использовать метод POST. При использовании метода POST данные передаются в теле http-запроса, а не в URL.

Метод GET в формах чаще всего используется для поиска чего-либо (товаров, статей и т.д.).

Некоторые разработчики считают, что данные, передаваемые методом POST, имеют какую-то особую защиту, которая не позволяет злоумышленнику украсть или подменить их.

Это не так. Никакой дополнительной защиты у метода POST нет. Для защиты http-запросов нужно использовать https.

Данные, передаваемые методом POST, лежат в суперглобальном массиве $_POST. Теперь можно переписать нашу форму, чтобы она передавала данные методом POST:

<?php
	if(isset($_POST['form'])) {
		echo $_POST['title'] . ' : ' . $_POST['content'] . '<br>';
	} else {
		echo 'Форма не отправлена';
	}
?>
<form method="post">
	<input type="text" name="title">
	<br><br>

	<textarea name="content"></textarea>
	<br><br>

	<button name="form">Отправить!</button>
</form>

Изменение обработчика формы

Обработчик формы — это URL, на который отправится форма. По-умолчанию форма отправляется на тот же URL-адрес, где она находится.

При желании вы можете отправлять форму не на текущий URL, а на какой-нибудь другой. Для этого достаточно указать путь к скрипту в атрибуте action:

<form action="/some_url.php">
    <input type="submit">
</form>

В примере выше запрос будет отправлен скрипту /some_url.php.

Обработка формы в PHP

Вы здесь: Главная — PHP — PHP Основы — Обработка формы в PHP

Обработка формы в PHP

Львиная доля задач в PHP связана с обработкой данных, полученных от пользователя. И в большинстве случаев, эти данные получены из формы, поэтому обработка форм в PHP является важнейшим моментом при создании сайта, о котором я и расскажу в этой статье.

Для начала давайте создадим форму на HTML:

<html>
<head>
  <title>Форма</title>
</head>
<body>
  <form name = 'myform' action = 'req.php' method = 'post'>
    Ваш логин: <input type = 'text' name = 'login' />
    <br />
    Ваш пароль: <input type = 'password' name = 'pass' />
    <br />
    <input type = 'submit' value = 'Войти' />
  </form>
</body>
</html>

Это пример классической формы авторизации пользователя, которую, уверен, многие из Вас многократно заполняли на самых разных сайтах. Давайте теперь обсудим один важный момент: как отправляются данные? Существует два метода (мы с Вами будем только два рассматривать) — это GET и POST. Главное их отличие — это вид отправки: открытый (GET) и закрытый (POST). Самый лучший способ понять, в чём разница — это открыть данный HTML-код в браузере и нажать кнопку «Войти«. Посмотрите на адресную строку, а потом поставьте другой метод, снова пройдите и вновь посмотрите на адресную строку. Отличие будет бросаться в глаза мгновенно.

Соответственно, в PHP существуют два массива: $_GET и $_POST, которые содержат данные, полученные каждым из этих методов. Также есть массив $_REQUEST, который содержит данные $_GET и $_POST одновременно. Я Вам советую использовать метод POST и массив $_POST, хотя, безусловно, зависит от ситуации, но в большинстве случаев делают именно так.

Теперь давайте обработаем данные. Давайте реализуем простой скрипт (в файле «req.php«):

<?php
  $login = $_POST['login'];
  $pass = $_POST['pass'];
  if (($login == "Admin") && ($pass == "AdminPass"))
    echo "Привет, Admin!";
  else echo "Доступ закрыт";
?>

В данном скрипте мы получаем данные, полученные из формы методом POST (из массива $_POST, хотя с таким же успехом могли получить эти данные из $_REQUEST). Дальше проверяем логин и пароль и выводим: «Привет, Admin!» или «Доступ закрыт». Разумеется, чтобы создать систему авторизации пользователей на сайте, необходимо ещё узнать о cookie или о сессиях (в принципе, тоже cookie), но о них мы поговорим несколько позднее, потому что у нас впереди ещё очень много важных тем.

Аналогично, считываются и обрабатываются абсолютно любые данные из форм. То есть всё, что Вам нужно — это знать имя переменной (задаётся в HTML-форме) и дальше использовать массивы $_POST, $_GET и $_REQUEST.

  • Обработка формы в PHP Создано 12.11.2010 15:41:16
  • Обработка формы в PHP Михаил Русаков
Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

Форма ввода php

Язык программирования PHP позволяет делать и обрабатывать пользовательские формы фактически любой сложности. В этой статье я научу вас создавать и обрабатывать формы.Для начала рассмотрим принцип работы форм и из чего они состоят. Форма представляет собой html код с различными полями ввода, которые заполняет пользователь. После нажатия кнопки отправки формы происходит передача значений всех полей формы обработчику этой формы. Отправка осуществляется методом POST или GET. По умолчанию используется GET. Рассмотрим простой пример,форма отправки имени,фамилии и номера телефона: Файл forma.html
  1. <form action="action.php" method="post" enctype="multipart/form-data">

  2. Ваше имя: <input type="text" name="name" /><br />

  3. Ваша фамилия: <input type="text" name="surname" /><br />

  4. Ваш телефон: <input type="text" name="phone" /><br />

  5. <input type="submit" value="Отправить форму" />

  6. </form>

В теге form указан путь к обработчику и метод передачи данных. Параметр enctype позволяет передавать через форму файлы. Например если нам нужно приложить к форме какой-нибудь документ-то этот атрибут обязателен. Тэги input — это элементу формы. Какой элемент-зависит от атрибута type. Теперь код обработчика. Файл action.php
  1. //Принимаем постовые данные

  2. $name=$_POST['name'];

  3. $surname=$_POST['surname'];

  4. $phone=$_POST['phone'];

  5.  

  6. //вывод на экран

  7. echo $name.' '.$surname.' ваш номер телефона '.$phone;

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

Форма с записью результата в файл

Оставляем нашу форму как есть и заносим в файл имя, фамилию, телефон и IP адрес посетителя.
  1. //Принимаем постовые данные

  2. $name=$_POST['name'];

  3. $surname=$_POST['surname'];

  4. $phone=$_POST['phone'];

  5.  

  6. //обращаемся к глобальной переменной SERVER

  7. $ip=$_SERVER['REMOTE_ADDR'];

  8.  

  9. //формируем строку для записи

  10. $str=$name.' '.$surname.', '.$phone.', '.$ip.'\r\n';

  11.  

  12. //открываем файл для записи.Если файл не существует-он будет создан

  13. $fopen = fopen('my_form_reports.txt', 'a+');
  14. //записываем строку

  15. //закрываем файл

Вот и всё. Тестируйте.

Форма с записью результата в базу данных MySql

В случае с базой чуть посложнее. Тут очень важен момент безопасности. Данные необходимо профильтровать и лишь потом занести в БД, иначе злоумышленник может провести SQL инъекцию и уничтожить вашу базу данных.Обязательно используйте функцию mysql_real_escape_string. Пишем обработчик:
  1. //принимаем данные

  2. $name=$_POST['name'];

  3. $surname=$_POST['surname'];

  4. $phone=$_POST['phone'];

  5.  

  6. //соединяемся с БД

  7.  

  8. //обязательно экранируем нежелательные символы функцией mysql_real_escape_string

  9. $sql="insert into `table_name` (name,surname,phone,ip) values

  10. (

  11. '".$_SERVER['REMOTE_ADDR']."'

  12. )";

Будет лучшим использовать библиотеку PDO. Код будет выглядеть следующим образом:
  1. $name=$_POST['name'];

  2. $surname=$_POST['surname'];

  3. $phone=$_POST['phone'];

  4. //соединение с базой

  5. $db = new PDO('mysql:dbname=db_name; host=localhost',"user_name","user_password");

  6.  

  7. //далее сам запрос

  8. $sql="insert into `table_name` (name,surname,phone,ip) values (:name,:surname,:phone,:ip)";

  9. $sth=$db->prepare($sql);

  10. $sth->bindValue(':name', $name);

  11. $sth->bindValue(':surname', $surname);

  12. $sth->bindValue(':phone', $phone);

  13. $sth->bindValue(':ip', $_SERVER['REMOTE_ADDR']);

  14. $sth->execute();

Обратите внимание,что при использовании PDO наши переменные не проходили никакой проверки. Но это не является уязвимостью. Библиотека PDO самостоятельно очистит всё лишнее и выполнит запрос. Чтоб узнать результат запроса-допишите в конце следующий код:
  1. $error=$sth->errorInfo();

Форма с отправкой e-mail средствами php

Опять правим форму. На этот раз экранируем ненужные символы для безопасного отображения в браузере. Используется для этого функция htmlspecialchars.
  1. //Принимаем постовые данные

  2. $name=$_POST['name'];

  3. $surname=$_POST['surname'];

  4. $phone=$_POST['phone'];

  5.  

  6. //Тут указываем на какой ящик посылать письмо

  7. $to = "[email protected]";

  8. //Далее идет тема и само сообщение

  9. $subject = "Тема письма";

  10. $message = "

  11. Письмо отправлено из моей формы.<br />

  12. Пользователь указал:<br />Имя: ".htmlspecialchars($name)."<br />
  13. $headers = "From: MySite.ru <[email protected]>\r\nContent-type: text/html; charset=utf8 \r\n";

  14. mail ($to, $subject, $message, $headers);
  15. </[email protected]>

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

PHP Form — работа с формами в PHP

«PHP Form — работа с формами в PHP» – восьмой урок учебника PHP. В этом уроке мы поговорим про обработку форм средствами PHP.

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

PHP позволяет обрабатывать данные, которые пользователь ввел в поля формы. После активации кнопки submit данные отправляются на страницу – обработчик, указанную в поле action элемента <form>. На странице – обработчике располагается PHP скрипт, который выполняет определенные операции над полученными данными, например формирует и отсылает письмо по указанным пользователем реквизитам.

Передача данных обработчику.

Данные из формы передаются на сервер как последовательность пар имя/значение. Это значит, что имя каждого элемента формы (появляющееся в атрибуте NAME тега) связывается со значением этого элемента (введенным или выбранным пользователем). Формат имя/значение, используемый для передачи, имеет вид имя=значение.

Все данные, передаваемые из формы в программу–обработчик располагаются в следующих суперглобальных массивах:$_GET, $_POST, и $_REQUEST.

$_GET[] — содержит все значения, передаваемые методом GET.

$_POST[] –содержит все значения, передаваемые методом POST.

$_REQUEST[] –содержит все значения, передаваемые методами POST и GET.

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

<form action=»process.php» method=»post»>
Имя :
<input type=»text» name=»FName»/>
Фамилия:
<input type=»text» name=»LName»/>
Город :
<input type=»text» name=»City»/>
Сообщение:
<textarea name=»Message» cols=»30″ rows=»5″>
</textarea>
<input type=»submit» name=»submit» value=»Отправить»/>
</form>

Фамилия:

Город :

Сообщение:

После нажатия на кнопку submit данной формы все данные передаются обработчику process.php. Так как в этой форме используется метод POST, то все переменные будут расположены внутри массива $_POST.

Теперь создадим обработчик:

process.php

<?php
echo «Имя: <font color=»green»> » . $_POST[«FName»] . «</font><br/>»;
echo «Фамилия: <strong> » . $_POST[«LName»] . «</strong><br/>»;
echo «Город: <em> » . $_POST[«City»] . «</em><br/>»;
echo «<br/>»;
echo «Ваше сообщение : » . $_POST[«Message»];
?>

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

Массив $_Request

Использование суперглобального массива $_Request очень удобно, особенно когда не известно, каким методом были переданы данные.

Благодаря циклу foreach можно перебрать значения массива $_Request.

<?php
foreach($_REQUEST as $key => $value)
{
echo $key;
echo «: «.$value;
echo «<br/>»;
}
?>
_ym_uid: 146810290171613324
_ym_isad: 2
_gat: 1
_ga: GA1.2.1819166208.1468102901
_ym_visorc_27959370: w

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


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

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

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

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