Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
info
__________________________________________________________________
1
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
ВНИМАНИЕ!
Опубликовано:
ООО «Арнион Центр»
Проект Константина Шереметьева
Автор Константин Шереметьев
Сайт: www.sheremetev.info
E-mail службы поддержки: zakaz@sheremetev.info
2
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Содержание
Введение ............................................................................................5
1. Основы языка PHP ...........................................................................6
1.1 Установка среды PHP-express ........................................................6
1.2 Технологии Интернета ..................................................................9
1.3 Протокол HTTP ........................................................................... 13
1.4 Язык разметки HTML .................................................................. 17
1.5 Минимальная программа на PHP .................................................. 21
1.6 Модель языка PHP ...................................................................... 23
2. Функции и типы данных ................................................................. 26
2.1 Ключевые особенности PHP ........................................................ 26
2.2 Переменные и функции .............................................................. 29
2.3 Сборка веб-страницы ................................................................. 33
2.4 Использование функций в PHP .................................................... 36
2.5 Типы данных ............................................................................. 40
2.6 Массивы .................................................................................... 48
3.Разработка программ ...................................................................... 53
3.1 Структура проекта ..................................................................... 53
3.2 Константы и операторы .............................................................. 60
3.3 Язык описания стилей CSS ......................................................... 66
3.4 Основы верстки ......................................................................... 71
3.5 Работа со строками .................................................................... 75
3.6 Работа с файлами....................................................................... 79
4. Основы MySQL .............................................................................. 82
4.1 Взаимодействие PHP и MySQL ..................................................... 82
4.2 Язык запросов SQL ..................................................................... 85
4.3 Менеджер БД phpMyAdmin .......................................................... 89
4.4 Реляционные базы данных.......................................................... 93
4.5 Работа с объектами MySQL .......................................................... 97
4.6 Работа с датой и временем ....................................................... 105
5. Работа с посетителями сайта ........................................................ 110
5.1 Как анализировать посетителя сайта ......................................... 110
5.2 Хранение данных о посетителе ................................................. 114
5.3 Сессии..................................................................................... 118
5.4 Регистрация посетителей .......................................................... 123
5.5 Организация работы с паролями ............................................... 128
5.6 Администрирование сайта......................................................... 132
6. Графическая библиотека GD ........................................................ 135
6.1 Проверка наличия GD............................................................... 135
6.2 Графические примитивы ........................................................... 139
6.3 Текст и трансформации ............................................................ 141
6.4 Работа с графическими файлами ............................................... 144
3
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
6.5 Трансформация изображений.................................................... 147
6.6 Совмещение изображений ........................................................ 149
7. Разработка веб-сервиса ............................................................... 152
7.1 Регистрация на хостинге ........................................................... 152
7.2 Знакомство с хостингом ............................................................ 154
7.3 Перенос проекта на хостинг ...................................................... 157
7.4 Реализация проекта ................................................................. 159
7.5 Развитие проекта ..................................................................... 161
7.6 Развитие профессионализма ..................................................... 164
Заключение .................................................................................... 167
4
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Введение
Здравствуйте! Меня зовут Константин Шереметьев, и мы начинаем курс
«Программирование на PHP и MySQL». Сейчас я кратко расскажу о том,
что же будет в курсе, и что будем изучать.
5
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
1. Основы языка PHP
1.1 Установка среды PHP-express
Продолжаем наш курс «Программирование на «PHP и MySQL». Сейчас у
нас глава 1 «Основы языка PHP».
6
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
7
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
8
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
1.2 Технологии Интернета
В этом уроке нам нужно понять, какое место наша технология «PHP
MySQL» занимает в развитии интернета.
9
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Итак, всемирная паутина, или World Wide Web (WWW), – это система
размещения гипертекстов с общемировым доступом. С точки зрения
всемирной паутины, когда вы что-то выкладываете в интернет на сайт,
то это называется гипертекстом. Почему? Потому что в этом тексте есть
ссылки, по которым можно переходить на другие сайты. И вот язык PHP
позволяет эти гипертексты создавать динамически, т.е. этот гипертекст
появляется и создается при обращении к сайту.
10
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
доступен. Выделенное место находится на компьютере провайдера, а сам
процесс выделения места называется хостингом.
Как же нам находить эти сайты, как же нам к ним обращаться? Есть
понятие IP-адрес. Каждый узел в интернете имеет свой IP-адрес,
который уникален в переделах интернета. Он состоит из 4-х чисел,
разделенных точками, каждое из которых меньше 256, Например,
112.53.34.77. Но это адрес внешних узлов, когда вы набираете этот
адрес в интернете, то вы попадаете на какой-то внешний узел. Внутри
этого узла могут быть свои IP-адреса. Вы должны понимать, что, как
правило, хостинг на одном IP-адресе размещает тысячи сайтов. И только
в том случае, если у вас выделенный сервер (что, естественно, намного
дороже), то по конкретному внешнему IP-адресу вы получаете ваш
конкретный сайт. Обычно это не так. Те сайты, которые мы будем на
этом курсе делать, будут размещены на одном IP-адресе.
11
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
#а – признак закладки
i – имя закладки.
12
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
1.3 Протокол HTTP
Данные в интернете передаются по специальным протоколам.
13
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
бороться PHP-программисту. Но здесь нужно пояснить, почему так
сделано.
14
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Сразу скажу, что на самом деле таких комплектов бывает много, но так
как они все содержат, по сути, одно и то же ядро (Apache, MySQL, PHP),
то они отличаются только какими-то дополнительными возможностями.
Опять же, с точки зрения нашего курса нам от веб-сервера особо ничего
не надо, нам нужно только, чтобы он содержал Apache, MySQL и PHP.
Собственно, мы с ним и будем работать.
15
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
16
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
1.4 Язык разметки HTML
Прежде чем мы приступим к программированию на PHP, нам нужно
понять 3 технологии, которые лежат в основе всемирной паутины. Мы
рассмотрели URL (адрес, по которому находятся сайты), протокол HTTP,
по которому происходит обращение к сайтам. И последняя технология –
это язык разметки HTML.
Что это такое? HTML (HyperText Markup Language) – это язык разметки
гипертекста, в котором блоки текста обрамляются тегами. Нужно понять,
почему вообще возникла необходимость в этом языке. Так как текст в
интернете передается последовательно, то язык HTML позволяет
отображать текст сразу после того, как передался некоторый фрагмент
текста, завершающий тег прошел, и браузер может отобразить этот
фрагмент текста. Мы можем последовательно отображать весь текст на
экране браузера.
17
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
18
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
<title> – заголовок страницы; он отображается на вкладке браузера
(чуть позже мы это увидим);
<body> – это тело страницы;
<p> – тег параграфа, внутри которого мы написали какой-то текст.
19
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
подчеркивание, смещение влево, вправо, и т.д. Вы можете спокойно что-
то писать, как в обычном текстовом редакторе, а потом получать код,
который вам нужен. В следующем уроке мы посмотрим, как пишется
программа на PHP.
20
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
1.5 Минимальная программа на PHP
Мы уже знаем достаточно, для того чтобы начать писать на PHP.
21
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
доступна для последующих операционных систем: BSD, Linux, Mac OS X,
Solaris и Windows. Поэтому в курсе мы будем использовать «Geany». Но
если вы по каким-то причинам уже работает в «Notepad++», то можете
использовать его, потому что с точки зрения движка они идентичны.
Смотрите, что вам нужно будет сделать. Сам «Geany» находится в папке
«Prog\Geany». Запускаете «GeanyPortable», затем копируете сюда текст,
который у вас есть на экране, сохраняете его в папку «www\Site2» с
именем «index.php». Теперь мы переходим в браузер и видим, что
появилась папка «Site2». Заходим сюда и видим: «Сегодня – 09-11-
2018». Давайте что-то поменяем. Пишем: «Вывод даты». Нажимаем
«Сохранить», затем переходим сюда и нажимаем «F5» (обновить). Вот у
нас появился вывод даты. Разработка на PHP ведется таким образом: в
редакторе «Geany» мы что-то правим, переключаемся на браузер и
обновляем страницу.
22
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
1.6 Модель языка PHP
Этот урок важен, постарайтесь его понять, потому что от этого урока
зависит ваша производительность как PHP-программиста.
24
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Например, если верстальщик написал: «Вывод даты». И дальше говорит,
что вот здесь будет какая-то функция (здесь в коде мы просто вставим
какую-то функцию, например, под названием «Дата»). И верстальщик
говорит: «Мне без разницы, как ты ее здесь выведешь, мне только
нужно, чтобы дата была вот здесь, и всё». И программисту тоже без
разницы, где будет вызываться его код, он просто выводит свой
динамический фрагмент. Таким образом, одновременная работа
верстальщиков и программистов позволяет делать достаточно хорошие,
классные сайты, что невозможно делать на других языках.
И хорошая новость для тех, кто знает язык Си: язык PHP написан на
языке Си и много элементов взял из языка Си. Поэтому если вы знаете
Си, то выучить PHP вам будет достаточно просто. Подробное описание
языка будет уже в следующей главе.
25
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
2. Функции и типы данных
2.1 Ключевые особенности PHP
Здесь пару слов нужно сказать о языке PHP.
26
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
функциональный подход (код пишется в виде «y = f(x);» (это
совпадает с языком Си);
отсутствует типизация, тип переменной устанавливается по
контексту (это что-то новенькое, мы об этом поговорим);
и самая экзотическая часть PHP заключается в том, что исходный
код программы на PHP располагается прямо на веб-странице.
Как вы помните, тег <p> – это параграф. В языке HTML идет, что «Здесь
нет PHP», затем включается командой «php» ваша программа, затем она
закрывается, и «Опять нет PHP».
<?php
print “Начало”; // Однострочный комментарий /*
Первая строка комментария
Вторая строка комментария
*/
print “Конец”; # Комментарий в стиле Unix
?>
27
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Переходим в «Geany» и видим, что у нас сейчас есть текст урока 2.2 –
всё нормально. Переходим на сайт localhost и видим, что UwAmp
работает, и «Site3» у нас здесь есть.
После того, как вы подготовились к уроку, ваша задача – подготовиться
к следующему уроку, а именно к уроку 2.2, и для этого нам потребуется
сайт №3.
28
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
2.2 Переменные и функции
В основе языка PHP (и это достаточно сложная тема в языке PHP) –
переменные.
29
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
30
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Для чего это чаще используется? Например, вам нужно внутри вашей
PHP-программы подготовить текст договора, который потом появится на
экране браузера. Конечно же, самый простой способ – это текст
договора вывести в таком режиме документа, а там, где идут название
организации, реквизиты – подставить их через переменную. Это само
часто используемый случай.
31
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
окончательное значение. Функции могут не иметь входных параметров
или аргументов, и возвращаемых значений.
32
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
2.3 Сборка веб-страницы
Сейчас мы рассмотрим достаточно сложную схему языка PHP, которая
непривычна для других языков. Ее надо знать очень хорошо, потому что
если вы хорошо владеете этой схемой, то работа с PHP для вас будет
удовольствием.
33
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Есть еще один момент именно для отладки таких вещей – просмотр когда
страницы.
34
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
35
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
2.4 Использование функций в PHP
Само по себе использование функций в языке PHP достаточно
стандартное, точно так же, как в языке Си функция используется как
«черный ящик». Программисту совершенно неважно, что внутри
функции, какая реализация функции, а его интересует только какие
аргументы на входе, и какое возвращаемое значение у этой функции.
36
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
прежде чем писать функцию, которая вам нужна, сначала посмотреть,
возможно, уже существует готовая функция.
37
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
38
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
прямо в файле «index.php». Это часто применяется, потому что, как
правило, часть страниц отдается верстальщикам, и они знают, что есть
помеченные места, которые трогать не надо. И дальше выполняет
верстку, сохраняя ваши вставки. А программист занимается
исключительно реализацией функций, и в каком дизайне будет
выводиться эта функция, ему особо неважно. Поэтому, как правило,
файл с веб-страницей открыт у верстальщика, а файл «main.php» (с
определениями функций) открыт у программиста. Также у него есть
тестовый файл, который он запускает для того, чтобы протестировать
функции.
39
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
2.5 Типы данных
Так как PHP не имеет строгой типизации, то программист должен хорошо
понимать работу с типами и постоянно следить за правильностью
использования типов. Конечно, если программист приходит с языка Си,
где компилятор очень часто подсказывает ошибки при неправильности
типов, то в PHP этого нет, поэтому это отдельная забота PHP-
программиста – следить за типами.
Логический тип.
40
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Тип Boolean имеет всего 2 значения: TRUE (истина) и FALSE (ложь). Эти
2 значения являются константами и регистронезависимы, их можно
писать как большими буквами, так и маленькими. Итак, вот запись, в
результате которой PHP присвоит логический тип: «$found = TRUE».
Соответственно, после этой строчки «found» будет иметь логический тип.
Или «$error = FALSE». Логический тип обычно используется в условном
операторе. Как? Есть оператор «if» (если), в скобках условие
проверяется, и если это условие истина, то выполняется один блок (в
данном случае будет написано слово «Найдено»). Есть ключевое слово
«else» (иначе); и если это условие ложное, то будет выполнен блок
после слова «else» (здесь будет написано «Не найдено»). Вот таким
образом задается логический тип.
Целый тип.
41
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
«$b = -6;», то PHP присвоит целый тип. Кроме того, можно записывать
числа в других системах счисления. Для восьмеричного числа нужно,
чтобы число начиналось с 0, для двоичного, чтобы число начиналось с
0b, и для шестнадцатеричного число должно начинаться с 0x. Возможно,
у вас есть вопрос, для чего в браузере шестнадцатеричные числа. Есть,
например, способ задания цветов, который использует как раз
шестнадцатеричные числа, это иногда полезно.
Строки.
42
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
на программу (напомню, что в Си 0 завершает строку), поэтому строки
можно использовать для хранения бинарных данных. При этом
максимальный размер строки составляет 2 Гб, но по умолчанию на PHP-
скрипт выделяется всего 128 Мб, что, конечно, значительно меньше.
Пустой тип.
43
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
распространенная практика PHP-программиста – получить какое-то
значение переменной, использовать его, а затем это значение удалить,
чтобы оно не занимало память.
Объекты.
44
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
В частности, при программировании системы «WordPress» (это самая
распространенная CMS для создания сайтов) оно не используется. Но
для решения этой проблемы существует направление PHP-
программирования – фреймворки, и они решают проблему «водопада»,
потому что они уже содержат в себе базовые классы. Таким образом,
программист может их брать и сразу наследовать.
Ресурсы.
45
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
«html» со вставочками «php», и для каждой вставочки у нас имеется
соответствующая функция. В конце мы с помощью «require_once»
добавляем «footer». Это уже мы знаем.
46
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
комментарий, и у нас в данном случае форматный вывод либо «f», либо
«e». Нажимаем, обновляем, и вот мы получили форматный вывод так,
как нам нужно.
47
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
2.6 Массивы
Мы выделили в отдельный урок этот тип данных, потому что понятие
массива отличается от языка Си. В PHP массив – это упорядоченное
отображение, которое устанавливает соответствие между ключом (key) и
значением (value).
48
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
49
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
массива будет другой массив. Получается двумерный массив. И в данном
случае каждый массив является нумерованным, мы не задали никаких
ключей. Таким образом, мы записали, и мы фактически с помощью этой
записи задали некоторые таблицу: название марки машины, год выпуска
и цвет машины. При этом для доступа к этому нумерованному массиву
мы должны указать строку и столбец каждого значения. В данном
случае, «[0][0]» у нас будет «Мерседес», «[0][1]» – «2017», «[0][2]» –
«черный».
50
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
сам HTML-код, здесь комментарий выглядит вот так. И поэтому если мы
сейчас откроем «Урок 2.6», то мы увидим заголовок массива, и дальше –
3 заголовка, и работает у нас пока только первый. Давайте посмотрим,
что такое «ShowArray».
51
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Если мы возьмем вот этот код (на самом деле это абсолютно нормально
работающий код), то что произойдет в этом коде? В этом коде PHP, видя,
что у нас есть арифметическое действие, преобразует это строковое
значение в числовое (у нас при этом получится 10) и умножит это на 5.
И, таким образом, переменная «a» получит значение целого числа 50.
52
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
3.Разработка программ
3.1 Структура проекта
Мы посмотрим, какие же подходы применяются, для того чтобы
эффективно разрабатывать PHP-программы.
Тут нужно понимать, что такое 128 Мб. Во-первых, это очень мало, а во-
вторых, это в целом на скрипт. Это значит, что если у вас есть один
массив на 100 Мб, то уже второй массив вы завести не сможете. Дальше,
ограничения по скорости работы скрипта – это тоже очень мощное
ограничение, потому что есть комфортное время отображения страницы
– где то 1 секунда, и это касается вообще любых программ, не только
браузеров.
53
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
долго работать. И вот в частности «Framework», которые идут по пути
именно таких больших, глобальных систем, их не очень любят уже
конечные пользователи, потому что долго открываются страницы, но их
и не любят поисковые системы, потому что поисковые системы тоже
проверяют скорость открытия страниц.
54
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
И в качестве иллюстрации давайте посмотрим «Word Press», как самую
популярную систему управления сайтом. У «Word Press» есть одно
колоссальное достоинство. Если вы перейдете на сайт «Word Press» и
нажмете «Получить WordPress», вы можете совершенно спокойно
бесплатно скачать «Word Press» (исходный код доступен) и посмотреть,
как вообще устроен самый популярный проект на PHP. И если вы
скачаете и откроете, то вы увидите, что в данном проекте, во-первых,
есть индекс PHP (это понятно, с этого всё начинается), во-вторых, есть
какие то скрипты в корневой папке, и есть три важных папки. Смотрите,
за что они отвечают.
languages – переводы
plugins – плагины
themes – темы
uploads – медиа-файлы (фотографии, аудио- и видеофрагменты),
которые отображаются на сайте.
55
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
невозможно (точнее, построить-то возможно, но она будет очень
медленно работать), это привело к тому, что вместо единой большой
программы используют следующие технологии. PHP-сервис (вип-сервис
на PHP) представляет собой небольшое ядро и набор юнитов.
Что такое юнит? Юнит – это часть программы, которую можно включить
и выключить без влияния на работоспособность программы в целом.
Причем, если юнит разработан внешним разработчиком, то он
называется «плагин». И, кстати, скажу вам, уже как PHP-программист, с
точки зрения того, где искать работу: одним из популярных направлений
PHP программирований является разработка как раз плагинов для других
веб-сервисов. Специальные требования, как разработать плагины, и вы
просто пишите ту же самую PHP-программу, но вы пишете ее
применительно к некоторому другому сервису. Это сейчас очень сильно
востребовано. В частности, плагины для «Word Press» – это большая
отрасль программирования.
56
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
пишем имя «input text», размер и имя нашего вида данных, и дальше
«submit» – это кнопка, на которой будет надпись «ok».
Наша задача сейчас – открыть «Site8», где у нас урок 3.1, и давайте
посмотрим, как устроена форма. Сейчас здесь чистый HTML, и мы
разбираемся с методом «get». Мы написали «form», вызывающий
«hello1.php». И введем какие-то значения. Теперь давайте посмотрим,
как эта форма у нас выглядит. Мы видим метод «get». У нас написано:
«Имя», поле ввода и кнопка «ok». Теперь посмотрим «hello1». Что
произойдет, когда мы нажмем на кнопку «ok». Здесь будет написано:
«Привет», и нужно будет получить этот самый «name». Давайте
разберемся, как получить «name».
57
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
При получении данных этой формы хакер может написать код, который
нарушит работу сайта. Давайте возьмем простейший код, который может
нарушить работу сайта, и введем его прямо в форму, нажмем «ok».
«Chrome» тут же среагировал, что в форме какой-то скрипт, и он его
заблокировал. Но если мы то же самое введем в «Firefox», то мы увидим,
что наш сайт взломан, на этом сайте был выполнен какой-то чужой
скрипт.
58
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
59
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
3.2 Константы и операторы
Начнем с констант.
61
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
62
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
оператор, который возвращает число меньшее, большее или равное
нулю, когда «$а» меньше, больше или равно «$b». Трудно представить
себе ситуацию, когда это может пригодиться, но такой оператор есть, и
вам интересно о нем узнать.
Для тех, кто знает язык Си, здесь всё очевидно. Но сейчас я кратко их
перечислю, и мы чуть позже на примерах их рассмотрим.
63
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Теперь давайте посмотрим это всё на деле. Нам нужен сайт 9-й, нас
интересует «index» и «main». В «index» написаны наши примеры.
Зайдем в урок 3.2 и обновим. У нас пока эти закомментированы, и
давайте смотреть ShowFileName. Что мы здесь делаем? Здесь мы
используем предопределенную константу «FILE» и просто выводим ее на
экран. Давайте будем смотреть, что у нас вывелось. Вывелся путь к
нашему файлу. Дальше убираем, цикл «for», «ShowArray1» . Смотрим,
что у нас происходит с «ShowArray1». Есть массив, вот он задан, и
теперь мы задаем цикл. Итак, как задается цикл «for»? Сначала
переменной цикла присваивается значение, затем проверяется условие,
по которому будет решаться, останавливать цикл или нет, и какие
действия происходят после каждой итерации. В данном случае у нас
сначала «i=0», мы проверяем, что «i<6», и, соответственно, каждый раз
набавляем «i» на 1. Таким образом, у нас выводятся в двойных кавычках
(это значит, что у нас будет заменяться на значение) элементы нашего
64
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
массива. Сохраняем, обновляем, и вот выведены элементы нашего
массива.
65
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
3.3 Язык описания стилей CSS
Это еще один язык, который обязательно нужно знать PHP-
программисту, потому что данный язык сейчас очень распространен для
разработки сайтов.
66
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Возникает вопрос: для чего он был нужен, для чего был создан CSS?
Смотрите, язык HTML отвечает на вопрос «что это?». Например,
заголовок сайта или главы – это текст, это ссылка и т.д. HTML позволяет
браузеру правильно определить, что за элемент присутствует. Так вот,
CSS отвечает на вопрос «как это отобразить?». И почему он появился –
это тоже важный момент; и почему он отдельный.
Итак, вот у нас урок, сайт десятый, мы его открыли, и идем в заголовок
«header php». Здесь у нас есть «body», и вместо этого «body» мы
вставляем стиль прямо сюда. Сделаем, чтобы фон был красным.
Сохраняем и обновляем. Вот у нас красный фон для нашей страницы.
67
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Дальше второй вариант. Можно прямо в заголовке страницы вставить
стиль «style» и дальше записывать описания для всех элементов.
Давайте опять перейдем сюда, здесь убираем и вставляем просто стиль.
Красный уже был, давайте здесь сделаем зеленый. «Сохранить» и
«Обновить». Вот мы задали зеленый цвет странице. При этом мы его
задали именно в заголовке. И здесь мы можем прописывать какие-то
другие параметры. Но этот способ не рекомендуется, естественно, хотя
теоретически его можно применять, это только для каких-то
специальных целей.
68
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Я скажу так: если у вас есть верстальщик, то, конечно, никакие базовые
стили вам совершенно не нужны: верстальщик сделает то, что нужно.
Базовые стили применяются для макетов, когда вам нужно очень быстро,
то, как мы говорили, PHP – быстрый способ создания страниц. Для этого
и существуют базовые стили. Почему лучше использовать базовые
стили, а не крутить что-то свое? Есть хорошая иллюстрация –
специально сделали верстальщики сайт под названием «badhtml.com»
(давайте на него посмотрим). Это образец того, как сайты делать не
надо, это то, что обычно делают любители, которые превращают
страницу в такой ужас.
69
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
мы смотрим: если номер стиля меньше 7, то увеличиваем, и если
перебрали все 8 стилей, то возвращаемся на единицу.
70
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
3.4 Основы верстки
Этот урок важен, потому что, хотя версткой занимается верстальщик,
есть некоторые вещи, которые должен решать программист. И поэтому
мы сейчас рассмотрим некоторые базовые знания, которые должен
знать программист.
Выбор верстки.
71
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
72
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Еще нужно знать такую полезную вещь для быстрого прототипа: если
нам нужно увидеть, как сайт будет выглядеть, его надо заполнить каким-
то текстом. И вот есть один из сервисов, в котором вы задаете
параметры, нажимаете «Сгенерировать какой-то текст», и получаете
случайный текст, чтобы заполнить ваш прототип сайта.
73
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
74
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
3.5 Работа со строками
В силу важности обработки строк при программировании сайта PHP
содержит большой диапазон средств работы со строками. На этой
странице вы можете посмотреть, какое количество функций работы со
строками у вас есть. Мы все рассматривать не будем, а посмотрим общий
принцип, для того чтобы потом уже легко могли применять эти функции.
Поиск в строке.
75
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Преобразование строк.
76
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
И есть еще интересная функция работы с URL. Если нам нужно разобрать
адрес URL на отдельные составляющие, то мы передаем этой функции
строку URL и получаем отдельные составляющие этого адреса как
вариант элемента массива.
77
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Сначала давайте что-то введем. Например, напишем: «show123123».
Нажмем «ОК». И вот теперь начинается обработка. Сначала
переключимся, вообще, что за обработка у нас здесь происходит.
Смотрите, это те функции, которые мы сейчас рассмотрели, и посмотрим,
как их легко применять. Мы сначала заводим переменную «s», куда
помещаем переданную строку, и начинаем писать, что введена строка
«s», далее длина строки.
Посмотрим, как это всё работает. Вот введена наша строка. Длина
строки: 10; строка без пробелов; первые 2 символа: sh; последние 2
символа: 23; первая позиция единицы: 4, подсчет от 0; фрагмент строки
с единицей: 123123; число единиц: 2; переводим верхний регистр,
переводим нижний регистр. Наша программа работает. Но если мы здесь
напишем кириллицу «Вася123» и нажмем «ОК», то мы увидим, что
работает она неправильно. Соответственно, ваше задание – исправить
программу так, чтобы она правильно работала с кириллицей.
78
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
3.6 Работа с файлами
Важно знать такую вещь, что в целях безопасности многие провайдеры
по умолчанию запрещают работу с файлами в UNIX, и для включения
работы с конкретными файлами нужно выставить атрибуты полного
доступа.
79
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
80
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
цикле начинаем считывать следующий файл в текущей папке и просто
выводим его на экран, в конце эту папку закрываем.
81
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
4. Основы MySQL
4.1 Взаимодействие PHP и MySQL
MySQL – это система управления базами данных, сокращенно СУБД, и,
как правило, она используется в связке с PHP. Давайте разберемся.
82
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Сначала пару слов о разнице между MySQL и SQLite, они отличаются вот
чем. Вообще SQLite приблизительно в два раза быстрее, чем MySQL. Но
SQLite предназначен для небольшого числа одновременных обращений к
БД. Если число обращений будет превышать тысячу или десятки тысяч
обращений одновременно, то SQLite будет работать очень медленно. А
вот MySQL как раз предназначена для большого количества обращений.
83
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
84
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
4.2 Язык запросов SQL
Для работы с БД предназначен так называемый язык запросов SQL и
СУБД MySQL его полностью поддерживает.
85
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
86
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
CREATE TABLE Сотрудники (‘N’, ‘Фамилия’, ‘Оклад’) – то есть создать
таблицу «Сотрудники». И здесь мы указываем имена полей. И здесь
общее правило, что если имя поля у вас может быть неправильно
прочитано, а там более сложная запись, то в этих случаях используется
обратная кавычка, то есть имя пользователя заключается в обратные
кавычки. Обратная кавычка находится на клавиатуре слева, там, где
буква Е.
87
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
а где ключевые слова языка SQL. Ну и еще один признак: если вы
видите руководства или исходные тексты, написанные именно
латиницей, то скорее всего данное руководство или данный текст уже
устарели. Поэтому поищите более свежую версию.
88
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
4.3 Менеджер БД phpMyAdmin
Для того, чтобы эффективно работать с БД, нам нужно видеть, что
происходит в БД, какие там таблицы, поля, результат наших действий,
для этого используются так называемые менеджеры БД. И самым
популярным менеджером для MySQL является phpMyAdmin.
89
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Первое – нужно указать хост (‘host’). При этом, если серверы php и
mysql, а это чаще всего так, то localhost.
Дальше – имя пользователя (‘user’).
Пароль - ‘password’.
И имя БД - ‘test’.
И давайте посмотрим.
90
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
том первая функция StartDB – это мы обращаемся к глобальной
переменной. И смотрите, что мы указываем: localhost, root, root
(пользователь и пароль) и мы указываем нашу БД Test. Если произошла
какая-то ошибка, то мы напишем, что не удалось подключиться и
выйдем. Если мы подключились, то мы для нашей БД, нам вернет $db,
мы для этой БД установим кодировку utf-8, чтобы использовать
кириллицу. И сюда же поместим функцию EndDB, которая опять же, зная
наш глобальный указатель на БД, она ее просто закрывает. Это вот
файл, который будет у нас всегда отдельно. А вот для файлика такого
же, но на хостинге, вы просто здесь и здесь введете тех пользователя и
пароль, которые вам выдаст хостер. И теперь давайте рассмотрим, что у
нас здесь происходит.
Мы, опять же, указатель и пишем наш запрос INSERT INTO Сотрудники,
мы в таблицу «Сотрудники» должны вставить три строчки для номера,
фамилии и оклада. И выполняем этот запрос, если всё нормально, пишем
– записи в таблицу вставлены, если нет – ошибка.
91
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
И после этого выполняем EndDB. Это просто закрытие нашей БД. Идем в
наш localhost. Сайт 14 и смотрим, что у нас произошло. Итак,
подключение к БД сделали. Дальше создание таблицы: сначала удалили
таблицу «Сотрудники», затем ее опять создали, заполнили данным,
вставили. Затем получили данные, увидели, что число строк в запросе
три и вот в качестве таблицы мы их вывели. После этого закрыли БД.
Давайте посмотрим это же.
92
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
4.4 Реляционные базы данных
В этом уроке мы кратко рассмотрим реляционные БД. Напомню, что
полная информация – это целый курс, который я вам рекомендую
«Программирование БД на SQL». А здесь мы рассмотрим минимум,
потому что практически все сейчас сайты, которые сделаны на основе
PHP и MySQL используют как раз реляционные БД, и необходимо понять,
что это такое и в чем главная суть.
93
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
При этом есть понятие первичного ключа, в данном случае это Код
товара. Есть вторичный ключ – это в том случае, если мы модем по
вторичному ключу однозначно определить какую-то запись. И наконец
внешний ключ. В данном случае внешний ключ – это ключ, который
связывает нас с другой таблицей.
94
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
При этом соединение JOIN включает запрос только те поля, где данные
совпадают. То есть мы выбираем из таблицы «Товары» поле Товар, поле
Цена и из таблицы «Группы» поле Группа (SELECT Товары.’Товар’,
Товары.’Цена’, Группы.’Группа’). И мы говорим, что хотим взять из
95
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
таблицы «Товары» эти поля, соединенные с таблицей «Группы» (FROM
Товары JOIN Группы). При этом ON – вот это условие, где код группы в
«Товарах» равен коду группы в «Группах» (ON Товары.’Код группы’ =
Группы.’Код группы’). То есть мы хотим, чтобы вот эта связь сработала.
И когда мы вот это делаем, то получаем данные из связанных таблиц.
Давайте это проверим на практике.
Итак, открывайте сайт 15. Что мы здесь делаем? Здесь то же самое, что и
в предыдущем уроке: мы подключаемся к БД (StratDB), создаем таблицы
(InitDB), заполняем их данными (PutDB), выводим эти данные (GetDB) и
закрываем таблицы (EndDB). И давайте смотреть main.
96
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
4.5 Работа с объектами MySQL
В этом уроке мы кратко познакомимся с основными операторами, с
которыми вы будете чаще всего работать.
97
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
98
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
SELECT Фамилия, Оклад (это те поля, которые нам нужны)
FROM Сотрудники (то есть из какой таблицы)
WHERE Оклад > 30000 (условие)
ORDER BY Оклад (сортировка)
SELECT
SUM(Оклад) AS Сумма,
AVG(Оклад) AS [Средний оклад]
FROM Сотрудники
Постраничный вывод.
99
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
SELECT*
FROM Товары
LIMIT 5 OFFSET 5
100
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
UPDATE Выплаты
SET Месяц = “Август”, Год = 2018
UPDATE Сотрудники
SET Оклад – 50000
WHERE [Код сотрудника]=1
101
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Перенаправление на страницу.
102
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
В edit (правка товара) мы получаем наш id, который передан через GET и
мы выбираем из таблицы Товары запись, где код товара равен этому id.
Дальше мы выполняем этот запрос, получаем массив и получаем Товар и
Цену. Что дальше? Дальше мы создаем форму, которая будет
обрабатываться скриптом UPDATE и в этой форме вводим в виде hidden
(это тип, который не будет отображаться на экране). И мы сюда
передаем код товара, он нам потом потребуется, чтобы по нему обновить
запись. И затем выводим в таблице Товар – значение товара, Цена –
значение цены. Освобождаем запрос и вводим кнопочку Изменить.
Давайте на нее посмотрим.
103
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
нас происходит: открыли БД, получили из$_POST id, item, price.
Подготовили запрос “UPDATE Товары SET ‘Товар’=‘$item’, ‘Цена’=‘$price’
WHERE ‘Код товара’=’$id’”. И вот перенаправление, мы здесь говорим: а
теперь нужно перейти к странице edit_table.
Итак, вот у нас функция DELETE. Открываем БД, получаем id, который
надо удалить. Дальше готовим запрос DELETE FROM Товары WHERE ‘Код
товара’=’$id’. Выполняем этот запрос и здесь мы используем возврат
туда, откуда нас вызвали. Давайте посмотрим, допустим, Утюг.
Нажимаем Удалить, вот он удалился.
104
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
4.6 Работа с датой и временем
Для работы с датой и временем в PHP существует множество функций:
http://php.net/manual/ru/ref.datetime.php. Давайте на них посмотрим.
И так как время и дата – это очень важно с точки зрения разработки
сайта, то, конечно же, функций много. Мы рассмотрим самые базовые
для того, чтобы понять общий принцип работы с датой и временем. Итак,
для получения текущей даты и времени в PHP существует функция
time(). Она возвращает количество секунд, прошедших с начала эпохи
Unix (1 января 1970 00:00:00 GMT) до текущего времени.
Чем удобна функция time()? Тем, что она возвращает целое число в
количестве секунд, а следовательно можно очень легко делать
различные арифметические операции. Например, посчитать, сколько
занимает та или иная операция или диапазон времени и так далее.
Если нам нужно вывести какой-то формат даты, для этого существует
функция date(). Она форматирует вывод даты с помощью специальных
символов. http://php.net/manual/ru/function.date.php Давайте посмотрим
эти символы. Символов много, вы можете сформировать любой вывод
даты. Например, самый банальный. Мы если хотим написать date (день,
месяц, год) или наоборот и со временем.
date(“d.m.y”); // 20.12.18
date(“Y-m-d H:i:s”): // 2018-12-20 11:17:19 (формат MySQL DATETIME)
105
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Теперь дата и время в MySQL. В MySQL есть два вида хранения даты и
времени: DATETIME и TIMESTAMP.
106
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Нужно пояснить, в чем разница, потому что она связана с тем, что мы
разрабатываем сайты, а следовательно они могут быть доступны в любой
точке земного шара, а земной шар разделен на часовые пояса. И в
зависимости от того, нужен вам часовой пояс в вашей метке времени или
нет, вы выбираете тот или иной формат. Чаще всего выбирается формат
DATETIMЕ, который не зависит от часового пояса.
107
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Итак, открываем сайт 17. Урок 4.6 Работа с датой и временем. И мы то,
что мы перед этим говорили, мы сначала выводим форматированную
дату и время. Дальше мы получаем массив, его напечатаем, дальше
возьмем из этого массива только текущий год, выведем его. Дальше
открываем наши БД и в БД смотрите, что мы делаем. Мы в БД в таблицу
Сотрудники пишем только Фамилия, Дата рождения и мы здесь
используем формат DATETIME, Дата регистрации – это как раз
TIMESTAMP. И после этого мы записываем данные в Сотрудники –
Фамилию и Дату рождения, а Дата регистрации запишется
автоматически, так как мы используем INSERT. И после этого мы сначала
выведем данные так, как они есть, то есть Фамилия, Дата Рождения,
Дата регистрации, то есть так, как они находятся в базе, а затем
выведем второй форматированный запрос, где как раз используем этот
второй DATE_FORMAT. Ну и давайте посмотрим, как это работает.
108
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
вывод: отсюда мы взяли только год, ну а здесь мы просто сделали
формат в нашем привычном виде:
109
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
5. Работа с посетителями сайта
5.1 Как анализировать посетителя сайта
Есть такой популярный мем: «В Интернете никто не знает, что ты
собака».
110
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
1. Хакеры, которые приходят на сайт с целью взломать сайт.
Соответственно, они могут задавать какие-то специальные неверные
данные, так называемые «инъекции» для того, чтобы взломать. Они
могут искать какие-то слабые места сайта, и так далее.
2. Боты – это программы для сбора данных. И здесь тоже возникает
большой вопрос, потому что есть полезные боты, например, поисковые
боты от Яндекса или Гугла. Если они к вам не приходят, это значит, что
сайт не будет доступен в поиске – это плохо. Но есть плохие боты,
которые точно так же, как и хакеры, ищут уязвимости и создают
нагрузку на сайт.
3. Случайные посетители, то есть посетители, которым сайт не
интересен, это не целевые посетители. Казалось бы, пришел и пришел.
Не совсем так. Они увеличивают нагрузку на сервер и при этом сайт
замедляется. Поэтому нужно тоже PHP-программисту смотреть. Если
вдруг совершенно неожиданно увеличилась нагрузка на сайт, но при
этом ничего не происходит, ни продаж, ни регистраций, то тоже вполне
возможно, что есть какой-то сбой на сайте.
4. Это уже хороший вариант – целевые посетители. Для них делается
сайт, они по нему ходят, читают статьи, регистрируются, может быть,
что-то покупают и переходят в пятую категорию.
5. Покупатели – посетители, благодаря которым сайт и существует.
111
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
информация передается, нужно, поэтому изучите эту страницу по
ссылке.
Дальше этот файл stat.php мы просто добавляем в хедер, это значит, что
он появится на всех страничках нашего сайта. В данном случае у нас
будет одна страничка, но общий принцип, то есть с помощью
require_once. И зайдем. Сам этот скрипт ничего не отображает, он просто
что-то записывает в файл, Давайте посмотрим теперь, как его
посмотреть. Для этого у нас есть view_stat.php
112
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
И что, собственно, здесь происходит? Мы считываем всё из файла.
Дальше здесь пишем красиво: статистика посещения, задаем какие-то
параметры, и просто в таблице выводим в данном случае эти все наши
параметры. И давайте. У нас здесь есть «Смотреть статистику». Давайте
зайдем. И посмотрим. Вот наш самый простой вариант лога нашего
посещения сайта. Ну и вернемся на главную страницу.
113
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
5.2 Хранение данных о посетителе
Но прежде чем мы перейдем к технической стороне, хочу вас
предупредить, что еще существует юридический аспект данной темы, о
котором мы скажем в конце урока, и который программист должен знать.
114
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
сайту обращается клиент с именем Вася. Таким образом, можно вначале
написать какое-то приветствие.
116
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
2. Получение куки. Чтобы получить куки, мы обращаемся к
суперглобальному массиву куки, которому просто говорим, какая
переменная нам нужна. Так как эта переменная была на компьютере
клиента, то лучше использовать очищение ее от всякой ерунды:
print’Привет,’ . htmlspecialchars($_COOKIE[“name”]) . ‘!’;
3. А для удаления куки достаточно написать setcookie(“name”), но
только не задать никакого значения и куки будет удалена.
117
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
5.3 Сессии
Итак, сессия – это инструмент PHP, который позволяет сопровождать
посетителя на сайте.
1. Запуск сессии.
2. Установка значений переменных сессии.
3. Использование переменных.
4. Отмена переменных сессии.
5. Закрытие сессии.
118
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
119
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
120
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
121
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
стартуем сессию, убираем все переменные, завершаем сессию и
возвращаем на главную страницу.
122
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
5.4 Регистрация посетителей
Конечно же, для любого серьезного сервиса необходимо именно
регистрировать посетителей в базе данных, после чего мы будем
накапливать всю информацию, которая к этим посетителям относится.
процесс аутентификации,
процесс авторизации.
Приемы аутентификации.
123
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
124
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Но есть еще один момент. Для того, чтобы вы были уверены, что
хэширование выполняется именно так, как надо, существуют в PHP две
функции, которые содержат в себе мощные криптостойкие алгоритмы,
поэтому рекомендуется использовать именно встроенные функции:
125
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Важный момент, так как в базе данных вы будет хранить хэш, то вы
должны выделять строку в 255 символов. Хотя на данный момент хэш
имеет длину 60 символов, но раз это рекомендуется, то так и следует
сделать. По ссылке вы можете почитать всю информацию по
хэшированию паролей: http://php.net/manual/ru/book.password.php. Но
пользоваться этими функциями очень легко, потому что есть всего два
действия.
126
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
потому что по словарю подбираются соответствующие хэши и мы
моментально получаем исходный пароль.
127
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
5.5 Организация работы с паролями
Вам нужно знать, что на практике уже устоялась некоторая общая схема
организации работы с паролями, которая применяется на многих сайтах.
Поэтому пользователь ее уже ждет. Конечно, вы может придумать свою,
но тогда у пользователя будут трудности.
128
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
129
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Соответственно, если ничего не было введено, то появляется это
сообщение, которое есть сейчас.
130
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
пароль и логин, нажмем войти, то пароль у нас совпадает. И мы можем
перейти на правку таблицы Товары.
131
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
5.6 Администрирование сайта
Доля управления сайтом обычно создают специальный раздел, куда
имеет доступ только администратор сайта.
132
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
133
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
вот если он есть, мы проверяем статус и в данном случае нас интересует,
чтобы статус был равен 10, если меньше, то мы пишем «нет прав для
доступа». И, наконец, если статус есть и пароль совпадает, мы можем
вывести ShowUsers.
134
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
6. Графическая библиотека GD
6.1 Проверка наличия GD
Несколько слов об этой главе. Дело в том, что для интернета и сайтов
графика имеет очень большое значение, для дизайна, для вывода какой-
либо информации. Поэтому всё, что связано с графикой в PHP
достаточно хорошо развито. И существует графическая библиотека,
которую мы сейчас и рассмотрим. Но нужно понимать, что работа с
графикой немножко отличается, потому что особенность PHP в том, что
есть вставка некоторого кода, который выводится на странице. И
графическая библиотека не совсем обычная, она динамическая, графика
формируется в момент формирования веб-страницы. И вот эту
особенность просто нужно учитывать.
135
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
<pre>
<?php print_r(gd_info()); ?>
</pre>
И давайте перейдем, у нас сейчас сайт 22, смотрим index, у нас сейчас
урок 6.1. И вот как раз информация о библиотеке. Мы ставим тег pre,
вызываем нашу функцию gd_info, она возвращает ассоциативный
массив, который мы выводим командой print_r. И давайте посмотрим
результат. Итак, вот у нас информация о библиотеке, мы видим, что она
присутствует и на что вы должны обратить внимание, чтобы у вас, когда
уже вы будете работать на хостинге, какие два момента вы должны
посмотреть.
136
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
137
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
138
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
6.2 Графические примитивы
Разберем сначала, как нарисовать простейшие фигуры геометрические с
помощью GD. То есть мы указываем точку, это идентификатор нашего
рисунка. Дальше координаты точки и цвет. Линия, опять же, начальные
координаты, конечные и цвет. Прямоугольник, либо просто
прямоугольник, тогда координаты одного угла, другого и цвет, либо
закрашенный прямоугольник. И эллипс, опять же, координаты центра,
широта, высота и эллипс может быть обычный или с заливкой.
И теперь вопрос: как определять цвет? Как этот цвет брать? И вам тут
поможет программа KompoZer. Она находится у вас в сборке, и когда вы
находитесь в нем, нужно нажать Меню – Формат – Цвет текста. И
появляется такая удобная панель для выбора цвета, где вы можете
выбрать любой цвет и самое главное, если вам нужен RGB, вот красный,
зеленый, синий. А если в шестнадцатеричном виде, вы можете
скопировать это значение и просто вместо решетки написать 0х.
139
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Вот у нас случайным образом мы нарисовали точки, причем если нажмем
на обновление, точки будут постоянно меняться, потому что они
генерятся случайно.
Дальше следующее у нас линии. Переходим. Здесь мы комментируем,
открываем линии pic2 и смотрим. Что мы здесь делаем.
140
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
6.3 Текст и трансформации
Сначала простые функции.
141
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
142
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
дальше то же самое, мы здесь выведем в цикле несколько размеров
этого текста. Сохраняем и обновляем.
Тут нужно передать размер, угол поворота, имя шрифта и строку и эта
функция вернет эту рамку. Но пока нас интересует не рамка, а именно
поворот текста. Тогда мы включаем поворот шрифта и смотрим, что мы
делаем. Начало то же самое, мы задали имя нашего шрифта, случайный
цвет, случайный поворот и размер. И смотрим, что получается.
143
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
6.4 Работа с графическими файлами
Мы уже говорили о том, что библиотека GD работает с многими
графическими форматами, основной – PNG. И сейчас мы разберемся, как
с этими файлами работать.
И давайте начнем работать. Итак, для работы нам нужно открыть сайт
25. И давайте начнем с первого. Что мы делаем? У нас в этом примере
появилась папка Pics, в которой находится два файла: ornament.png и
water-lily.jpg. Чтобы просто показать, что с другими форматами принцип
работы тот же. Начнем с файла ornament.png. В данном случае мы хотим
получить просто сначала информацию о графическом файле. Мы задаем
имя файла: $filename – “./Pics/ ornament.png”. И дальше мы выполняем
функцию GetImageSize, которая нам вернет массив. Чтобы напечатать
массив лучше использовать тег <pre>.
144
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Давайте зайдем и посмотрим. Итак, информация о графическом файле,
ассоциативный массив. Вначале идет ширина и высота, дальше тип
нашего файла. Здесь в текстовом виде ширина и высота, сколько бит у
нас записывается изображение и в каком формате оно находится. То
есть мы получили всю информацию об этом файле.
145
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Но, конечно, есть такая ситуация, когда у вас файлы будут другого
формата, например, jpg. Тоже очень популярный формат И давайте
посмотрим, как будет отличаться работа с форматом jpg. Это у нас pic3.
Ну и давайте посмотрим первое.
Мы задаем, что у нас тип контента – jpg. Дальше имя файла – jpg.
Дальше расчеты те же самые, создаем мы изображение
ImageCreateFromJpeg, как мы задавали. У нас нет на jpg альфа-канала,
поэтому мы можем его не задавать. Дальше делаем копию resampled и
вместо ImagePng пишем ImageJpeg. И давайте посмотрим, что у нас
получится. Итак, мы вывели сжатую картинку jpg. Принципы работы
остались те же самые.
146
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
6.5 Трансформация изображений
Мы рассмотрим сейчас следующие виды трансформации.
IMG_FLIP_HORIZONTAL по горизонтали;
IMG_FLIP_VERTICAL по вертикали;
IMG_FLIP_BOTH одновременно и по горизонтали и по
вертикали.
Как вы уже помните, всё, что нам нужно – это задать имя, создать холст
и вывести эту картинку. Давайте это и сделаем. Вот у нас картинка
некоторого моста. Теперь переходим к следующему. Это обрезка
изображения. Что мы делаем? Фактически мы используем тот же самый
ImageCopyResampled, только теперь мы уже не рассчитываем, как нам
это изображение хитро преобразовать, а мы просто задаем координаты
обрезки, это откуда нам взять. Мы берем сейчас 0, 0, х и у и просто
обрезаем. Давайте посмотрим, что произойдет. Обновить.
147
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
следующему. Это поворот изображения Поворот изображения, pic3.
Берем это изображение. И дальше смотрите, что мы делаем. Мы
выполняем функцию ImageRotate, но в результате этой функции
появляется новая картинка, потому что при повороте размеры картинки
меняются. Здесь мы задаем размер – 45 градусов. И фон, который нужно
наложить на получившееся новое изображение. Давайте посмотрим
сначала, как это будет выглядеть, а потом, что будет, если убрать этот
фон.
Итак, вот у нас обрезка, вот поворот. Теперь если мы уберем этот фон.
Здесь сделаем ноль. То у нас при повороте возникает черный такой фон.
Поэтому нам нужно здесь задавать правильный цвет фона.
148
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
6.6 Совмещение изображений
Часто встречаются ситуации, когда программисту по просьбе дизайнера
нужно совместить какие-то изображения.
Первое действие – вывести рамку. Pic1, вывод рамки, здесь у нас уже
всё известно. Задаем имя, создаем холст, сохраняем альфа-канал и
выводим картинку. Вот рамка. Мы просто вывели картинку. Теперь идем
дальше.
149
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
после этого выводим нашу рамку. Давайте посмотрим, что у нас
получится. Обновить.
Итак, вот наша рамка, а вот совмещение изображений. Вот у нас в рамке
появилось наше изображение кота. И теперь посмотрим, как влияет
параметр. Мы вот сейчас зададим не 100%, а 50% и попробуем вывести.
Вот видите, кот затемнился. В данном случае, если нам нужно делать
такое наложение, чтобы было затемнение, то мы начинаем уменьшать
этот параметр. Обычно нам все-таки нужно 100.
Давайте это и сделаем. У нас здесь есть наш любимый шрифт Roboto. И
давайте pic3 откроем. Сразу с заданием. Откроем его и посмотрим, что
здесь происходит. Здесь сначала всё то же самое до копирования и
наложения нашего фото. И вот, собственно, пошел водяной знак.
150
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
frame. Дальше ставим текст frogtips.ru, наш шрифт и размер нашей
надписи.
151
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
7. Разработка веб-сервиса
7.1 Регистрация на хостинге
В этой главе мы разработаем каркас веб-сервиса. В качестве примера
возьмем сервис хранения визуальных закладок сайта.
152
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Но в нашем курсе, так как нас интересует только учебная ситуация, нам
лучше начать с совсем бесплатного хостинга, для того чтобы что-то
проверить бесплатно, и это будет достаточно быстро и просто. У
«HandyHost» нет бесплатного хостинга, но есть у «Beget». Сразу скажу,
что у меня есть проекты и на «HandyHost», и на «Beget», и оба хостинга
я рекомендую. Там хорошая техническая поддержка, пожалуйста,
можете работать.
153
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
7.2 Знакомство с хостингом
После регистрации вы получите логин и пароль к личному кабинету.
Сохраните их в менеджере паролей keepass.
154
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
155
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
А пока мы сделаем первые 2 шага. Мы должны создать базу данных –
для этого мы переходим в панель управления MySQL и попадаем в базу
данных. В данном случае, на бесплатном хостинге у вас одна база
данных – этого вполне достаточно. Вам нужно будет (здесь я просто уже
создал базу данных) добавить ваш доступ: в «Имя базы» после
подчеркивания добавьте «main»; напишите пароль и обязательно его
запомните, и нажмите кнопочку «Добавить». У вас появится база
данных. После того, как вы создали базу данных, вам нужно будет
нажать на «phpMyAdmin» и перейти на phpMyAdmin. Вот она ваша база
данных, и в данном случае таблиц в базе данных не обнаружено – так и
должно быть, потому что мы эти таблицы еще не создали. А как создать
эти таблицы, мы рассмотрим уже в следующем уроке.
156
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
7.3 Перенос проекта на хостинг
Итак, у нас всё готово для того, чтобы наш проект запустить на боевом
сервере. Что нам нужно сделать?
Первое, что нам нужно – зайти в «File Manager», где будет происходить
вся работа, и убедиться, что вы зашли в папку «public_html». Нажмите
на иконку «Загрузить файлы» и выберите папку «Site28». Вот у нас
«Загрузить файлы», «Browse», и вот «Site28». Вам нужно выбрать все
файлы и нажать «Открыть», а потом нажать «Загрузка» (т.к. я уже все
загрузил, я этого делать не буду).
157
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Для этого вы должны зайти в файл «start_mysql.php» (нажмите на него
дважды), и вот в этой строке вам нужно правильно внести изменения.
Когда вы создавали базу данных, у вас было имя этой базы данных и
пароль. Смотрите, что вы делаете: вместо первого «”root”» пишете имя
базы данных, вместо второго «”root”» пишете пароль, и вместо «”test”»
пишете имя базы данных.
158
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
7.4 Реализация проекта
Рассмотрим, как у нас реализован данный сервис. Для вас это будет
достаточно просто, потому что я использовал все те приемы, которые мы
уже рассматривали. И я вам рекомендую всегда это делать, особенно
при разработке веб-сервисов. Старайтесь не создавать что-то с нуля, а
брать уже готовые шаблоны, готовые куски ваших предыдущих проектов
и менять их под текущую задачу.
Всё это у нас есть в файле «main» в функции «Init» базы данных. И
здесь наш стандартный принцип создания – то, что мы выполнили. Если
эти таблицы существуют, то они удаляются, и дальше создается таблица
«Закладки». Нужно отметить, что URL может быть размером не больше
2048 символов, поэтому под адрес отведено столько. Дальше мы создаем
таблицу «Группы» – здесь всё понятно; и в таблицу «Группы» мы
добавим запись «Общая» таблица. Это для того, чтобы тогда, когда
человек без регистрации, он всё равно мог бы что-то добавлять. Таблица
«Клиенты» тоже нам хорошо знакома. Опять же, мы сюда добавляем
клиентов: «’admin’» с паролем «’admin100’», с условным новичком
(человек, который не ввел пароль – «‘1’, ‘1’, ‘1’» – мы считаем, что это
человек без регистрации). Как вы видите, записи тоже добавлены.
159
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Когда мы добавили записи, посетитель сайта находится здесь и он хочет
добавить сайт. За это отвечает функция «addtab». Давайте посмотрим,
как она работает. Она получает наш «’taburl’» (адрес сайта). Дальше мы
должны получить заголовок сайта («SiteTitle»). У нас есть функция
«SiteTitle», которая считывает файл по адресу, который мы передали,
ищет то, что находится между тегами «<tltle>» и «<\/tltle>», после этого
чистит от различных спецсимволов и возвращает заголовок нашего
сайта. Мы его получили в «tab», и потом мы его запишем в название
закладки.
160
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
7.5 Развитие проекта
Этот урок очень важен. Может быть, это даже самый важный урок с
точки зрения того, сколько вам сэкономят времени, усилий, денег и т.д.
те советы, которые я вам дам. Потому что я уже давно в теме разработки
сайтов, у меня множество реализованных проектов, есть очень
прибыльные проекты. И так как я в этой теме уже много лет, я вижу
типовые ошибки у различных разработчиков. Давайте с ними
разберемся.
161
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
дорогие сервера». Это дикость. Вам ни в коем случае не нужны какие-то
выделенные сервера в самом начале. До тех пор, пока ваша
посещаемость не превысит 1000 человек в сутки, ни о каких дорогих
хостингах даже и не думайте. Самый минимальный тарифный план,
допустим, тот, который есть на «HandyHost», но я бы даже начал с
бесплатного аккаунта. Потому что если вы на бесплатном аккаунте
сделали тест, проверили и видите, что это вам ничего не дает, люди на
него не ходят, то вы просто сделали пробу и сильно не потратились.
162
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
доход, ваши усилия многократно окупятся. Максимальный успех – если
это всё превратится в стартап – когда людям настолько понравилась
ваша идея, у вас идет большой взрывной рост, и вы зарабатываете
много денег, чего я вам и желаю.
163
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
7.6 Развитие профессионализма
В этом уроке мы поговорим о том, как максимально эффективно
продвинуть себя в сфере PHP-программирования или в сфере разработки
сайта.
164
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
165
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
когда вы собираетесь куда-то наниматься, обязательно посмотрите, что у
них за сайт, какие решения они используют, и, уже в зависимости от
этого, принимайте решение о том, идти к ним или нет.
166
Константин Шереметьев www.sheremetev.info
__________________________________________________________________
Заключение
Поздравляю! Вы только что завершили изучение курса
«Программирование на PHP и MySQL». А знаете ли вы, что для того,
чтобы получать более крупные заказы, любому программисту
необходимо освоить работу с базами данных на высоком уровне?
167