GET-запросы в PHP
Итак, пришло время нам начать взаимодействовать с пользователем.
Как мы говорили ранее, PHP работает на сервере. Отсюда следует вопрос, а как же нам из браузера начать с ним взаимодействовать? Например, заполнить форму логина на сайте и отправить данные на сервер, чтобы наш код с ним что-нибудь сделал.
Именно об этом мы и поговорим в этом уроке.
Итак, давайте удалим все наши файлы в проекте и создадим новый пустой файл с именем index.php. Запишем в него следующий код:
<?php
echo 'Hello world!';
Давайте выполним этот скрипт, открыв в браузере адрес:
http://myproject.loc/index.php
Как мы помним из этого урока, мы отправляем запрос веб-серверу, он понимает, что мы запрашиваем PHP-скрипт, выполняет его с помощью интерпретатора и возвращает нам ответ в виде результата выполнения этого скрипта.
Возникает вопрос: «А как можно передать от пользователя внутрь скрипта какие-либо данные?». Ответов на него у нас сразу несколько, и все мы их рассмотрим в этом уроке.
Метод GET
Когда мы вбиваем адрес скрипта и нажимаем Enter, выполняется GET-запрос по протоколу HTTP. В этом типе запроса к основному адресу мы можем прикрепить дополнительные параметры. Для того чтобы передать их, в конце основного адреса ставится знак вопроса, и мы можем перечислять эти параметры — вот так:
параметр1=значение1.
При этом если нам нужно указать несколько параметров, то мы разделяем их с помощью знака амперсанда:
арг1=знач1&арг2=знач2.
Пример:
http://myproject.loc/index.php?arg1=123&arg2=scrrr
Если сейчас перейти по этой ссылке в браузере, то на сервер передадутся 2 параметра:
- arg1 со значением 123;
- arg2 со значением scrrr.
Мы можем очень просто получить к ним доступ из PHP с помощью магической переменной $_GET. Эта переменная является суперглобальной, то есть доступна нам в PHP всегда и в любом месте. Она представляет собой ассоциативный массив, в котором хранятся все переданные в запросе GET-параметры.
Давайте изменим код нашего index.php, чтобы узнать, что именно хранится в этой переменной.
<?php
var_dump($_GET);
И откроем этот url: http://myproject.loc/index.php?arg1=123&arg2=scrrr
Мы увидим следующее:
array (size=2)
'arg1' => string '123' (length=3)
'arg2' => string 'scrrr' (length=5)
Как мы можем видеть, это действительно наши переданные аргументы, представленные в виде ассоциативного массива.
Учимся обрабатывать параметры
Давайте попробуем передать другие аргументы:
http://myproject.loc/index.php?login=admin&password=12345
Результат:
array (size=2)
'login' => string 'admin' (length=5)
'password' => string '12345' (length=5)
Разумеется, мы можем обращаться к этим элементам как к элементам обычного массива. Например, так:
<?php
echo $_GET['login']
Давайте создадим простую страничку, на которой мы будем выводить переданные с помощью GET-запроса логин и пароль.
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : 'логин не передан!';
$password = !empty($_GET['password']) ? $_GET['password'] : 'пароль не передан!';
?>
<html>
<head>
<title>Знакомство с GET-запросами</title>
</head>
<body>
<p>
Переданный логин: <?= $login ?>
<br>
Переданный пароль: <?= $password ?>
</p>
</body>
</html>
Обновим нашу страничку в браузере и увидим результат.
Отлично, мы успешно обработали данные, которые нам пришли от пользователя.
Учимся работать с формами
Давайте теперь вспомним уроки про формы из курса по HTML и сделаем простейшую форму для отправки GET-запроса на страничку.
Давайте запишем в наш index.php следующий код:
<html>
<head>
<title>Форма входа</title>
</head>
<body>
<form action="/login.php" method="get">
<label>
Логин <input type="text" name="login">
</label>
<br>
<label>
Пароль <input type="password" name="password">
</label>
<br>
<input type="submit" value="Войти">
</form>
</body>
</html>
И давайте теперь откроем его в браузере: http://myproject.loc/index.php
Как мы видим по исходному коду, форма отправит аргументы login и password с введенными значениями на адрес /login.php.
Давайте введем в поля значения admin и Pa$$w0rd соответственно и нажмем на кнопку «Войти».
Нас отправит на страничку http://myproject.loc/login.php?login=admin&password=Pa%24%24w0rd
Где сервер нам скажет о том, что такой странички не найдено.
Отлично! Так давайте же её создадим! Создаём рядом с нашим index.php файл с именем login.php. И пишем в него следующий код:
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
if ($login === 'admin' && $password === 'Pa$$w0rd') {
$isAuthorized = true;
} else {
$isAuthorized = false;
}
?>
<html>
<head>
<title>Результат авторизации</title>
</head>
<body>
<p>
<?= $isAuthorized ? 'Логин и пароль верные!' : 'Неправильный логин или пароль' ?>
</p>
</body>
</html>
Вернёмся на нашу форму и повторно отправим пароль. Теперь мы увидим информацию о том, что мы успешно авторизовались. Это простейший прототип формы авторизации. Разумеется, он сильно упрощён, не всё сразу. А пока – делаем домашнее задание.
Комментарии