if(isset($_POST['login']) && isset($_POST['password'])){ $login=strip_tags($_POST['login']);
$password = strip_tags($_POST['password']);
echo "Ваш логин: $login <br> Ваш пароль: $password";
}
Результатом ее работы при том же вводе будет следующий вывод:
1.8.2. Получение данных из строки запроса
Другим распространенным способом отправки данных на сервер является метод GET. Его сущность состоит в том, что данные передаются в адресной строке браузера.
Итак, создадим простой скрипт get.php со следующим содержимым:
<?php
$login = "не определен"; $age = "не определен"; if(isset($_GET['login'])){
$login = $_GET['login'];
}
if(isset($_GET['age'])){
$age = $_GET['age'];
}
echo "Ваш логин: $login <br> Ваш возраст: $age"; ?>
В PHP по умолчанию определен глобальный ассоциативный массив $_GET, который хранит все значения, передаваемые в строке запроса. Его действие
100
подобно массиву $_POST: также по ключу мы можем получить передаваемое значение.
Теперь обратимся к этому скрипту, например, так http://localhost:8080/get.php ?login=mailcom&age=22:
Все параметры передаются на сервер в следующей форме: get.php?параметр1=значение1&параметр2=значение2&параметрN=з начениеN. Чтобы передать список параметров, после названия скрипта ставится знак вопроса, за которым идут наборы параметров и их значений. Название параметра и будет ключом в массиве $_GET. Наборы параметрзначения отделяются друг от друга знаком амперсанда (&)
Данные формы мы также можем передать через запрос GET. Для этого достаточно у формы указать атрибут method="get", и тогда все значения полей формы также будут передаваться через строку запроса:
<form method="GET">
Логин: <input type="text" name="login" /><br><br> Пароль: <input type="text" name="password" /><br><br> <input type="submit" value="Отправить">
</form>
1.8.3. Работа с полями ввода форм
Формы могут содержать различные элементы - текстовые поля, флажки, переключатели и т.д., обработка которых имеет свои особенности. Обработка флажков
Флажки или чекбоксы checkbox могут находиться в двух состояниях: отмеченном (checked) и неотмеченном. Например:
Запомнить: <input type="checkbox" name="remember" checked="checked" />
Если флажок находится в неотмеченном состоянии, например:
Запомнить: <input type="checkbox" name="remember" />
101
то при отправке формы значение данного флажка не передается на сервер. Если флажок отмечен, то при отправке на сервер для поля remember будет передано значение on:
$remember = $_GET['remember'];
Если нас не устраивает значение on, то с помощью атрибута value мы можем установить нужное нам значение:
Запомнить: <input type="checkbox" name="remember" value="1" />
Иногда необходимо создать набор чекбоксов, где можно выбрать несколько значений. Например:
ASP.NET: <input type="checkbox" name="technologies[]" value="ASP.NET" /> PHP: <input type="checkbox" name="technologies[]" value="PHP" />
RUBY: <input type="checkbox" name="technologies[]" value="Ruby" />
В этом случае значение атрибута name должно иметь квадратные скобки. И тогда после отправки сервер будет получать массив отмеченных значений:
$technologies = $_POST['technologies']; foreach($technologies as $item) echo "$item<br />";
В данном случае переменная $technologies будет представлять массив, который можно перебрать и выполнять все другие операции с массивами. Переключатели Переключатели или радиокнопки позволяют сделать выбор между
несколькими взаимоисключающими вариантами:
<input type="radio" name="course" value="ASP.NET" />ASP.NET <br> <input type="radio" name="course" value="PHP" />PHP <br> <input type="radio" name="course" value="Ruby" />RUBY<br>
На сервер передается значение атрибута value у выбранного переключателя. Получение переданного значения:
if(isset($_POST['course']))
102
{
$course = $_POST['course']; echo $course;
}
Список
Список представляет элемент select, который предоставляет выбор одного или нескольких элементов:
<select name="course" size="1">
<option value="ASP.NET">ASP.NET</option> <option value="PHP">PHP</option> <option value="Ruby">RUBY</option> <option value="Python">Python</option> </select>
Элемент <select> содержит ряд вариантов выбора в виде элементов <option>:
Теперь получим выбранный элемент:
if(isset($_POST['course']))
{
$course = $_POST['course']; echo $course;
}
Но элемент select также позволяет множественный выбор. И в этом случае обработка выбранных значений изменяется, так как сервер получает массив значений:
<select name="courses[]" size="4"multiple="multiple"> <option value="ASP.NET">ASP.NET</option> <option value="PHP">PHP</option>
<option value="Ruby">RUBY</option> <option value="Python">Python</option> </select>
Такие списки имеют атрибут multiple="multiple". Для передачи массива также указываются в атрибуте name квадратные скобки:name="courses[]"
103
Теперь получим в PHP выбранные значения:
<?php if(isset($_POST['courses']))
{
$courses = $_POST['courses']; foreach($courses as $item) echo "$item<br>";
}
?>
1.8.4. Пример обработки форм
Рассмотрим комплексный пример обработки форм, в которой объединим обработку различных элементов html. Определим следующую форму:
<h2>Анкета</h2>
<form action="input.php" method="POST"> <p>Введите имя:<br>
<input type="text" name="firstname" /></p> <p>Форма обучения: <br>
<input type="radio" name="eduform" value="очно" />очно <br> <input type="radio" name="eduform" value="заочно" />заочно </p> <p>Требуется общежитие:<br>
<input type="checkbox" name="hostel" />Да</p> <p>Выберите курсы: <br>
<select name="courses[]" size="5" multiple="multiple"> <option value="ASP.NET">ASP.NET</option> <option value="PHP">PHP</option>
<option value="Ruby">RUBY</option> <option value="Python">Python</option> <option value="Java">Java</option> </select></p>
<p>Краткий комментарий: <br>
<textarea name="comment" maxlength="200"></textarea></p> <input type="submit" value="Выбрать">
</form>
104