Освен задължителните знания свързани с програмирането на PHP и работата с MySQL база данни, в книгата ще намерите множество примери, в които последователно и с подробни обяснения са разгледани полезни проекти от практиката — такива с които се сблъсква всеки съвременен PHP програмист.
Отделено е нужното внимание и на начините за оптимизация на PHP кода, използването на шаблони, фреймуърк, SSL, работа с поща, Mp3 файлове, RSS, както и на техниките за защита от спам и хакери. Ще научите как да разработите мобилна версия на сайт и как да защитите вашия код от неоторизирано копиране и разпространение.
Дадени са и примери с качване на файлове на сървър, използване на сесии, регулярни изрази и форматите CSV/XML. Разгледана е и прецизната настройка на сървъра.
Особено полезна ще ви бъде частта „Практическо програмиране“. Там постъпково са представени проектирането, разработването на потребителския интерфейс и администрацията на интернет магазин. Кодът на този полезен за практиката проект е предоставен от автора за безплатно сваляне и ползване.
За начинаещите програмисти е включена глава, в която са представени основите на HTML и phpMyAdmin — знания без които не може никой PHP програмист.
PHP 7 & MySQL
Съдържание
Въведение…10
PHP 7…11
Подобрена производителност…11
Премахнати са старите разширения и SAPI…11
Промени в синтаксиса на езика…13
Нови възможности…13
Променени функции…14
Нови функции…15
Как правилно да четете тази книга…15
Част 1. Запознаване с PHP
Глава 1. Осигуряване на необходимия софтуер…18
1.1. Настройка на собствен уеб сървър…18
1.2. Инсталиране на уеб сървър Apache 2.4…19
1.3. Инсталиране на PHP 7…23
1.4. Инсталиране на СУБД MySQL и настройка на взаимодействието с нея…29
1.5. Антивирусна програма и защитна стена…31
1.6. Настройка на Skype…32
1.7. Избор на текстов редактор…33
Глава 2. Основи на PHP…36
2.1. Как работи PHP?…36
2.1.1. Въведение в CGI…36
2.1.2. Недостатъци на CGI. Как работи PHP?…38
2.2. Вашата първа програма на PHP…40
2.3. Променливи и константи…43
2.4. Действия над променливите…48
2.5. Изрази, операции и връзки…51
2.5.1. Какво е израз?…51
2.5.2 Аритметични операции…51
2.5.3. Побитови операции…52
2.5.4. Логически изрази и операции…53
2.5.5. Приоритет на операциите в PHP…54
2.5.6. Низ и низови изрази…54
2.5.7. Връзки…56
2.5.8. Оператор ??. Съкратена форма на тернарна условна операция…57
2.6. Конструкции на езика…58
2.6.1. Оператор if-else…58
2.6.2. Цикли…59
2.6.3. Конструкция switch-case…62
2.7. Инструкции include и require…64
Част 2. Форми и параметри
Глава 3. Форми за въвеждане на данни. Методи GET и POST…65
3.1. Форма. Таг <form>…65
3.2. Получаване на данни от фòрмата. Функция filter_input()…68
3.3. Елементи, използвани за въвеждане на данни …70
3.3.1. Текстови полета…71
3.3.2. Зависими и независими превключватели…72
3.3.3 Таг <TEXTAREA>…75
3.3.4. Списъци…76
3.3.5. Бутони …77
3.4. Защита от спам…78
Глава 4. Променливи на сървърното обкръжение…81
4.1. Променливи на обкръжението…81
4.2. Други глобални масиви…82
Глава 5. Създаване на интерактивни форми за въвеждане на данни…83
5.1. Предимства на интерактивните форми…83
5.2. Добавяне на бутон Back във вашите форми…84
5.3. Форма за проверка на въведените данни…85
5.4. Сложна динамична форма…86
Част 3. Основни функции в PHP
Глава 6. Функции, които трябва да знае всеки PHP програмист …91
6.1. Математически функции…91
6.2. Функции за преобразуване от една бройна система в друга…92
6.3. Дата и време…93
6.4. Генератор на случайни числа…95
6.5. Функции за стартиране на външни програми…96
Глава 7. Функции за работа с низове…97
7.1. Операции с низове…97
7.2. Основни функции за работа с низове…100
7.3. Функции за работа с отделни символи…103
7.4. Функции за обработка на HTML и форми за въвеждане на данни…104
7.5. Смяна на регистъра…106
7.6. Специални функции…107
7.6.1. Функции md5() и crc32()…107
7.6.2. Функция explode()…108
7.6.3. Функции Serialize() и UnSerialize()…108
7.7. Хеширане на пароли…109
7.8. Низове и PHP 7…110
Глава 8. Функции за обработка на масиви…112
8.1. Разлика между масиви и списъци. Асоциативни масиви…112
8.1.1. Въведение в масивите…112
8.1.2. Списъци…116
8.1.3. Асоциативни масиви…116
8.1.4. Инструкцията list() за списъци…118
8.2. Многомерни масиви…120
8.3. Операции с масиви…120
8.3.1. Унищожаване на масив…120
8.3.2. Сливане на масиви…121
8.3.3. Преброяване на елементите на масив…122
8.3.4. Сортиране на масиви…123
8.3.5. Директен достъп до елемент от масива…125
8.4. Други функции за работа с масиви…125
8.4.1. Извличане на части от масива…125
8.4.2. Добавяне и премахване на елементи в масива…126
8.4.3. Функция array_unique()…126
8.4.4. Функции compact() и extract()…127
Глава 9. Функции за работа с файлове и папки…128
9.1. Съхраняване на информация в папки…128
9.2. Отваряне, четене, запис и затваряне на файл…130
9.2.1. Отваряне на файл…130
9.2.2. Четене и запис на файла в двоичен режим…133
9.2.3. Четене и запис на файл в текстов режим…134
9.2.4. Затваряне на файл…135
9.2.5. Функции, автоматизиращи някои операции с файловете…135
9.3. Функции за работа с файлове…137
9.3.1. Проверка за съществуването на файл…137
9.3.2. Копиране, преименуване и изтриване на файл…138
9.3.3. Функция filetype(): определяне на типа на файла…139
9.3.4. Функции fileatime(), filectime() и filemtime()…139
9.3.5. Функции disk_free_space() и disk_total_space() …140
9.3.6. Функции за проверка на правата за достъп до файла…140
9.4. Функции за работа с папки…140
9.5. Заключване на файл…144
9.6. Изобразяване на изходен код. Функция show_source()…147
Глава 10. Мрежови функции…149
10.1. Функции за работа със сокети…149
10.2. FTP функции…154
10.3. Функции за работа с DNS…157
10.4. Библиотеката cURL…157
Глава 11. Работа с изображения. Библиотека GD…160
11.1. Активация на библиотеката GD…160
11.2. Проверка за достъпност на GD…161
11.3. Формат на изображението…162
11.4. Основни операции…163
11.4.1. Определяне на размера на изображението…163
11.4.2. Функции за работа с цвят…163
11.4.3. Рисуване на графични примитиви…165
11.4.4. Функции за запълване на област…166
11.5. Показване на текст над изображение…166
11.6. Завъртане на изображение…168
11.7. Промяна на размера на изображение…168
11.8. Поддръжка на WebP в GD…170
Глава 12. Работа с поща чрез PHP…171
12.1. Изпращане на обикновени съобщения. Функция mail():…171
12.2. Изпращане на HTML съобщения с прикрепени файлове…173
12.3. Получаване на поща по протоколите IMAP/POP3…175
Глава 13. Полезни възможности на PHP…178
13.1. Работа с RSS…178
13.2. Работа с MP3…182
Глава 14. Създаване на собствени функции…185
14.1. Какво е функция?…185
14.2. Променливи и област на видимост на функциите…188
14.3. Параметри на функциите…189
14.4. Генератори…193
14.5. Полезни примери…195
14.5.1. Масив със случайни числа…195
14.5.2. Функция за изчисляване на факториел…196
14.5.3. Функция за инициализиране на променливи…196
14.5.4. Предаване на масив в качеството му на параметър на функция…197
14.5.5. Условно дефинирани функции…199
Част 4. Бази данни и PHP
Глава 15. Въведение в базите данни. Основни SQL оператори…200
15.1. Основни понятия…200
15.2. Да се договорим за нещо…202
15.3. Типове полета…202
15.4. Създаване на таблици с оператора CREATE…204
15.5. Оператор INSERT: вмъкване на данни в таблица…205
15.6. Оператор UPDATE: променяне на запис…207
15.7. Оператор DELETE: изтриване на запис…208
15.8. Оператор SELECT: извличане на записи…209
15.9. Групиране на записи…212
15.10. Сортиране на записи…213
15.11. Изтриване на полета и таблици …214
Глава 16. Работим с MySQL чрез PHP 5…215
16.1. Способи за работа с база данни…215
16.2. Установяване на връзка със сървъра и избор на база данни…216
16.2. Изпращане на SQL заявка и получаване на резултата…217
16.3. Обработка на резултата…218
16.4. Затваряне на връзката…221
16.5. Постоянна връзка…221
16.6. Кеширане на заявките…222
16.7. Копиране на таблици в MySQL…224
Глава 17. Разширението PDO за работа с бази данни – PHP 7…225
17.1. Връзка с базата данни…225
17.2. Изпълнение на заявки и четене на резултата…227
17.3. Получаване на данни…230
17.4. Особености при използването на операторите LIKE, LIMIT и IN…231
17.5. Имена на таблици и полета при работа с PDO…232
17.6. Заявки за запис и обновяване…233
Глава 18. Алтернативни бази данни, поддържани в PHP…235
18.1. Бази данни и PHP…235
18.2. Поддържани бази данни…235
Част 5. PHP за опитния програмист
Глава 19. Качване на файлове на сървър…238
19.1. Форма за качване на файл…238
19.2. Сценарий за качване на файл upload.php…240
Глава 20. Използване на шаблони…247
20.1. Предназначение на шаблоните…247
20.2. Инсталиране на Smarty…249
20.3. Използване на Smarty…250
20.4. Прост шаблонизатор…253
20.5. Откъде да вземем шаблони?…254
Глава 21.Обектно ориентирано програмиране…258
21.1. Основи на обектно ориентираното програмиране…258
21.2. Вашият първи клас на PHP…261
21.3. Конструктори и деструктори…263
21.4. Наследяване и полиморфизъм…265
21.5. Област на видимост на членовете на класа…266
21.6. Абстрактни класове и методи…268
21.7. Ключова дума final…268
21.8. Обработка на изключения …269
21.9. Клониране на обекти…272
21.10. Константа като член на клас…273
21.11. Статични членове на клас…273
21.12. Оператор instanceof…274
21.13. Итератори…275
21.14. Пространство от имена…275
21.15. Трейтове (traits) …276
21.16. Ключова дума class…277
21.17. Особености при обработката на променливи в PHP 7…277
21.18. Полезен пример…278
Глава 22. Използване на сесии…283
22.1. За какво са ни сесии?…283
22.2. Работа със сесии…285
22.3. Пример за програма, използваща сесия…287
Глава 23. Регулярни изрази…290
23.1. Ново ниво на търсене с помощта на регулярни изрази…290
23.2. Език за описване на регулярните изрази…291
23.3. PHP функции за работа с RegExp…295
23.4. Примери с използване на RegExp…296
Глава 24. Въведение в AJAX…298
24.1. Презареждане на страници в движение…298
24.2. Създаване на AJAX приложение…299
Глава 25. Система за контрол на версиите…304
25.1. Защо е необходим контрол на версиите на файловете?…304
25.2. Използване на TortoiseHG…307
25.2.1. Създаване на хранилища…307
25.2.2. Внасяне и преглед на промените…308
25.2.3. Добавяне и изтриване на файлове…311
Глава 26. Защита на сайта от атаки…312
26.1. Няколко думи за актуалността на проблема…312
26.2. XSS атаки…313
26.3. SQL инжектиране…314
Глава 27. SSL връзки във вашите проекти…318
27.1. Защо са ни SSL връзки?…318
27.2. Написване на сценарий, който поддържа SSL…319
Глава 28. Разработка на мобилна версия на сайта…322
28.1. Защо е нужна мобилна версия?…322
28.2. Препоръки…322
28.3. Класът MobileDetect…323
28.4. Как да създадем мобилна версия на сайта?…326
28.4.1. Реализация на адаптивен дизайн…327
28.4.2. Реализация на динамичен изглед…328
28.4.3. Използване на отделен сайт за мобилната версия…329
Глава 29. Прецизна настройка на сървъра …330
29.1. Ускорение посредством преминаване на новата версия на РНР…330
29.2. Конфигурационният файл php.ini…331
29.2.1. Параметри на паметта…332
29.2.2. Zend Opcache…334
29.2.3. Максимално време за изпълнение…337
29.2.4. Зареждане на файлове…338
29.2.5. Обработка на сесии…338
29.2.6. Буферизация на извода…339
29.3. Оптимизация на MySQL…340
Глава 30. Форматите CSV/XML…343
30.1. Работим с CSV файлове…343
30.1.1. Четене на данни от CSV…343
30.1.2. Разбор на CSV редове на стари версии на PHP (до версия 5.3)…344
30.2. Работим с XML…346
30.2.1. Парсинг на XML файл…346
30.2.2. Генериране на XML файл…348
30.2.3. Нестандартният формат Excel 2003 XML…350
Глава 31. Фреймуърк или чист PHP код?…354
31.1. Какво е фреймуърк?…354
31.2. Разработка на проста книга за гости на PHP…355
31.2.1. Изходна точка…355
31.2.2. Отделяме кода от изгледа…357
31.2.3. Изолираме логиката на приложението…358
31.2.4. Изолираме оформлението…359
31.2.5. Добавяне на друга страница…361
31.2.6. Създаваме фронт-контролер…362
31.3. Проста книга за гости със Symfony…364
31.3.1. Модифицираме наличния код…364
31.3.2. Symfony приложение от нулата…366
Част 6. Практическо програмиране: разработка на интернет магазин
Глава 32. Проектиране…371
32.1. Създаваме общата картина…371
32.2. Определяме вида на стоката…372
32.2. Функционалност на витрината…373
32.3. Техническа част…374
32.4. Структура на базата данни…376
Глава 33. Разработка на потребителския интерфейс…380
33.1. Структура на приложението…380
33.2. Избор на Bootstrap шаблон…381
33.3. Конфигурационен файл config.php…381
33.4. Файл connect.php…382
33.5. Файл index.php – главна страница…383
33.6. Сценариите mens.php и womens.php – извеждане на продукти…385
33.7. Добавяме продукт в количката и показваме нейното съдържание…392
33.8. Сценарий order.php…400
33.9. Сценарий product.php – показване на продукт…403
33.10. Сценарий brands.php…408
33.11. Сценарий contacts.php…410
33.12. Сценарий за добавяне на e-mail в списъка с абонаменти…411
Глава 34. Администрация…415
34.1. Функции на администрацията…415
34.2. Автентификация на потребителя администратор…415
34.3. Главна страница на панела за управление – index.php…419
34.4. Система за съобщения…422
34.5. Пътеводител за сценариите на панела за управление…423
34.5.1. Управление на брандовете…423
34.5.2. Управление на продуктите…424
34.5.3. Управление на поръчките…427
Част 7. Препоръки за програмиста
Глава 35. Оптимизация на PHP кода…431
35.1. Оптимизация на показването в браузър…431
35.2. Обръщане към елемент на масива…433
35.3. Не използвайте прекалено дълги имена на променливите…433
35.4. Правилно четене на файлове…434
35.5. Правилно използване на операторите за цикли…435
35.6. Ненужни извиквания на функции…435
35.7. Echo или print…436
35.8 Регулярни изрази…439
Глава 36. Защита на кода със Zend Guard…440
36.1. За какво ни е нужен Zend Guard?…440
36.2. Инсталиране на Zend Guard…441
36.3. Използване на Zend Guard…442
36.4. Как се генерират лицензи?…446
36.5. Колко е надеждна защитата Zend Guard?…447
Част 8. Допълнителни материали
Приложение 1.
Основи на HTML …448
Структура на HTML документа…448
Таг <body>…450
Заглавни тагове…451
Тагове за абзаци и подравняване на текст…452
Форматиране на текст…452
Промяна на шрифта…453
Вмъкване на изображения…453
Номериран и неномериран списък…454
Връзки…454
Таблици…455
Приложение 2.
Стандартни цветове…459
Приложение 3.
Инсталиране и използване на phpMyAdmin…465
17.1. За какво ни е phpMyAdmin?…465
17.2. Инсталиране на phpMyAdmin на вашия сървър…466
17.3. Използване на phpMyAdmin…467
Заключение…477