Подробности
Тази книга е предназначена да служи като самоучител по изграждане на уеб приложения за бази данни.
Уеб приложенията за бази данни свързват бази данни с Мрежата. Примери за уеб приложения за бази данни са добре познатите ви сайтове в Интернет за търговия, новини, дискусионни форуми и лични уеб страници. Популярността на тези приложения се корени в тяхната достъпност и лекота на използване: хиляди потребители могат да осъществяват достъп до едни и същи данни едновременно, без да се налага да инсталират допълнителен софтуер на компютрите си.
Тази книга е предназначена за разработчиците, желаещи да изградят приложения за бази данни, които да бъдат достъпни чрез Интернет. Тя представя принципите и техниките за разработване на малки до средни уеб приложения за бази данни, които да съхраняват, управляват и извличат данни, както и основните методи за подсигуряване на приложения. Архитектурата, описана тук, представлява успешна комбинация за приложения, които да работят на скромни хардуерни конфигурации и същевременно да може да обработва повече от милион потребителски заявки дневно.
Важна част от настоящата книга представлява нашият примерен проект, Hugh and Dave"s Online Wines. Това е напълно работещ, но въображаем магазин за продажба на вина, който позволява на потребителите да претърсват база данни , да добавят артикули в количка за пазаруване и да закупуват вина. Търсенето, преглеждането, съхраняването и проверката на потребителски данни, управлението на транзакции и сигурността са теми на отделни глави, като всяка от темите е онагледена чрез примери от магазина за вина. Скриптовете за завършения магазин са представени и обсъдени накратко в края на книгата.
Ние използваме софтуер с отворен код. Нашата система за управление на бази данни (DBMS) е MySQL – система, подходяща за приложения, изискващи скорост и нисък разход на ресурси. Езикът за скриптове e PHP, известен със своите библиотеки с функции за взаимодействие с повече от 15 вида релационни бази данни, уеб среди и с много други услуги. Ние използваме PHP за разработване на приложната логика, която свързва Мрежата и системата за управление на бази данни. Избраният от нас уеб сървър е Apache.
Тази книга е посветена на изучаването и разработването на приложна логика, свързваща бази данни с Интернет. Разгледни са и принципите на системите за бази данни, но материалите тук не могат да заменят една книга или курс, посветен специално на теорията на релационните бази данни, или книга за точно определена система за бази данни като MySQL. Освен това приемаме, че сте достатъчно запознати с Интернет. Ще представим, но няма да разглеждаме в дълбочина, трите основни мрежови стандарта – HTML, HTTP и TCP/IP.
Приемаме, че можете да програмирате на език от трето поколение като C, C++, Java, Perl, FORTRAN или Visual Basic. Нашето въведение в PHP не изисква да имате предварителни знания за скриптовете в Интернет или да сте експерт по програмиране, но приемаме, че познавате основните конструкции на HTML и че сте работили с най-популярните уеб браузъри.
Не е необходимо да познавате в дълбочина релационните бази данни, но ще бъде полезно, ако имате някаква представа за техните принципи. Ние предоставяме основната теоретична информация за релационните бази данни, нужна за изграждане на прости приложения, като разглеждаме много други основни концепции, включително принципи, с които да се определи дали база данни ще е най-добрият метод за съхраняване на информация; архитектура на DBMS; езикът за заявки SQL и примерно изследване, в което съставяме модел съгласно определени изисквания и го преобразуваме в база данни. Тази книга не може да замени един добър източник на информация за теорията на базите данни, но е достатъчна, за да можете да започнете разработката на бази данни за множество уеб приложения.
В настоящата книга има 13 глави и 5 приложения. Главите от 1 до 3 представляват въведение в уеб приложенията за бази данни – PHP, MySQL и SQL:
Глава 1, Приложения за бази данни и Мрежата
Разглежда се трислойната архитектура, използвана обикновено в уеб приложенията за бази данни. Представяме всеки от трите слоя и неговите особености, както и инструментите, които използваме. Разглеждат се накратко и мрежовите протоколи. Глава 1 завършва с представяне на нашия пример, Hugh and Dave"s Online Wines. Обсъждат се компонентите на магазина за вина, системните изисквания, като се посочва къде в книгата са разгледани техниките, използвани за разработване на всеки компонент.
Глава 2, PHP
Представя се езикът за скриптове PHP – програмиране на PHP и основните програмни конструкции, променливи, типове, фукции, техники и най-често срещаните източници на проблеми. Включваме множество примери с код, за да илюстрираме как работи PHP.
Глава 3, MySQL и SQL
Представя се системата за управление на бази данни MySQL и начините за взаимодействие с нея чрез езика за заявки SQL. Чрез примери от магазина за вина разглеждаме командите на SQL за създаване, изтриване и обновяване на данни и бази данни. Също така представяме и по-дълъг и изпълнен с примери раздел, посветен на заявките в магазина за вина. Главата приключва с някои по-сложни теми като настройване и конфигуриране на бази данни.
Главите от 4 до 9 покриват принципите и практиките в разработването на уеб приложения за бази данни.
Глава 4, Заявки към бази данни
Представят се основите на свързването към MySQL чрез PHP. Обясняваме процеса на заявки, използван в повечето взаимодействия с базата данни, и разглеждаме примери, в които са включени по-голяма чяст от функциите на PHP за работа с MySQL. Освен това показваме как върнатите от базата данни резултати могат да бъдат форматирани във вид на HTML. Главата се подкрепя с примери от магазина за вина, които показват как се изгражда средно сложен модул за заявки.
Глава 5, Заявки, управлявани от потребителите
Продължава разглеждането на принципите и практиките за отправяне на заявки към бази данни. Тук се съсредоточаваме върху заявките, управлявани с параметри, подадени от потребителите. Показваме как се включват данни в заявките от браузъра към уеб сървъра, как сървърът ги обработва и как данните се извличат обратно за обработване от PHP. Разглеждаме проблемите със сигурността, свързани с работата с потребителски входни данни, и показваме стъпките, нужни за подсигуряване на интерактивни системи за заявки. Всичко това се подкрепя с примери за заявки, управлявани от потребителите, чиито резултати впоследствие могат да бъдат разглеждани в браузър.
Глава 6, Записване в бази данни
Разглежда се записването на информация в бази данни. Има няколко причини, поради които записването на данни се различава от четенето им. Например презараждането или извеждането на страница от браузър може да предизвика записване на едни и същи данни повече от веднъж. Достъпът до базата данни от множество потребители води до други проблеми като неочакваното променяне на данни от един потребител, докато те биват четени от друг. Показваме как се решават проблемите, свързани с Мрежата и едновременния достъп. Илюстрираме принципите с пример, който добавя и променя данни за клиентите на магазина за вина.
Глава 7, Проверка на валидността на данните
Тази глава е свързана с глава 6 и представя принципите и техниките за проверяване на данните, въведени от потребителите. Разглеждаме модели за проверка на данни и методи за докладване, подходящи за уеб приложения за бази данни, като показваме как те се реализират чрез PHP и как могат да се поддържат от страна на клиента с JavaScript.
Глава 8, Сесии
Покрива принципите на сесийното управление в уеб приложенията за бази данни. Управлението на сесии позволява свързването на отделните взаимодействия на потребителя с приложението в едно цяло, за да има възможност клиентите да се регистрират и да напускат магазина, както и да могат да бъдат насочвани през многостъпкови процеси. Показваме ви как PHP управлява сесии и илюстрираме техниките с пример за управление на грешки в магазина за вина и подаването на информация за тях към клиентите.
Глава 9, Проверки на самоличността и сигурност
Показваме как PHP може да се използва за удостоверяване на самоличността на потребителите, как базите данни могат управляват информация за множество потребители и как комуникациите могат да бъдат подсигурени на мрежово ниво чрез SSL. Примерът в тази глава е процесът на регистрация и изход от магазина за вина. Тази глава продължава темата за управление на сесиите от глава 8.
В главите от 10 до 13 се представя окончателният вариант на магазина за вина. Описанията в тези глави не са пълни – приемаме, че предварително сте прочели главите от 4 до 9 и сте разбрали принципите на разработването на уеб приложения за бази данни. Препоръчваме ви да разглеждате, редактирате и използвате скриптовете за магазина за вина, докато четете тези глави.
Глава 10, Управление на клиентите на магазина
Съдържа кода за управление на клиентите на магазина за вина, както и общите функции, използвани в приложението. Кодът в тази глава е основан на примерите в главите от 4 до 8. Разглеждат се скриптовете за събиране, проверяване и променяне на данни за клиентите. Тази глава също така включва и кода за процеса на регистриране и изход от магазина, базиран на материалите в глава 9.
Глава 11, Количката за пазаруване
Съдържа кода за реализиране на количката за пазаруване в магазина за вина. Количката за пазаруване на всеки потребител се съхранява в базата данни и се следи чрез сесийните техники от глава 8. Модулът за количката позволява на потребителя да разглежда съдържанието й, да добавя покупки в нея, да обновява количеството на избраните вина, да изтрива артикули от количката и да я изпразва.
Глава 12, Поръчки и доставки в магазина за вина
Съдържа кода на модула за поръчки и доставки в магазина за вина. Процесът на съставяне на поръчка демонстрира как сложните техники за работа с бази данни, разгледани в главите от 3 до 6, се използват за превръщане на количката за пазаруване в поръчка. Също така показваме как се изпращат потвърждения на поръчката по електронна поща и как се извежда страница за приключване на поръчка.
Глава 13, Други теми
Приключва примерите от магазина за вина и представя други теми, свързани с уеб приложенията за бази данни. Представяме пълните модули за търсене и разглеждане, основани на техниките от глава 5. Освен това разглеждаме автоматизираните заявки и употребата на шаблони за разделяне на кода на HTML от скриптовете.
Тази книга съдържа пет приложения:
Приложение А, Инструкции за инсталиране
Кратко ръководство за инсталиране на уеб сървъра Apache, PHP и MySQL под операционната система Linux; включва насоки към източници на по-подробна информация за инсталиране под Linux и други операционни системи.
Приложение Б, Интернет и мрежови протоколи
Разширява глава 1, разглежда по-задълбочено принципите в основата на Интернет.
Приложение В, Моделиране и създаване на релационни бази данни
Съдържа пример, онагледяващ проектирането на системните изисквания на магазина за вина чрез релационно моделиране. Показва се как този модел може да се превърне в база данни. Описват се командите на SQL, използвани за създаване на базата данни на магазина за вина.
Приложение Г, Управление на сесиите в слоя бази данни
Разширение на глава 8, показва как стандартният метод за управление на сесии чрез PHP може да бъде преместен в по-лесно разширяемия слой бази данни.
Приложение Д, Източници
Изброяват се полезни източници на информация, включително сайтове в Интернет и книги, съдържащи повече подробности по темите, представени в настоящата книга.
Предговор ................................................................................ IX
1.. Приложения за бази данни и Мрежата .......................... 1
Трислойна архитектура .............................................................................. 2
Клиентски слой ......................................................................................... 6
Среден слой ............................................................................................... 7
Слой база данни ....................................................................................... 11
Нашият пример......................................................................................... 17
2. PHP ..................................................................................... 26
Въведение в PHP ..................................................................................... 27
Условия и подслучаи................................................................................ 39
Цикли ...................................................................................................... 44
Един работещ пример .............................................................................. 47
Масиви .................................................................................................... 50
Низове ..................................................................................................... 64
Регулярни изрази ..................................................................................... 74
Функции за дата и час .............................................................................. 82
Функции за цели числа и числа с плаваща запетая .................................. 86
Дефинирани от потребителя функции ..................................................... 89
Обекти ..................................................................................................... 96
Разпространени грешки ......................................................................... 101
3. MySQL и SQL.................................................................... 106
Основи на базите данни ......................................................................... 107
Нека започнем ........................................................................................ 110
Командният интерпретатор на MySQL ................................................... 114
Управление на бази данни, таблици и индекси ...................................... 116
Вмъкване, обновяване и изтриване на данни ......................................... 119
Заявки със SQL SELECT ........................................................................ 124
Свързани заявки...................................................................................... 131
Модифициране на базата данни ............................................................. 138
Функции ................................................................................................ 143
Още за SQL и MySQL ............................................................................ 147
4. Заявки към уеб бази данни ......................................... 156
Свързване с база данни MySQL.............................................................. 158
Форматиране на резултатите .................................................................. 172
Примерно изследване: началният панел ................................................. 176
Взаимодействие с други DBMS чрез PHP............................................... 189
5. Заявки, предизвикани от потребителите ................... 198
Въвеждане на данни от потребителя....................................................... 200
Заявки с въведени от потребителите данни ............................................ 212
Пример: преглеждане на предишните и
следващите резултати ............................................................................ 221
Пример: извеждане на списък select ....................................................... 231
6. Записване в уеб бази данни ...................................... 237
Вмъкване, изтриване и обновяване в базата данни ................................ 238
Проблеми при записването на информация в базите данни ................... 262
7. Проверка на данните в сървъра и клиента ............ 276
Проверка на данни и съобщения за грешки при
уеб приложенията за бази данни ............................................................ 277
Проверяване на данни от страна на сървъра .......................................... 279
Проверяване на данни от страна на клиента с JavaScript ........................ 288
8. Сесии ............................................................................. 306
Изграждане на приложения, които запазват състоянието си .................. 307
Управление на сесии по Мрежата .......................................................... 310
Управление на сесии с РНР ................................................................... 311
Изследване: добавяне на сесии към магазина за вина ............................. 323
Кога да използвате сесии ....................................................................... 334
9. Проверки на самоличността и сигурност ................. 338
Проверяване на самоличност чрез НТТР................................................ 339
Проверка на самоличност по HTTP чрез РНР ........................................ 342
Проверка на самоличност посредством база данни ................................ 347
Проверки на самоличност при уеб приложенията за бази данни ............ 351
Защита на данните по Мрежата .............................................................. 365
10. Управление на клиентите на магазина .................... 369
Преглед на магазина за вина .................................................................. 370
Управление на клиентите ...................................................................... 374
Проверка на самоличността на потребителите ....................................... 392
Файловете за включване в магазина за вина .......................................... 397
11. Количката за пазаруване ............................................ 409
Началната страница на магазина за вина ................................................ 410
Архитектура на количката за пазаруване ................................................ 413
Управление на пренасочването .............................................................. 429
12. Поръчки и доставки в магазина за вина ................. 433
Финализиране на поръчките .................................................................. 435
Потвърждения чрез страници на HTML и чрез е-поща .......................... 440
13. Други теми .................................................................... 451
Автоматична поддръжка ......................................................................... 451
Шаблони ................................................................................................ 453
Търсене и преглеждане .......................................................................... 461
А. Инструкции за инсталиране ....................................... 469
Б. Интернет и мрежови протоколи ................................ 483
В. Моделиране и създаване на
релационни бази данни .............................................. 501
Г. Управление на сесиите в слоя бази данни ............. 519
Д. Източници ...................................................................... 534
Индекс ................................................................................... 547
1.. Приложения за бази данни и Мрежата .......................... 1
Трислойна архитектура .............................................................................. 2
Клиентски слой ......................................................................................... 6
Среден слой ............................................................................................... 7
Слой база данни ....................................................................................... 11
Нашият пример......................................................................................... 17
2. PHP ..................................................................................... 26
Въведение в PHP ..................................................................................... 27
Условия и подслучаи................................................................................ 39
Цикли ...................................................................................................... 44
Един работещ пример .............................................................................. 47
Масиви .................................................................................................... 50
Низове ..................................................................................................... 64
Регулярни изрази ..................................................................................... 74
Функции за дата и час .............................................................................. 82
Функции за цели числа и числа с плаваща запетая .................................. 86
Дефинирани от потребителя функции ..................................................... 89
Обекти ..................................................................................................... 96
Разпространени грешки ......................................................................... 101
3. MySQL и SQL.................................................................... 106
Основи на базите данни ......................................................................... 107
Нека започнем ........................................................................................ 110
Командният интерпретатор на MySQL ................................................... 114
Управление на бази данни, таблици и индекси ...................................... 116
Вмъкване, обновяване и изтриване на данни ......................................... 119
Заявки със SQL SELECT ........................................................................ 124
Свързани заявки...................................................................................... 131
Модифициране на базата данни ............................................................. 138
Функции ................................................................................................ 143
Още за SQL и MySQL ............................................................................ 147
4. Заявки към уеб бази данни ......................................... 156
Свързване с база данни MySQL.............................................................. 158
Форматиране на резултатите .................................................................. 172
Примерно изследване: началният панел ................................................. 176
Взаимодействие с други DBMS чрез PHP............................................... 189
5. Заявки, предизвикани от потребителите ................... 198
Въвеждане на данни от потребителя....................................................... 200
Заявки с въведени от потребителите данни ............................................ 212
Пример: преглеждане на предишните и
следващите резултати ............................................................................ 221
Пример: извеждане на списък select ....................................................... 231
6. Записване в уеб бази данни ...................................... 237
Вмъкване, изтриване и обновяване в базата данни ................................ 238
Проблеми при записването на информация в базите данни ................... 262
7. Проверка на данните в сървъра и клиента ............ 276
Проверка на данни и съобщения за грешки при
уеб приложенията за бази данни ............................................................ 277
Проверяване на данни от страна на сървъра .......................................... 279
Проверяване на данни от страна на клиента с JavaScript ........................ 288
8. Сесии ............................................................................. 306
Изграждане на приложения, които запазват състоянието си .................. 307
Управление на сесии по Мрежата .......................................................... 310
Управление на сесии с РНР ................................................................... 311
Изследване: добавяне на сесии към магазина за вина ............................. 323
Кога да използвате сесии ....................................................................... 334
9. Проверки на самоличността и сигурност ................. 338
Проверяване на самоличност чрез НТТР................................................ 339
Проверка на самоличност по HTTP чрез РНР ........................................ 342
Проверка на самоличност посредством база данни ................................ 347
Проверки на самоличност при уеб приложенията за бази данни ............ 351
Защита на данните по Мрежата .............................................................. 365
10. Управление на клиентите на магазина .................... 369
Преглед на магазина за вина .................................................................. 370
Управление на клиентите ...................................................................... 374
Проверка на самоличността на потребителите ....................................... 392
Файловете за включване в магазина за вина .......................................... 397
11. Количката за пазаруване ............................................ 409
Началната страница на магазина за вина ................................................ 410
Архитектура на количката за пазаруване ................................................ 413
Управление на пренасочването .............................................................. 429
12. Поръчки и доставки в магазина за вина ................. 433
Финализиране на поръчките .................................................................. 435
Потвърждения чрез страници на HTML и чрез е-поща .......................... 440
13. Други теми .................................................................... 451
Автоматична поддръжка ......................................................................... 451
Шаблони ................................................................................................ 453
Търсене и преглеждане .......................................................................... 461
А. Инструкции за инсталиране ....................................... 469
Б. Интернет и мрежови протоколи ................................ 483
В. Моделиране и създаване на
релационни бази данни .............................................. 501
Г. Управление на сесиите в слоя бази данни ............. 519
Д. Източници ...................................................................... 534
Индекс ................................................................................... 547
Хю Е. Уилямс е главен преподавател във факултета по информатика и информационни технологии в университета RMIT в Мелбърн, Австралия от седем години. В момента той преподава в две области – бази данни и уеб технологии - и е координатор на магистърска програма, съсредоточена върху Интернет. Неговите изследователски интереси включват изграждането на по-добри механизми за търсене, биоинформатика и разработване на по-бързи структури от данни. Когато не работи, Хю обича да тича, да гледа футбол и да следи състезанията по крикет. Хю има докторска степен по информатика от университета RMIT.
Дейвид Лейн е програмист в Multimedia Database Systems в университета RMIT в Мелбърн, Австралия. Като такъв той е участвал в разработването и популяризирането на Structured Software Manager – мащабно хранилище на документи SGML/XML и високо производителен уеб сървър. Освен това Дейвид е работил и в най-голямата телекомуникационна компания на Австралия – Telstra, в области като сателитни комуникации, изследване на човешкия фактор и електронен обмен на документи. Дейвид има бакалавърска степен по приложни науки (специализация в математика и информатика) от университета Swinburne.
Дейвид Лейн е програмист в Multimedia Database Systems в университета RMIT в Мелбърн, Австралия. Като такъв той е участвал в разработването и популяризирането на Structured Software Manager – мащабно хранилище на документи SGML/XML и високо производителен уеб сървър. Освен това Дейвид е работил и в най-голямата телекомуникационна компания на Австралия – Telstra, в области като сателитни комуникации, изследване на човешкия фактор и електронен обмен на документи. Дейвид има бакалавърска степен по приложни науки (специализация в математика и информатика) от университета Swinburne.