Массивы $_GET и $_POST
<form action="script.php" method="GET">
Введите Ваше имя
<input type="text" name="my_name">
<input type="submit" value="Отправить">
</form>
- В action мы указываем куда форма будет передавать данные.
- В method у нас есть два основных варианта - это методы GET и POST
Если кратко и грубо, метод GET больше подходит для передачи небольшого количетсва информации. Полный набор отличий будет приведен ниже
После передачи данных из формы, в script.php наши данные будут доступны через массив $_GET ($_POST, если бы использовали POST как метод). Название указанное в атрибуте name будет доступно в качестве ключа $_GET["my_name"]; В script.php выведем введенное имя echo $_GET["my_name"];
isset
Если мы хотим проверить, был ли нам передан GET-параметр, мы можем это сделать через функцию isset. Например:
if (isset($_GET["color"])){
// в наш скрипт был передан GET-параметр color
}
Особенности методов GET-POST
- GET параметры передаются через адресную строку
- Как следствие через GET параметры нельзя передавать большие объемы данных
- Поскольку данные передаются через адресную строку, не стоит передавать пароли через GET-параметры
- Формат GET-запроса script.php?a=5&b=7
- Как следствие GET-запросы можно передать через гиперссылки
- Нельзя выводить GET-параметры напрямую на страницу (потому что тогда можно создать ссылку, которая будет выводить на Вашем сайте сообщения злоумышленника)
- Нельзя оставлять пользователя с POST параметрами на странице (потому что при обновлении будет выскакивать всплывающее окно )
- Нельзя оставлять пользователя на странице с параметрами, которые приводят к действиям.
Пример echo-сервера
Создадим простейший вариант echo-сервера в файле hello.php, который получает на вход GET-параметр name и отображает его.
<?php
echo 'Hello '.$_GET["name"];
Теперь попробуем в через адресную строку в браузере обратиться к нему
hello.php?name=Vasya
На выходе должны получить Hello Vasya
Модифицируем наш сервер, так чтобы он просил указать имя в GET-параметре, если оно не было передано. Для этого нам понадобится проверка наличия GET-параметра через isset
<?php
if (isset($_GET["name"])) {
echo 'Hello '.$_GET["name"];
} else {
echo 'Please add your name to the address line';
}
Теперь, если наш GET-параметр не был передан, то сервер скажет нам об этом.
Практика:
- Попробуйте сделать форму и скрипт, которые выводили бы сумму двух чисел.
- Есть массив имен. Скрипт на сервере по номеру должен возвращать имя.
- Серый блок под ним три квадрата с цветом. При клике на квадрат, серый блок окрашивается в цвет
- Сделать трехстраничный сайт с навигационным меню, используя только один php-файл