Главная страница
Навигация по странице:

  • Важно помнить

  • Развитие языков программирования растёт с большой скоростью


    Скачать 2.79 Mb.
    НазваниеРазвитие языков программирования растёт с большой скоростью
    АнкорKostern
    Дата28.04.2022
    Размер2.79 Mb.
    Формат файлаpdf
    Имя файлаKostelny_PHP-Junior-Kit.644079.pdf
    ТипДокументы
    #503693
    страница5 из 14
    1   2   3   4   5   6   7   8   9   ...   14




    />

    />



    PHP: Junior Kit
    106
    пойдет в следующих подразделах этого раздела. Давайте поговорим об созданных нами полях. Создали мы поля с помощью тега , после этого мы задали тип для поля с помощью атрибута type, в нашем случае наши поля имеют текстовый тип то есть text.
    Поля могут иметь разные типы. Например, есть специальный для загрузки файлов, или например тип для большого текста. Чтобы наша форма выглядела более менее понятной для простого пользователя то для этого мы использовали два тега

    PHP: Junior Kit
    107
    -
    Рис. 8 - Демонстрация работы формы с веб-сервером
    Из схемы чётко видно, что данные отправляться от формы в массив POST, после чего они отправляются в скрипт который и обрабатывает полученные данные а также обращается к ним, и делать он это может не один раз. Думаю некоторые зададутся вопросом, что же значит понятие супер-переменная в РНР? Супер-переменные это специальные переменные в РНР которые имеют глобальную область видимости и могут быть использованы везде в любой части кода и в любом файле.
    Каждая супер-переменная отвечает за какую то вещь. Например, супер-переменная $_POST отвечает за получение и хранение данных отправленных через форму. Мы ещё познакомимся с другими супер- переменными, а пока что нас с вами интересует только супер-переменная
    $_POST. Давайте создадим скрипт который и будет обрабатывать данные отправленные из формы и назовём мы его process.php:
    "; echo $_POST["info"]; // Как вы можете здесь заметить, то здесь мы делаем вывод данных которые были введены в поля name и info.
    // Т.е. как я уже и говорил, что если мы хотим обратиться к данным которые были отправлены через форму, мы должны указать названия полей в массиве
    POST
    ?>
    Форма
    Веб-сервер
    Массив
    POST
    Ответ

    PHP: Junior Kit
    108
    Теперь сохраните файл назвав его process.php, в результате у вас должно получиться два файла, это form.html то есть файл внутри которого храниться сама форма и process.php который обрабатывает полученные данные от формы. Проверьте, правильны ли названия ваших файлов, а также проверьте атрибут action в файле с формой. Главное чтобы в этом атрибуте было указано имя файла, который обрабатывает форму.
    Ну а теперь настало время протестировать вашу форму, перейдите на адрес вашего приложения на файл с формой. После этого введите какие-то данные в форму и отправьте их. В результате вас должно перенаправить на скрипт, который обрабатывает отправленные данные.
    Если вы все делали так как я говорил то у вас все должно получиться, если что то не получается то пересмотрите все то о чем я говорил выше и повторите данные шаги снова.
    В завершение этого подраздела скажу что форму бывают не только для того чтобы вводить какие то текстовые данные, но также для того чтобы отправлять какие-то файлы и т.п. Поэтому двигаемся дальше, и следующее что на нас с вами ждет это поговорить о том какие существуют HTTP-методы.
    9.2 HTTP- методы
    В предыдущем подразделе мы научились как можно работать с формами, а также познакомились с одним из HTTP-методов т.е. с методом POST. Я уже говорил, что кроме этого метода существуют и другие методы для работы с HTTP которые намного больше позволяют расширить возможности работы с HTTP.
    Знать какие существуют HTTP-методы это важно. Поскольку с помощью них как раз и осуществляется отправка данных, удаление данных и т.п. в сети. Если кто то не знает то HTTP это стандартный протокол передачи данных гипертекста по сети. Надеюсь вы помните как в начале книги мы рассматривали как именно работает сервер, поскольку

    PHP: Junior Kit
    109
    сейчас это нам понадобиться. Внизу показана схема работы сервера чтобы напомнить читателю как все работает:
    -
    Рис. 9 - Работа клиента с сервером
    Как мы видим из схемы то работа протокола HTTP осуществляется по принципу клиент-сервер. О том как вообще работает весь протокол я говорит не буду, поскольку знать о том что сервер работает по принципу клиент-сервер уже достаточно, поэтому переходим к основной теме этого подраздела т.е. к методам которые используются в
    HTTP. Но перед тем как перейдем к самому изучению методов мы должны понять как именно строятся HTTP-запросы. Как не странно то когда мы вводим в адресной строке браузера адрес сайта и нажимаем enter то браузер автоматически создаёт запрос.
    Знать как выглядит запрос это важно, поскольку можно будет понять что именно происходит. Вот пример запроса на содержимое страницы /about веб-сайта example.com который используется в качестве примера:
    GET /about/ HTTP/1.1
    Host: example.com
    User-Agert:
    Mozilla/5.0
    (Windows
    NT
    6.1; rv:18.0) Gecko/20100101 Firefox/18.0
    Accept: text/html
    Connection: close

    PHP: Junior Kit
    110
    Объясню, что именно происходит, во-первых в самой первой строке мы делаем запрос содержимого страницы /about на сайте example.com
    . Посмотрите внимательно, для этого запроса мы используем метод GET, а также после того как мы указали название страницы мы указали версию протокола которую мы хотим использовать
    HTTP/1.1
    . Эта версия сейчас используется наибольшее, конечно же есть и версия HTTP/2.2.
    В следующей строке кода запроса указан адрес веб-сайта к которому мы делаем запрос. В третьей строке уже содержится информация об том какой браузер используется для запроса страницы, кроме информации об браузере есть также информация операционной системе.
    В четвертой строке содержится информация об том в каком виде возвращать нам содержимое страницы. В нашем случае это в виде статической HTML веб-страницы. В виде статической веб-страницы содержимое веб-сайта возвращается наиболее часто, конечно же содержимое может возвращаться и в других видах, к примеру в виде файлов. И в последней строке указано, что у нас закрытое соединение. Вы уже понимаете как выглядит содержимое запроса. Можно продолжать разговор дальше и сейчас мы поговорим об методах которые используется в запросах и ответах.
    Метод GET
    Данный метод используется для того чтобы доставать какие то данные из веб-сервера. Простым примером того как работает этот метод может служить тот момент когда мы с вами делаем запрос на получение содержимого веб-сайта. То есть когда мы посылаем запрос серверу на получение содержимого сайта, мы используем метод GET.
    И если сервер подтвердит запрос, то мы в свою очередь получим содержимое веб-сайта в виде статической страницы. Конечно же ответ можно также получит в виде динамической страницы, но об этом речь в

    PHP: Junior Kit
    111
    этой книге пойдет намного позже. Заметьте также что для того чтобы получить данные мы используем метод GET, а для того чтобы отправить мы используем метод POST.
    Метод PUT
    Этот метод уже используется для того чтобы загрузить указанные данные на указанный URI адрес. Долго объяснять не буду, вы просто загружаете данные с помощью этого метода на URI адрес.
    Метод PATCH
    Метод аналогичен методу PUT, только используется к целому ресурсу, а к её небольшой части.
    Метод DELETE
    Тут уже с названия ясно для чего применяться этот метод. То есть для удаления определенного ресурса.
    Только что мы с вами рассмотрели неполный список HTTP- методов, конечно же, я мог указать все методы, но я знаю что люди хотят услышать саму суть, поэтому указал только те с которыми вы можете частенько встретиться во время разработки.
    Если нам надо будет рассмотреть тело запроса, то это можно сделать с помощью разных приложений для браузера Google Chrome или
    Mozilla. Это уже конечно же зависит какой браузер вы используется, главное чтобы вы могли с помощью установленного приложения рассмотреть что находиться внутри тела HTTP запроса.
    Одним из таких приложений которые позволяют это делать является ARC или Advanced REST Client. Данное приложение позволяет не только рассматривать тело запросов и данные, которые отправляются через эти запросы. Но также и создавать сами эти запросы. То есть мы можем задавать методы и данные которые будут в этом запросе.

    PHP: Junior Kit
    112
    Кроме ARC есть также и другое приложение – Postman, его также хорошо использовать для того чтобы тестировать запросы и создавать их, но интерфейс и управление немного сложнее чем у ARC. Но в этой книге и в этом разделе мы будем использовать именно ARC, поэтому установите данное приложение и включите его. Если кто то не знает то найти все установленные приложения в Google Chrome можно по адресу chrome://apps.
    А теперь после того как вы открыли приложение, то вы должны увидеть перед собой такой интерфейс:
    -
    Рис. 11 - Интерфейс приложения ARC в Google Chrome
    На первый взгляд выглядит сложно и немного не понятно. Но если посмотреть внимательно то можно увидеть сверху надпись Request, т.е. если перевести с английского то – запрос. На этой странице вы создаете запросы, думаю, вы заметили здесь поле Method с помощью которого мы можем задать метод для нашего запроса.
    Дальше идет URL адрес к которому мы хотим сделать запрос. А ещё дальше идет кнопка для того чтобы отправить запрос. Ниже мы уже задаем параметры запроса, а также редактируем тело запроса.

    PHP: Junior Kit
    113
    -
    Рис. 12 - Поля для создания запроса в ARC
    Как мы видим, то здесь мы можем задать заголовки нашего запроса, кроме этого добавить переменные в заголовок запроса. В нашем моем случае то что вы сейчас вы видите то это те параметры которые доступны для метода GET. Если я выберу что у моего запроса будет метод POST то здесь я уже как раз и смогу редактировать тело запроса:
    -
    Рис. 13 - Задание дополнительных параметров для запроса
    Здесь мы указывам данные которые будут передаваться через запрос, данные будут в формате языка нотации JSON. Мы можем также выбрать

    PHP: Junior Kit
    114
    и другой формат для передачи данных через запрос, но лучше использовать JSON поскольку он простой и понятный.
    Но сейчас речь не будет идти об JSON. Сейчас же мы продолжим разбираться что и как устроено в нашем интерфейсе. Думаю, вы заметили, что у нас с левой стороны есть меню. Через это меню можно просмотреть вашу историю запросов, подключить сокеты, просмотреть сохраненные запросы или проекты.
    Хорошо, а теперь пора протестировать какой-нибудь запрос с помощью РНР и этого приложения. Давайте создадим файл request.php к которому мы будем делать запросы через ARC после чего будем получать результаты на странице с нашим скриптом.
    Одной из супер-переменных, которая может служить для того чтобы взаимодействовать с HTTP является $_SERVER:
    } else if($_SERVER["REQUEST_METHOD"] == "GET")
    { echo "Метод запроса: GET";
    } else { echo "Произошла ошибка;
    }
    ?>
    Здесь в нашей логической конструкции мы хотим сделать проверку того какой метод используется в запросе. Для этого через супер- переменную $_SERVER мы обращаемся к индексу REQUEST_METHOD после чего указываем название HTTP-метода который мы хотим с вами проверить после запроса.
    Думаю я не очень понятно объяснил, поэтому я просто напишу на псевдокоде алгоритм только что написанного РНР-кода:
    Если метода запроса == POST тогда:
    Вывести надпись "Метод запроса: POST";

    PHP: Junior Kit
    115
    Иначе если метода запроса == GET тогда:
    Вывести надпись "Метод запроса: GET";
    Иначе:
    Вывести надпись "Произошла ошибка";
    Надеюсь, что алгоритм написанный на псевдокоде смог вам помочь в том что мы только что написали. А теперь сохраните этот файл под названием request.php и перейдите в приложение ARC и сделайте запрос с методом GET на этот файл. У меня формирование запроса выглядит вот так:
    -
    Р
    ис. 14 - Поле для создания запроса в ARC
    Главное чтобы вы делали запрос на адрес файла, который как раз и будет проверять тип запроса. Задайте метод для запроса GET после чего укажите точный адрес файла на который вы хотите сделать запрос, в нашем случае мы хотим увидеть результат после отправки запрос поэтому мы делаем запрос на файл request.php.
    После того отправки запроса перейдите на адрес этого файла в браузере. И в результате вы должны увидеть надпись “Метод запроса:
    GET”. Если мы поменяем HTTP-метод то получим другой результат.
    Например если мы с вами будем использовать метод POST то получим другую надпись, но если мы выберем метод который не заданный в логической конструкции то получим заданную надпись с ошибкой.
    Конечно же мы можем с вами добавить другие методы в логическую конструкцию.
    Но все таки я сделал её очень простой и наглядной, чтобы показать как работать с запросами и как они вообще работают. На этом я завершу этот подраздел ну а дальше мы с вами поговорим об использовании технологии Cookies.

    PHP: Junior Kit
    116 9.3
    PHP и Cookies
    Если кто то подумал, что сейчас вместо того чтобы учиться программировать мы будем выпекать печенье. Нет, сейчас мы будем изучать такую важную вещь как Cookies. Cookies - это данные полученные от веб-сайт на веб-сервере которые сохраняются на клиенте.
    Если пользователь снова посетит сайт который был посещен, то куки- данные будут повторно использованы.
    Простым примером работы куки(cookies) будет отображение на веб-сайте числа сколько раз был посещен сайт определенным пользователем. Данные которые были записаны в cookies, как уже говорилось сохраняются на клиенте, и сохранятся они в специальных cookies-файлах. Но кроме файлов куки могут храниться и в самом браузере.
    В основном куки используют для того чтобы хранить такую информацию как время посещения веб-сайта, информация об местонахождении и т.п. Конечно же в куки файлах можно хранить любые данные, только главное чтобы все это было в безопасности и от этого была какая то польза. Куки можно отключить в браузере, но это по желанию пользователя который посещает определенный веб-сайт.
    Хорошо, а теперь после того как я рассказал вам теорию пора вам рассказать об том как можно использовать куки на практике. Для создания куки-данных в РНР есть функция setcookie(), которая имеет 6 параметров:
    ● name - имя нашего куки файла(обязательный параметр)
    ● value - значение куки(переменной)
    ● expire - строк “годности” куки, то есть время сколько будет существовать ещё “годная” куки до того как закроется браузер.
    ● path - путь к куки-файлу
    ● domain - домен с которого был установлен куки.

    PHP: Junior Kit
    117
    ● secure - защищенная передача данных через HTTPS протокол.
    Пример создания куки:
    // Эта куки “проживет” на протяжении часа, это можно заметить посмотрев на функцию time() и на то какое значение оно получает
    ?>
    Если нам надо будет узнать значение определенной куки, то мы должны будем обратиться к индексам супер-переменной $_COOKIE, указав в названии индекса название куки к которому мы хотим обратиться:
    ?>
    А чтобы удалить куки, достаточно указать название куки и очистить её значение:
    ?>
    Конечно же это не все функции которые существуют для того чтобы работать с куки. А также я не показал что можно ещё делать с данными куки-файлов. Раньше в начале 2000-х годов некоторые веб- сайты для реализации системы регистрации и авторизации использовали куки-файлы для сохранения в них логина и пароля пользователя. Это конечно же было очень не надежной системой и тем более небезопасной.

    PHP: Junior Kit
    118
    Например, если кто то использовал такой веб-сайт, и он зашёл в свой профайл а потом вышел из него, но не удалил куки-файлы, то после этого любой мог проникнуть в куки-файлы которые хранились на данном компьютере и мог найти логин и пароль пользователя. Кроме этого злоумышленник мог взять и кучу других данных которые он мог использовать в своих целях.
    Сейчас, конечно же, для создания системы регистрации и авторизации используют другую технологию – сессии. Об этой технологии мы поговорим позже, но скажу то что она намного надежнее куки-файлов если веб-сайт имеет системы регистрации и авторизации.
    Я вам уже показал как можно работать с куки-данными, на этом я завершу этот подраздел и будем двигаться дальше изучая глубже материал и делая больше практических примеров.
    9.4 $_SERVER
    $_SERVER – это одна из супер-переменных в РНР, вы уже встречались с ней и знаете что её можно использовать для того чтобы узнать какие-то данные об запросе. Вообще это большой массив внутри которого хранятся данные о HTTP путях, заголовках запросов и размещение файлов. Внизу показан список параметров в массиве:
    ● GATEWAY_INTERFACE - информация об версии CGI, которую использует веб-сервер.
    ● SERVER_NAME - имя сервера, под которым выполняется текущий скрипт.
    ● SERVER_SOFTWARE - идентификатор сервера, который используется при передаче запросов и ответов.
    ● SERVER_PROTOCOL - протокол который использует веб-сервер, например HTTP 1.1.
    ● REQUEST_METHOD - метод который использует веб- сервер для запроса веб-страницы(GET,POST и т.д.)

    PHP: Junior Kit
    119
    ● REQUEST_TIME - время начала запроса на веб- странице.
    ● QUERY_STRING - строка запроса страницы.
    ● DOCUMENT_ROOT - корневая директория внутри которой выполняется текущий скрипт.
    ● HTTP_ACCEPT - содержание заголовка Accept внутри
    HTTP.
    ● HTTP_ACCEPT_CHARSET - выбор кодировки для веб- страницы(например utf-8).
    ● HTTP_ACCEPT_ENCODING - содержание заголовка
    Accept-Encoding, если он есть.
    ● HTTP_ACCEPT_LANGUAGE - содержание заголовка accept-language, если он есть.
    ● HTTP_CONNECTION - содержание заголовка connection.
    ● HTTP_HOST -
    Хост в HTTP заголовке.
    ● HTTP_REFER - адрес страницы которая ссылается на текущий скрипт.
    ● HTTP_USER_AGENT - строка содержащая информацию об клиенте(браузер, операционная система и т.д.).
    ● REMOTE_ADDR -
    IP адрес удаленного пользователя который обращается к данной странице.
    ● REMOTE_HOST -
    Хост с которого обращается удаленный пользователь.
    ● REMOTE_PORT -
    Порт, который используется для соединения с веб-сервером.
    ● SCRIPT_FILENAME - полный путь к текущему скрипту.
    ● SERVER_ADMIN - значение SERVER_ADMIN заданное в веб-сервере Apache.
    ● SERVER_PORT - текущий порт для передачи данных веб-сервера по HTTP.

    PHP: Junior Kit
    120
    ● SERVER_SIGNATURE - информация об версии сервера.
    ● PATH_TRANSLATED - основной путь к текущему скрипту.
    ● SCRIPT_NAME - информация об имени скрипта и пути к нему.
    ● REQUEST_URI -
    URI адрес текущей веб-страницы.
    ● PHP_AUTH_DIGETS
    - используется для аутентификации по HTTP.
    ● PHP_AUTH_USER - содержит информацию об имени пользователя авторизованного по аутентификации HTTP.
    ● PHP_AUTH_PW - содержит информацию об пароле пользователя авторизованного по аутентификации HTTP.
    ● AUTH_TYPE - содержит информацию об типе аутентификации по HTTP.
    Как видим то здесь есть много параметров которые вы можете использовать во время разработки если вам надо будет узнать какую-то информацию об веб-сервере или HTTP протоколе. На этом я хочу завершить данный подраздел, но это ещё не значит что работа с HTTP и
    PHP окончена. В этой книге мы ещё не раз будем говорить об том как
    РНР может работать в сети.
    Вопросы и упражнения для самоконтроля
    1. Какой протокол используется для передачи данных?
    2. Как осуществляется передача данных?
    3. Какие есть методы в HTTP?
    4. Для чего нужен метод POST и PUT?
    5. Что такое COOKIES?
    6. Каким способом можно проверить тип запроса в PHP?

    PHP: Junior Kit
    121 10 PHP и Базы данных
    После того как вы изучили основы РНР мы можем продолжать двигаться дальше поскольку у вас уже достаточно знаний чтобы понимать что то большее, чем просто разбираться что такое типы данных и т.п.
    Поэтому с этого раздела мы начинаем разрабатывать свои небольшие веб- приложения которые демонстрируют реальные примеры разработки, и делаем мы это для того чтобы лучше закрепить материал и понять как все работает. А также мы создадим своё родное приложение которое будет иметь функционал как у самой примитивной соц. сети.
    Как вы смогли понять, то в этом разделе мы поговорим об том как РНР работает с базами данных. Я не буду вам рассказывать весь этот материал на сухом и скучном техническом языке, а лучше покажу это на простых примерах разработки мини-приложений. Хорошо, а теперь давайте подумаем, я сказал что у мы будем с вами делать приложение которое имеет функционал похожий на самую примитивную соц. сеть.
    А значит если у нас будет что то на подобии соц. сети, то значит у нас будет большое количество данных которые нам придется где то хранить. Кроме этого у нас должны будут созданы структуры в базе данных по которым должны будут правильно храниться данные.

    PHP: Junior Kit
    122
    Но что же такое база данных? База данных как вы уже смогли понять, это место где можно хранить какие то данные. Давайте я приведу вам простую аналогию в реальной жизни.
    Аналогию с базой данных можно провести на примере большого шкафа в котором есть много полок. На полках могут быть разные предметы, полки в свою очередь можно поделить на категории.
    Например, на одних полках можно хранить книги с жанром приключений, а на других полках можно хранить предметы которые имеют красный цвет. Или можно просто сделать так чтобы на одних полках хранились просто футболки, а на других джинсы.
    Надеюсь что такая картина смогла дать вам понять как именно могут храниться данные в базе данных. Но вообще база данных это представление данных в виде таблицы, со столбцами которые в свою очередь имеют свои значения. Базы данных имеют свои таблицы, и именно в таблицах хранятся данные в виде записей. В таблицах есть столбцы которые задают параметры для записей, которые будут добавлены в таблицу.
    Например, у нас может столбец с названием записи. То есть, например названием столбца у нас будет name. Дальше можем добавить столбец который будет хранить какой-нибудь текст который будет принадлежать записи. И назовём мы этот столбец data. В результате после того как мы захотим добавить в новую запись в эту таблицу, то запись будет иметь два поля: name и data. Более наглядно это можно продемонстрировать на примере простой таблицы:
    1   2   3   4   5   6   7   8   9   ...   14


    написать администратору сайта