Как работает PHP | WebShake.RU
Приветствую! В этом уроке мы разберём, что же из себя представляет PHP, как он работает и для чего он предназначен.
Начнём с того, что программа, написанная на языке PHP, во время своей работы представляет из себя не то стандартное окошко, которое мы привыкли видеть. В абсолютном большинстве случаев эта программа работает на сервере «невидимо». То есть мы не можем управлять ею во время выполнения, но на самом деле нам это и не нужно 🙂
Дело в том, что эта программа должна принимать запрос от пользователя, сделать какие-то действия, отдать пользователю результат и после этого завершиться. И чем быстрее она отработает, тем лучше. В этом главное отличие программ на PHP от «стандартных» программ, которые постоянно висят в памяти, ждут действий пользователя и реагируют на них в режиме реального времени.
PHP не работает сам по себе. Для работы с пользователем он должен быть настроен в связке с веб-сервером, например, Nginx или Apache. Если по-простому, то пользователь отправляет запрос к веб-серверу по протоколу HTTP. Веб-сервер определяет, к какому типу файла было совершено обращение, и, если это файл с расширением .php, то веб-сервер передаёт запрос на обработку интерпретатором языка PHP, скрипт считывается, преобразуется в байт-код, выполняется и возвращает ответ веб-серверу. Веб-сервер передаёт сформированный результат пользователю. Этот результат, как правило, представляет собой динамически сгенерированную HTML-страничку.
Этот процесс можно значительно ускорить, подключив расширение-акселератор. Оно занимается тем, что кэширует получившийся байт-код, и пока файл остаётся неизменным сразу начинается его выполнение. Начиная с версии PHP 5.6 акселератор OPcache включён в дистрибутив по умолчанию.
Здесь стоит упомянуть, почему PHP так хорош для веб-разработки — он по умолчанию содержит в себе огромное число инструментов для работы с запросами, средства для работы с огромным количеством баз данных, работу с файлами. Всё это активно используется современными сайтами.
Наверное, Вы уже успели подумать о том, что для того чтобы запустить программу на PHP, Вам придётся повозиться с настройкой, ведь нужно связать его с веб-сервером. К счастью, есть готовые решения, позволяющие запустить веб-сервер с PHP за несколько минут. А современные хостинги позволяют выкладывать и запускать проекты на PHP, вообще не задумываясь, как там всё устроено. И это хорошо, ведь Вы — программист, а не системный администратор. Прошу Вас это принять, это позволит расти как программисту гораздо быстрее. Разумеется, со временем Вам придётся вникнуть в эту область, но прошу Вас не делать этого сейчас — посвятите себя программированию.
Готовое решение в качестве сервера, которое я всем советую использовать, называется OpenServer. О том, как его установить и запустить, мы поговорим в следующем уроке.
Основы работы с формами в PHP для новичков
Формы — это элементы HTML страницы, в которые пользователь может вводить данные, например, свое имя, фамилию, возраст, логин и пароль и так далее.
Эти данные затем могут быть получены в PHP и обработаны нужным нам образом.
К примеру, пользователь вводит свое имя и фамилию в форму, нажимает на кнопку отправки и введенные данные уходят на сервер в PHP. Там мы можем получить введенные имя и фамилию и, к примеру, сохранить их в базу данных.
Как сделать форму на HTML
Форма создается с помощью тега form. Этот тег имеет два важных атрибута.
Атрибут action задает адрес страницы сайта, на которую будут отправляться введенные данные. Если оставить этот атрибут пустым — форма отправится на текущую страницу сайта.
Атрибут method задает способ отправки формы. Может принимать значение GET или POST. При отправки методом GET данные из формы будут видны в адресной строке, а при отправке методом POST — не видны.
Имейте ввиду, что PHP код страницы с формой выполнится не один раз, как может показаться, а два раза — первый раз пользователь зайдет на страницу сайта, заполнит форму, нажмет на кнопку отправки, данные из формы отправятся на сервер и PHP код страницы начнет выполнятся сначала.
Поля формы
Внутри тега form можно располагать различные элементы формы: поле ввода input, кнопку отправки формы, многострочное поле ввода textarea и некоторые другие элементы, которые нам пока не нужны.
Пример формы
<form action="" method="GET">
<input type="text" name="user"><br><br>
<textarea name="message"></textarea><br><br>
<input type="submit">
</form>
Как получить данные из формы в PHP
Мы можем получить данные, которые ввел пользователь в форму, в PHP коде. Это делается с помощью глобальных массивов $_GET, $_POST, $_REQUEST.
В $_GET будут лежать данные, отправленные методом GET, в $_POST будут лежать данные, отправленные методом POST, а $_REQUEST — данные, отправленные и тем, и другим методом одновременно.
Как именно это делается: пусть в форме есть инпут с атрибутом name=»user». Тогда после отправки этой формы мы можем получить данные из этого инпута таким образом: $_GET[‘user’] (или $_POST[‘user’], или $_REQUEST[‘user’]
Сохраняем значения полей формы после отправки
Давайте сделаем так, чтобы при отправке формы не стирались значения из инпутов:
<form action="" method="GET">
<input type="text" name="user" value="<?php echo $_REQUEST['user']; ?>">
<input type="submit">
</form>
Пример выше будет генерировать предупреждение PHP при первом заходе на страницу — в случае, когда отправка формы еще не была сделана. Исправим это:
<form action="" method="GET">
<input name="user" value="<?php if(isset($_REQUEST['user'])) echo $_REQUEST['user']; ?>">
<input type="submit">
</form>
Дополнительные материалы
Рекомендую посмотреть видео из заочного курса: скачайте его по данной ссылке.
Что вам делать дальше:
Приступайте к решению задач по следующей ссылке: задачи к уроку.
Когда все решите — переходите к изучению новой темы.
PHP: работа с базой данных MySQL
База данных – это инструмент, который позволяет хранить и обрабатывать контент сайта, т.е. все медийные материалы, которые показываются пользователю в браузере. С помощью СУБД осуществляется выборка, добавление, удаление и изменение данных. Также с использованием базы данных с легкостью решаются такие задачи как поиск по сайту, разбиение на страницы, регистрация и авторизация пользователей. Именно поэтому в основные инструменты веб-разработчика включается СУБД.MySQL — это популярная реляционная клиент-серверная СУБД, используемая в разных приложениях. Стандартным языком управления реляционных баз данных является SQL. SQL означает язык структурированных запросов (Structured Query Language), который MySQL использует для коммуникации с другими программами. Сверх того, MySQL имеет свои собственные расширенные функции SQL для того чтобы обеспечить пользователям дополнительный функционал.
Любая программа на языке PHP, которая собирается работать с MуSQL базой данных, должна состоять из следующих обязательных базовых шагов:
2. Выбрать базу данных для работы.
3. Посылать команды MYSQL серверу и получать ответы.
4. Обработать результаты.
5. Закрыть связь с MySQL сервером.
Реализовать эти действия можно несколькими способами:
1. Используя стандартные классические функции обращения к БД MySQL.
2. Используя современные функции из расширения mysqli для версий начиная с PHP 5 и MySQL 4.1.
3. Используя классы и методы из расширения mysqli для версий начиная с PHP 5 и MySQL 4.1.
Рассмотрим на примерах как реализуется доступ к БД MySQL каждым из указанных способов.
Классический доступ к БД MySQL
<?php /* Переменные для соединения с базой данных */ $hostname = "localhost"; $username = "user"; $password = "password"; $dbName = "world"; /* создать соединение */ mysql_connect( $hostname, $username, $password) or die( "Не могу создать соединение "); /* выбрать базу данных. Если произойдет ошибка - вывести ее */ mysql_select_db($dbName) or die(mysql_error()); /* Выполнить запрос. Если произойдет ошибка - вывести ее. */ $result = mysql_query( 'SELECT Name, Area FROM Country ORDER BY Area DESC LIMIT 5') or die(mysql_error()); echo "Пять крупнейших стран мира: <br>"; /* Выборка результатов запроса */ while( $row = mysql_fetch_assoc($result) ){ echo $row['Name']." с площадью ". $row['Area']." км<sup>2</sup>.<br>"; } /* Освобождаем используемую память */ mysql_free_result($result); /* Закрываем соединение */ mysql_close(); ?>
Современное подключение к БД MySQL
Использование функций из расширения mysqli ускоряет большинство операций доступа к БД, иногда достигая 40-кратного увеличения производительности по сравнению с классическим методом. Также повышена безопасность работы с данными и добавлены новые функции.
<?php /* Подключение к серверу MySQL */ $link = mysqli_connect( 'localhost', /* Хост, к которому мы подключаемся */ 'user', /* Имя пользователя */ 'password', /* Используемый пароль */ 'world'); /* База данных для запросов по умолчанию */ if (!$link) { echo "Ошибка подключения к базе данных. Код ошибки: ".mysqli_connect_error(); exit; } /* Посылаем запрос серверу */ if ($result = mysqli_query($link, 'SELECT Name, Area FROM Country ORDER BY Area DESC LIMIT 5')) { echo "Пять крупнейших стран мира: <br>"; /* Выборка результатов запроса */ while( $row = mysqli_fetch_assoc($result) ){ echo $row['Name']." с площадью ". $row['Area']." км<sup>2</sup>.<br>"; } /* Освобождаем используемую память */ mysqli_free_result($result); } /* Закрываем соединение */ mysqli_close($link); ?>
Подключение к БД MySQL с использованием классов и методов
Объектно-ориентированный интерфейс предоставляет немного более лаконичный и менее восприимчивый к ошибкам способ подключения к базе данных.
<?php /* Подключение к серверу MySQL */ $mysqli = new mysqli('localhost', 'user', 'password', 'world'); if (mysqli_connect_errno()) { echo "Ошибка подключения к серверу MySQL. Код ошибки:".mysqli_connect_error(); exit; } /* Посылаем запрос серверу */ if ($result = $mysqli->query( 'SELECT Name, Area FROM Country ORDER BY Area DESC LIMIT 5')) { echo "Пять крупнейших стран мира: <br>"; /* Выбираем результаты запроса: */ while( $row = $result->fetch_assoc() ){ echo $row['Name']." с площадью ". $row['Area']." км<sup>2</sup>.<br>"; } /* Освобождаем память */ $result->close(); } /* Закрываем соединение */ $mysqli->close(); ?>
Использование шаблонов запросов при обращении к базе данных
Подготовленные выражения или шаблоны предоставляют разработчикам возможность создавать запросы, которые являются более безопасными, имеют более высокую производительность и более удобны в написании.
Процесс работы с шаблонами таков:
1. Подготовить для сервера MySQL шаблон запроса с параметрами.
2. Привязать переменные PHP к параметрам в заготовке запроса.
3. Дать команду серверу на выполнение запроса.
4. Запросить получение нового ряда данных в указанные переменные.
<?php /* Подключение к серверу MySQL */ $mysqli = new mysqli('localhost', 'user', 'password', 'world'); if (mysqli_connect_errno()) { echo "Ошибка подключения к серверу MySQL. Код ошибки:".mysqli_connect_error(); exit; } /* Подготовленное выражение */ if ($stmt = $mysqli->prepare("SELECT Name, Area FROM Country WHERE Area < ? LIMIT 5")) { $stmt->bind_param("i", $area); $area = 100000; $stmt->execute(); /* Объявление переменных для заготовленного выражения*/ $stmt->bind_result($col1, $col2); /* Выборка значений */ while ($stmt->fetch()) { echo $col1." с площадью ".$col2." км<sup>2</sup>.<br>"; } /* Закрытие выражения */ $stmt->close(); } /* Закрытие подключения */ $mysqli->close(); ?>
Вступительный урок. Что нужно для начала работы с PHP
В этом вводном уроке я познакомлю вас с нужными программами и расскажу, что нужны для роботы с PHP.
Что нужно знать
Перед началом изучения PHP, я бы порекомендовал вам изучить HTML.
Также нужно знать как записывается PHP. В файле, PHP скрипт начинается со слова — <?php и заканчивается на ?>. Все, что между <?php и ?> это PHP код, запомните это.
Файлы, в котором записан PHP код нужно сохранять под расширением .php
Для того чтобы научится PHP (как и любому другому языку программирования) важно много практиковаться.
Когда вы будете читать уроки, то не копируйте код, а именно пишите сами, так будет лучше для Вас, так Вы быстрее запомните сам язык, и вам будет легче дальше.
Программное обеспечение
Первая программа, которая вам нужна, это браузер (то, в чем Вы сейчас находитесь :D)
Веб-сервер. Для локального тестирования вам нужно установить веб-сервер. Я рекомендую поставить Open Server (Mini версии будет достаточно). Как установить Open Server. Open Server является портативным, т.е. вам нужно только разархивировать скачанный архив и запустить сервер через Open Server.exe. После старта программы вы увидите красный флажок в трее Windows (область возле системных часов). Чтобы включить непосредственно сам веб-сервер нажмите на флажок, далее выберите пункт меню Запустить.
Чтобы создать новый домен вам нужно перейти в папку OpenServer/domains и создать папку с подходящим для вас названием, после создания новой папки нужно перезагрузить веб-сервер (нажать на флажок в трее, нажать Перезагрузить). После чего вы сможете получить доступ к своему локальному домену по адресу http://yourdomain
Убедитесь, что в Open Server есть права на редактирование Windows hosts файла. Некоторые антивирусы могут блокировать доступ к этому файлу. В противном случае, вы не сможете создать локальные домены.
Последняя программа, которая потребуется, это блокнот, он нужен для редактирования PHP кода. Но, я рекомендую поставить вам Notepad++ или Sublime Text, это лучше чем использовать обычный блокнот Windows.
После уроков
После уроков, крайне важно не останавливаться только на одном учебнике, я рекомендую вам еще почитать книги о программировании на PHP, почитать статьи и т.д. После учебников рекомендую написать какой-то свой маленький веб-сайт или сервис, при написании которого вы столкнетесь с проблемами, которые будете решать и одновременно учиться.
Первый урок
Если вы уже установили все необходимое программное обеспечение, то можете переходить к первому уроку
Учим PHP: Основы и принцип работы
Доброго времени суток, codeby.Я сейчас всё чаще и чаще вижу негатив в сторону PHP, но многие закрывают глаза на то, что PHP невероятно сильно улучшился за последние годы и умирать он точно не собирается. Перед тем как разобраться что же такое PHP и понять области его применения, нам необходимо разобрать и понять принцип работы интернета, а также протоколов.
1.1. Принцип работы Интернета
Сама сеть «Интернет» представляет собой множество
Скрыто от гостей
, которые соединены друг с другом с помощьюСкрыто от гостей
а также спутниковыми каналами и так далее. Однако, думаю почти всем известно и понятно то что одних кабелей и радиоволн для передачи информации недостаточно. Чтобы обеим сторонам осуществлять передачу информации, им необходимо придерживаться каких-нибудь правил, соглашений которые как раз и позволят нам осуществлять передачу данных и гарантировать её доставку. Набор правил и соглашений называетсяСкрыто от гостей
.1.2. Протоколы передачи данных
Для разных целей существуют различные протоколы. Нам не нужно иметь представление и понимание о каждом из них, в нашем случае нам будет достаточно знать лишь о тех, которые мы будем использовать в Web. Один из таковых является
Скрыто от гостей
, а если быть более точнымСкрыто от гостей
, который базируется на протоколе TCP. Протокол http используетсяСкрыто от гостей
иСкрыто от гостей
При отправке запроса клиентом (браузером) пользователя на определённый веб-сервер для получения ресурсов (изображения, файлы и т.д.) которые обозначаютсяСкрыто от гостей
адресами. В ответ веб-сервер отправляет клиенту данные которые он запросил. Сама передача этих данных осуществляется с помощью протокола HTTP. Давайте рассмотрим схему для того чтобы лучше понять как это работает.Схема Исходя из приведённой схемы можно понять, что на самой схеме указано направление передачи данных стрелками. Каждый из протоколов ничего не знает о том какой протокол стоит над ним (да-да между ними существует иерархия). Как пример, протокол TCP даже не знает о существовании протокола HTTP, а его в свою очередь понимает как браузер так и веб-сервер.
3. Семейство TCP/IP
Вот уже много-много лет основным протоколом Интернета является — TCP. Протоколы TCP и IP сильно связаны и поэтому принято объединять их в одну группу под названием «Семейство TCP/IP», на самом деле в эту группу входит также протокол
Скрыто от гостей
, но в прочем это уже совсем другая история. Основные особенности и преимущества протокола TCP (коротко):- Корректная доставка данных до места назначения.
- Протокол TCP/IP устроен так, что он выбирает оптимальный путь распространения сигнала между обеими сторонами.
- При передаче данных они разбиваются на фрагменты — пакеты, которые доставляются вместо назначения по отдельности.
Скрыто от гостей
Здесь я решил оставить ссылку на статью, все предыдущие пункты и в принципе весь текст в данной статье я писал сам из головы, опираясь на свои знания и понимание работы.
1.5. IP-адрес
Любой машине, которая подключена к сети Интернет, а также желает производить обмен и передачу информации с другими машинами, должна иметь некое уникальное имя или же IP-адрес. Здесь можно было бы ещё много чего написать про стандарты ipv4, а также ipv6, но само собой в одну статью это не влезет и я считаю что лучше прочитать всеми нашу любимую
Скрыто от гостей
1.6. Заключение первой части статьи
Конечно в первой части статьи можно было ещё написать и про версии протокола IP,
Скрыто от гостей
,Скрыто от гостей
про порты и основную терминологию, но я считаю что данной краткой информации уже хватит, чтобы начать писать код на PHP, ведь в любом случае во время изучения PHP или же при работе с веб-ресурсами вы столкнётесь с доменными именами и так далее.Очередное небольшое отступление перед тем как приступить к самому PHP. Стоит понимать что в интернете есть 2 типа веб-сайтов:
- Статические (Это сайт состоящий из HTML файлов, без использования базы данных и без какой-либо функциональности).
- Динамические (Это сайты которые чаще всего динамически генерируют страницы на стороне сервера).
PHP (от англ. Hypertext Preprocessor) — это
Скрыто от гостей
(Cи-подобный) язык программирования, который изначально создавался для генерации HTML-страниц и назывался Personal Home Page Tools — «Инструменты для создания персональных веб-страниц» ) но он эволюционировал и стал языком общего назначения. Сам PHP являетсяСкрыто от гостей
. Это означает то что написанные на нём программы или как их иногда называют «скрипты» сначала переводятся в байт-код при этом проверяя синтаксис ну и затем PHP выполняет этот самый байт-код. Из этого можно сразу сделать вывод, что просто в блокноте писать PHP код как в случае с HTML не выйдет, ну оно то выйдет, но без самого PHP это соответственно работать не будет. Поэтому нам необходимо, для того чтобы начать писать код на PHP, нам необходимо «создать» свою среду разработки, а именно:- Выбрать
Скрыто от гостей
или жеСкрыто от гостей
(для начала я бы посоветовалСкрыто от гостей
, а для серьезных проектов и что использую лично я в повседневной жизни —Скрыто от гостей
- Локальный сервер, я рекомендую использовать
Скрыто от гостей
потому что он позволяет легко настраивать необходимые модули, а также имеет поддержку последних версий PHP.
Скрыто от гостей
. Это значит что нам не нужно самим присваивать тип данных переменной. Таким образом, тип данных определяется не при объявлении самой переменной, а при присваивании самого значения.2.2. Пишем Hello World!
Начнём с правила объявления переменных в PHP. Имена всех переменных в языке PHP должны начинаться со знака доллара $, имена переменных не должны содержать кириллицу, а также названия переменных чувствительны к регистру.
PHP:
<?php
$codeby = 'codeby.net';
$codeBY = 'codeby.net';
Переменная $codeby и $codeBY в PHP являются разными так как выше я упомянул то что чувствительны к регистру, хотя и имеют одинаковый тип данных.Как и в любом другом языке, переменная занимает область в оперативной памяти, а доступ к ней осуществляется с помощью ее имени.
В PHP знак равно ( = ) присваивает значение переменной, забегая вперед в условиях нужно использовать == (2 равно) для проверки определенного значения, либо строгое (===).
Давайте выведем Hello World! на экран, делается это с помощью конструкции языка
Скрыто от гостей
PHP:
<?php
echo 'Hello World!';
Давайте разберем наш код1) Даем понять интерпретатору и что мы будем писать PHP код, можно использовать более короткий вариант <?, но он будет работать на тех веб-серверах, где включена функция short_open_tag (не забываем что имя расширение файла должно быть php).
2) Мы написали языковую конструкцию echo, которая принимает в себя определенные аргументы.
3) Мы заключили текст в одинарные кавычки, это означает то что тип данных str (string) строка.
4) Мы написали (точку с запятой), для того чтобы завершить инструкцию читаем ->
Скрыто от гостей
Теперь давайте напишем следующий код:
PHP:
<?php
echo 'Hello World!';
echo "Hello World!";
Эти 2 строки имеют одинаковый тип данных string. Но как я думаю вы уже заметили на 3-ей строке одинарные кавычки, на 4-ой двойные кавычки. Отличие этих двух строк в том, что если мы объявим переменную codeby с типом integerИ захотим отобразить значение переменной, то в случае 5-ой строки у нас на экране отобразится название переменной, а в случае с 6-ой строкой — значение. Это можно сделать с помощью
Скрыто от гостей
объединив Hello World с нашей переменной прямо внутри echo. Но в нашем случае мы можем просто вставить название нашей переменной в строку.PHP:
<?php
$codeby = 1;
echo 'Hello World!$codeby';
echo "Hello World!$codeby";
Так как я пишу в PHPStorm, а это достаточно умная IDE. Она уже подсвечивает переменную в 6 строке т.к. — это верно, а в 5 мы можем заметить что переменная не подсвечивается (если что это называется подсветка синтаксиса).Давайте посмотрим что мы увидим на сайте:
Также их отличие в том, что когда интерпретатор будет «смотреть» код, он выведет 5 строку на экран быстрее чем в 6, потому что он не будет её обрабатывать, а выведет сразу как строку. А в случае со строкой с двойными кавычками, интерпретатор PHP будет думать что внутри какая-то переменная и будет обрабатывать данную строку, а не выводить не думая.
Итог
Мы познакомились с основами работы сети Интернет, поняли зачем и для чего нужен язык PHP, разобрались с тем как объявлять переменные и базовые основы синтаксиса. В следующей части мы разберем типы данных, строковые операции, конкатенацию строк и не только.