Wordpress и веб-разработка

Учимся строить с PHP: ускоренный курс

Учимся строить с PHP: ускоренный курс

Содержание

§1. Введение

Это руководство доступно для скачивания в формате PDF. Загрузите Learn To Build With PHP: ускоренный курс сейчас . Не стесняйтесь копировать и делиться этим со своими друзьями и семьей.

§2 — Привет, мир!

§ 3-форма

§ 4-базы данных

§5 — Получение контента из базы данных

§6 — логины и аутентификация

§7? -? Заключение и дальнейшее чтение

1. Введение

Какой твой любимый предмет в школе?

Если вы чем-то похожи на меня, держу пари, вы любили искусство. Гуманитарные науки. Вы знаете, предметы, которые некоторые высмеивают как бесполезные и туманные по своей природе, но независимо от того, что вам нравилось изучать их, потому что вы любили быть творческими
Учитесь строить с PHP: ускоренный курс строительства php 1
Могу поспорить, что вы никогда не думали о своих занятиях по ИТ так же, как вы думали об английском языке или искусстве; как чисто творческое начинание.

Какая жалость. Обучение программированию немного похоже на занятия по креативному языку. У вас есть идея, и вы можете выполнить ее так, как вам нравится. Это чистая креативность, но вместо того, чтобы обнажить свою душу на бумаге, вы приказываете компьютеру делать все возможное. Если вы можете мечтать об этом, и если вы можете описать это так, как ваш компьютер понимает, то вы можете сделать это.

Мы говорим с компьютерами через абстракции, называемые языками программирования. Их там целая куча, у каждого из которых есть свои преимущества, недостатки и поистине странные идиосинкразии. Они несовершенны по своей природе, но люди используют их, чтобы создавать невероятные и удивительные вещи.

Один из этих языков называется PHP.

Возможно, вы слышали об этом раньше. Это язык, который Facebook, WordPress и Wikipedia используют для ежедневного обслуживания миллиардов запросов. Это де-факто язык, используемый для обучения людей программированию для Интернета. Это красиво просто, но невероятно мощно.

И в этом руководстве я собираюсь научить вас, как вы можете использовать его для создания своих собственных сайтов.

У вас есть идея запуска убийцы, которую вы не совсем знаете, как выполнить? Вы хотите изучить язык, используемый для расширения WordPress? Вам просто интересно узнать о веб-программировании? Вы просто хотите освоить навыки, необходимые для того, чтобы оставаться актуальными в современной, ориентированной на технологии экономике знаний?

Независимо от вашей мотивации, эта книга призвана научить вас основам языка программирования PHP. Но сначала давайте немного урока истории.

1.1 История PHP

В младенчестве в Интернете все было немного … Ну? Плоский.

Сайты не были особенно интерактивными, и те, кто посещал эти сайты, сталкивались с относительно однонаправленным опытом. Добавление даже самых простых аспектов взаимодействия с пользователем было невероятно трудным, оставленным в области компьютерных ученых и опытных программистов.

А потом пришел Расмус Лердорф. Этот канадско-гренландский кодер создал язык программирования PHP, который позволял людям легко добавлять простейшие аспекты взаимодействия на свои веб-страницы. Это было ново, это было смело, и это взлетело почти немедленно.

Расмус Лердорф не мог предсказать, какое влияние его идея окажет на мир.

Сообщество стало формироваться, и программисты и компании охотно предоставляли время и деньги для развития языка. Медленно, но верно PHP начал создавать серьезные проблемы для Sun (теперь Oracle) и Microsoft, которые надеялись завоевать популярность на рынке веб-разработок с помощью своих платформ Java и ASP. Подъем языка программирования PHP может быть описан как поразительно быстрый.

Это было 20 лет назад. Век в компьютерном мире. С тех пор язык программирования PHP стал предпочтительным способом для миллионов программистов, которые используют PHP в своей работе, участвовать в работе с открытым исходным кодом и воплощать свои идеи в жизнь. Это основной продукт цифрового мира.

Вы можете стать одним из тех миллионов. Эта книга покажет вам, как.

1.2 Что мы собираемся осветить?

Это довольно короткая книга, но мы многое расскажем. Всего за несколько страниц мы собираемся создать простой клон Twitter.

Хотя он не будет иметь тот же набор функций и полировку популярного сайта микроблоггинга, но мы сможем публиковать 140-символьные сообщения с учетной записью, в которую мы войдем.

1.3 Все о лампе

К настоящему времени мы должны знать, что PHP — невероятный язык для создания интерактивных веб-страниц. Но мы не говорили о том, как мы превращаем этот код в реальный продукт. Итак, давайте сделаем это.

По большей части код PHP работает на веб-сервере. Веб-сервер отвечает за отправку веб-страниц всем, кто переходит на конкретное доменное имя или IP-адрес.

Самый распространенный выбор веб-сервера — это невероятно популярный веб-сервер Apache. Этот проект кроссплатформенного программного обеспечения с открытым исходным кодом поддерживает большую часть Интернета, причем 45% всех веб-сайтов обслуживают страницы с веб-сервера Apache. Тем не менее, полезно отметить, что существуют другие доступные веб-серверы, включая LightTTPD и IIS от Microsoft.

Это образует вторую букву в аббревиатуре LAMP, которая обозначает Linux, Apache, Mysql и PHP. Мы знаем, что такое PHP. Я только что объяснил вам, что такое Apache. Возможно, вы когда-нибудь слышали о Linux. Но что такое «М» в лампе? MySQL.

Давайте поговорим о MySQL. Я бы положил деньги на ваш сайт, чтобы хранить информацию, собранную вашим веб-приложением. Более того, держу пари, что вы захотите хранить эту информацию где-то структурированным, безопасным и организованным. Да, вам придется использовать базу данных, и для большинства целей MySQL является довольно солидным выбором. Мы поговорим об этом позже.

Наконец, давайте кратко коснемся Linux. Большинство веб-сайтов PHP обслуживаются из систем, работающих под управлением популярной операционной системы Linux с открытым исходным кодом. Однако вам не нужно использовать Linux в качестве среды разработки, если вы этого не хотите. Все в этой книге можно использовать на OS X, Windows и Android

Операционная система Apache, MySQL и установка языка программирования PHP являются четырьмя составными частями наиболее распространенных конфигураций PHP. Но как нам их достать?

1.4 Настройка среды разработки

В отличие от некоторых языков программирования, настройка среды разработки PHP проста. Действительно, есть ряд пакетов, которые выполняют всю тяжелую работу за вас и избавляют вас от необходимости устанавливать каждый компонент (PHP, MySQL и Apache) по отдельности.

Windows

Самый простой способ настроить среду разработки PHP в Windows — это использовать XAMPP от Apache Friends. Этот пакет включает в себя MySQL, копию языка программирования PHP и веб-сервера Apache, а также административную панель управления и плагины для SSL (протокол, используемый для шифрования трафика в сети), а также отправку электронной почты.
Учимся строить с помощью PHP: ускоренный курс php building 2
XAMPP бесплатен и может быть найден на сайте друзей Apache. Важно подчеркнуть, что доступны две версии XAMPP. Один имеет номер версии 1.8.2 и работает на несколько более старой версии языка программирования PHP, а другой — на версии 1.8.3 и использует текущую версию PHP. Хотя я настоятельно рекомендую вам загрузить последнюю версию, содержание этого руководства должно работать с обоими.

Linux

Linux немного сложнее. Существует множество операционных систем, которые существуют под эгидой «Linux», хотя каждая из них по-разному управляет установкой пакетов программного обеспечения.

Если вы используете Ubuntu и любой дистрибутив, который использует репозитории Ubuntu, вы можете запустить:

sudo apt-get установить ламповый сервер ^

Это установит сервер LAMP со всеми компонентами, необходимыми для следования этой статье. Этот процесс более подробно объясняется в этой статье, где я покажу вам, как установить сервер LAMP, зарегистрированный как часть установки платформы блогов WordPress.

Эти инструкции не будут работать в дистрибутивах, которые используют YUM или RPM для управления своими пакетами, так как инструкции по настройке сервера LAMP значительно отличаются. Я бы порекомендовал вам взглянуть на документацию, прилагаемую к вашей операционной системе.

Однако есть и другой вариант. Помните XAMPP? Ну, так получилось, что он поставляется с поддержкой Linux, и его можно скачать здесь . Однако, где это возможно, я настоятельно рекомендую вам установить сервер LAMP через менеджер пакетов.

Есть несколько причин для этого. Во-первых, он будет немного лучше интегрирован с вашей операционной системой и может быть легко обновлен. Кроме того, установка PHP через командную строку является хорошей практикой, если вы когда-либо развертываете свое приложение на VPS-сервере.

OS X

Я использую OS X в качестве основной платформы для разработки. Мне нравится гибкость, которую он мне предоставляет, и настройка среды разработки PHP в OS X безумно проста.

Я довольно неравнодушен к MAMP . Это входит в два продукта, один из которых является бесплатным, а другой стоит 59 долларов США (или 39 евро). Тем не менее, бесплатная версия более чем адекватна для целей данного руководства.

Чтобы получить MAMP, нужно получить ZIP-файл с веб-сайта, дважды щелкнув файл pkg и нажав «продолжить» так часто, как это необходимо.
Учимся строить с помощью PHP: ускоренный курс php building 3
Как и раньше, для вас вполне возможно создать среду разработки PHP с использованием XAMPP, которая также портирована на OS X. Это полностью зависит от вас.

Android

Android? Я имею в виду, Android отлично подходит для отправки твитов и убийства времени на Angry Birds. Но разработка программного обеспечения? Неа. право?

Неправильно. Если вы купили мобильный телефон Android в прошлом году или около того, вполне вероятно, что он работает на процессоре, который так же мощен, как любой VPS, который вы получите за менее чем 10 долларов. А это значит, что он достаточно хорош для запуска PHP, Apache и MySQL.

На рынке есть много серверов Android LAMP, но мне действительно нравится Palapa Server. Он прекрасно работает на устаревшем планшете Nexus 7, и мне даже удалось без проблем подключить к нему Android. Это не идеальная среда разработки, но это возможно.

1.5 Выбор правильного текстового редактора

Вы, наверное, знакомы с текстовыми процессорами. Скорее всего, вы использовали Microsoft Word, Open Office или Google Docs для написания писем, школьных заданий или деловых документов.

Но вы можете не знать, что невозможно использовать обычный текстовый процессор для разработки программного обеспечения и веб-сайтов. Это почему? Главным образом потому, что когда вы пишете документ, вы оставляете в файле все виды посторонней разметки и форматирования. Конечный продукт — это не только слова, которые вы пишете, но также выравнивание каждого слова и его стиль.

В результате при написании кода мы используем текстовые редакторы. Кто они такие? Проще говоря, они позволяют вам писать файлы, которые сохраняются в чистом виде. Нет форматирования. Просто персонажи.

При написании кода я, как правило, использую Sublime Text 2. Он поставляется с неограниченной бесплатной пробной версией (хотя иногда она требует обновления) и кучей функций, что делает написание программного обеспечения с ним радостью.

В частности, он поставляется с подсветкой синтаксиса для PHP, Javascript и HTML, что позволяет действительно легко читать код, который вы создаете. Вы можете скачать Sublime Text 2 здесь, и он доступен для Linux, Windows и OS X. Если вы не уверены, вы можете прочитать больше о Sublime Text 2 .

Если вы используете Android, вы обнаружите, что ваш выбор весьма ограничен. Я увлекаюсь VimTouch, который доступен бесплатно в магазине Google Play. У Vim довольно крутой курс обучения, но его стоит попробовать. .

1.6 Предварительные условия

Мы собираемся перейти к изучению PHP. Хотя я планирую мягко познакомить вас с этим удивительным языком программирования, я ожидаю, что вы заранее поймете некоторые вещи.

В частности, я собираюсь ожидать, что вы понимаете, как сайт структурирован с помощью HTML. Если вы не знаете свои теги <p> из тегов <span>, это не проблема. У есть книга XHTML « что приведет вас к скорости. Прочитайте это, и как только вы почувствуете себя уверенно, продолжайте читать.

Чувствуете себя авантюрным? Почему бы не узнать о последней версии HTML с нашей электронной книгой ? Хотя это не существенно, это может помочь вам позже.

2. Привет, мир!

Время для ознакомительного тура по PHP. И с чего лучше начать, чем традиционный «Hello World!» программа.
Учимся строить с помощью PHP: ускоренный курс php building 4
Но сначала нам нужно знать, где хранить наши файлы PHP. Мы храним их в месте под названием «Корень документа», что звучит сложно, но на самом деле это не так. Все это означает, что все, что хранится в этой папке, будет доступно любому, кто посещает IP-адрес компьютера через свой веб-браузер.

Расположение корня вашего документа зависит от того, как настроена ваша среда PHP. Если вы используете MAMP на OS X, вы можете найти его в / Applications / MAMP / htdocs. Если вы установили свой сервер LAMP в Linux с помощью диспетчера пакетов вашего дистрибутива, скорее всего, ваш корневой каталог документов будет / var / www. На XAMPP ваш корневой каталог находится в C: / xampp / htdocs /.

Перейдя в папку «Корень документа», создайте файл «index.php» и добавьте следующие строки.

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Microblogging Site</title> </head> <body> </body> </html> 

Учимся строить с помощью PHP: ускоренный курс php building 5
Здесь ничего не происходит, но у нас есть скелет веб-страницы. Эта домашняя страница будет найдена на ‘localhost’. Иногда за ним следует номер порта, который обычно равен «80», «8888» или «8080». Хотя, в зависимости от используемого вами пакета разработки PHP, он может отличаться. Если вы не уверены, обратитесь к документации.

Теперь давайте напишем наши первые строки PHP! Между <body> и </ body> напишите

 <?php echo(“Hello World!”); ?> 

Итак, давайте разберемся с этим.

Весь код PHP должен быть между ‘<? Php’ и ‘?>’. Если это не так, то веб-сервер не будет выполнять его. Тогда у нас есть «эхо». Как я уверен, вы уже догадались, эта функция печатает содержимое в браузере. Наконец, у нас есть контент, который мы хотим распечатать. Это заключено в скобки и речевые метки. Стоит отметить, что скобки (по большей части) являются необязательными, когда речь идет о вызове функции.

Когда мы завершили оператор ‘echo’, мы заканчиваем его точкой с запятой. Если это отсутствует, ваш код не будет работать.

Если это работает, вы должны увидеть «Hello World» в вашем браузере.
Учимся строить с помощью PHP: ускоренный курс php building 6

2.1 Должен ли PHP быть окружен HTML?

Нет.

Если мы выполняем действие, которое должно немедленно отображаться в веб-браузере, оно может быть вложено в HTML-документ. Это называется встроенным PHP, и это то, что мы использовали для вывода «Hello World» на экран.

Однако, для чего-то более сложного, мы всегда должны стремиться поместить это в свой собственный документ PHP. Как и в предыдущем примере, файл должен заканчиваться расширением «.php», а весь код должен начинаться и заканчиваться на «<? Php» и «?>».

2.3 Основные понятия языка

Прежде чем мы продолжим, давайте посмотрим на некоторые концепции языка в PHP. Хотя это не исчерпывающий список, он включает в себя основы, необходимые для продуктивной работы программиста на PHP. Как только мы пройдем через это, мы рассмотрим использование некоторых из этих концепций в контексте форм.

переменные

Переменные — это концепция, встречающаяся практически во всех языках программирования. Они используются для хранения значения, которое может быть извлечено, использовано и изменено позже.

Возможно, вы знакомы с языком, который требует от вас указать значение переменной. К ним относятся C #, C, C ++ и Java, и обычно выглядят примерно так.

int x = 10;

Вы также можете быть знакомы с Javascript, где переменные объявляются с ключевым словом ‘var’.

var x = 10;

В PHP, однако, переменные объявляются с символом доллара.

$ х = 10;

Переменные PHP не могут начинаться с цифры или специального символа, кроме подчеркивания. Кроме того, их нельзя назвать «this», так как это зарезервированное ключевое слово.

Если заявления

Если заявления полезны. Они позволяют вам выполнять код в зависимости от того, какое условие выполняется. Рассмотрим следующий код.

 $x = 5; if ($x == 4) { echo(“Hello World”); } elseif ($x == 3) { echo(“Hello Dave”); } else { echo(“Hello Brian”); } 

Итак, первое исследуемое условие — если $ x равно четырем (обратите внимание, что двойные символы равны). Так как это не так, интерпретатор PHP будет смотреть на следующий условный оператор, то есть, если $ x равен 3. Если это не так, он перейдет к последнему оператору, который выведет «Hello Brian», если его нет условия были выполнены.

Вы можете проверить, является ли переменная пустой (также известной как ‘null’ или ‘null value’), поставив перед ней символ! в утверждении «если». Например:

 if (!$x){ echo(“x is empty”); } 

Пока заявления

В то время как операторы выполняют код многократно, пока выполняется условие. Рассмотрим следующий код.

 $x = 10; while ($x > 1) { echo($x); $x = $x - 1; } - $x = 10; while ($x > 1) { echo($x); $x = $x - 1; } 

Этот код просматривает значение $ x, и если оно больше единицы, оно отображает значение $ x и затем удаляет единицу из него. Это будет происходить до тех пор, пока условие ‘$ x> 1’ больше не будет выполнено. То есть он равен 1 или меньше.

Для петель

Поскольку циклы, как концепция в программировании, часто весьма пугают новичков. Они не должны быть, хотя. Хотя они якобы довольно сложны, их действительно легко понять, когда они разбиты. Давайте напишем простой цикл for, который насчитывает от одного до десяти.

 for($i = 0; $i < 10; $i++){ echo($i); } 

Что тут происходит? Хорошо, сначала мы создаем переменную со значением 0 ($ i = 0;). Затем мы устанавливаем условие «если $ i меньше 10, продолжаем» ($ i <10). Затем мы добавляем единицу к I ($ i ++) и выполняем содержимое фигурных скобок, возвращаясь к исходному коду.

функции

Функции являются полезным инструментом, когда дело доходит до программирования. Они позволяют вам писать код, который является более последовательным, и тратить меньше времени на написание одних и тех же вещей снова и снова, разделяя код в один фрагмент, который можно вызывать при необходимости.

Они также очень просты в создании. Вот как мы создаем функцию, которая выдает «Hello World» при вызове. Эта функция будет называться sayHello ().

 function sayHello(){ echo(“Hello World”); } 

Вы также можете передавать значения функций. Они известны как параметры и заключены в две скобки в первой строке объявления. Например:

 function sayHello($hello){ echo($hello); } 

И можно назвать так:

 sayHello(“Hello World”); 

Наконец, мы можем получить функции для возврата значений.

 function returnHello(){ return “Hello World”; } 

И может быть использовано следующим образом.

 x = returnHello(); echo(returnHello()); 

2.4 Двигаемся дальше

Мы изучили основы управления потоком на языке PHP, а также то, как мы можем использовать переменные и функции для хранения значений и фрагментов кода для будущего использования. В следующей главе мы расширим наше понимание языка программирования PHP, рассмотрев, как мы можем собирать данные с помощью форм, формируя тем самым первую часть нашего клона Twitter.

3. Формы

3.1 Как формы работают в HTML

Формы есть везде.

Нет, серьезно. Они есть. Когда вы оставляете комментарий на ; когда вы покупаете что-то у Amazon и должны записать свой адрес и номера кредитных карт; когда вы составляете и отправляете твит, вы заполняете форму.
Учимся строить с помощью PHP: ускоренный курс php building 7
Я знаю, что звучит как неработающая запись, но если вы еще не читали руководство по HTML5, вам следует. В этой главе он вам не нужен, но он покажет вам несколько интересных уловок, которые вы можете сделать с формами в последней версии языка разметки HTML.

3.2 Создание нашей первой формы

Вы, наверное, видели Twitter раньше.
Учимся строить с PHP: ускоренный курс php building 8
Ядром твита является многострочное текстовое поле и кнопка, которая отправляет его на серверы Twitter. Итак, как мы можем создать элементарную версию этого в HTML? Ну, это выглядит примерно так:

 <body> <form action="postForm.php" method="post"> <TextArea name="microBlog" id="microBlog" cols="30" rows=“10"> </br> </TextArea> <input type="submit"> </form> </body> 

Учимся строить с помощью PHP: ускоренный курс php building 9
Итак, давайте разберемся с этим.

Форма заключена в теги формы. Форма принимает два аргумента, первый из которых является ссылкой на файл PHP, который содержит код, который обрабатывает нашу форму. Второй метод — это способ отправки данных на веб-сервер. Это может быть «post» или «get».

Внутри у нас есть элемент TextArea. Знаете ли вы, в чем разница между TextArea и элементом ввода?

Это действительно тонкая разница. Они делают практически одно и то же, хотя элемент TextArea позволяет вводить несколько строк содержимого, тогда как вход (если он не используется для отправки формы) может принимать только одну строку содержимого.

Поскольку мы создаем клон Twitter, мы собираемся использовать элемент TextArea для захвата записи. Этот элемент принимает несколько аргументов. Первые два — это name и id, которым мы присвоили значение microBlog. Вторые два — это «столбцы» и «строки», которым мы дали значения «30» и «10» соответственно. Они могут быть скорректированы, как вы считаете нужным.

Наконец, у нас есть элемент ввода. Это имеет тип «отправить» и отображается в браузере как кнопка. После нажатия он передает содержимое в postForm.php.

У нас должно быть что-то похожее на это. Не самая приятная вещь в мире, но об этом мы поговорим позже.

3.3 Обработка этого ввода с помощью PHP

В соответствии с мягким темпом этой книги, мы просто посмотрим, как мы можем захватить ввод, а затем распечатать его на экране. Мы рассмотрим постоянство и сохранение его в базе данных позже.

Итак, помните тот файл postForm.php, который мы упоминали ранее? Создайте это в корне документа.

Теперь добавьте следующие строки.

 <?php $microBlog = $_POST['microBlog']; echo $microBlog; ?> 

Итак, что же это за $ _POST?

Ну, это то, что мы называем суперглобальной переменной. Это звучит сложно, но это не так. В простейшей форме это означает, что всякий раз, когда нам нужно ссылаться на вход формы, мы должны использовать это. В конце $ _POST мы записываем идентификатор ввода формы, на которую мы ссылаемся. Это должно быть зажато между квадратными скобками и кавычками.

Мы присваиваем содержимое «microBlog» переменной, а затем выводим его на экран. Просто, правда.

Но работает ли это? Давайте попробуем.
Учимся строить с помощью PHP: ускоренный курс php building 10
Мы переходим на нашу домашнюю страницу и записываем что-то в форму. Затем мы нажимаем «отправить».
Учимся строить с помощью PHP: ускоренный курс php building 11
Как видите, наш вклад возвращается нам. Вот вопрос, хотя. Что произойдет, если мы закроем вкладку браузера и снова откроем localhost / postForm.php?
Учимся строить с помощью PHP: ускоренный курс php building 12
Там ничего нет. Niet. Нада.

Это потому, что он не хранится нигде, кроме как в кратковременной памяти нашего веб-браузера. Как только это ушло, это ушло.

Тем не менее, есть простой способ гарантировать, что наши данные сохраняются навсегда. Мы должны положить его в базу данных. Хотя поначалу они не самые захватывающие темы, их довольно легко освоить.

И в следующей главе я покажу вам, как вы можете хранить свои твиты в базе данных.

4. Базы данных

Я хотел бы в кое-чем признаться. Мне очень нравятся базы данных.

С тех пор, как были изобретены компьютеры, нам нужно было хранить контент. Все, от пароля, который вы используете для входа в Facebook, до конфигурации вашего компьютера, до вашего банковского счета, хранится в базе данных. Более ранние версии баз данных были принципиально примитивными и ограниченными. С тех пор они развивались и развивались, улучшая скорость и надежность их функционирования. Это в значительной степени результат 50-летнего развития.
Научитесь строить с помощью PHP: ускоренный курс php building 13
Один из способов хранения данных — реляционная база данных. Эта парадигма хранения данных была введена в 80-х годах и основана на сетке взаимосвязанных таблиц с данными, организованными в строки и столбцы.

Существует огромное количество систем управления базами данных, которые используют эту парадигму (известную как RDBMS), включая Oracle, MsSQL и MariaDB. Но мы будем только смотреть на один. MySQL.

MySQL — это современная система управления базами данных. Количество сайтов, которые зависят от этого, головокружительно велико. Это база данных WordPress и Facebook, основанная на надежной парадигме реляционных баз данных.

Преимущества базы данных MySQL слишком многочисленны, чтобы упоминать.

Во-первых, это бесплатно; как по стоимости, так и с точки зрения лицензирования. Его можно найти на любой платформе, поскольку он был портирован на некоторые из самых непонятных операционных систем в мире.

Более того, это достаточно легкий программный пакет, и он может довольно комфортно работать в большинстве систем VPS с низким энергопотреблением.

Также очень легко начать работу с MySQL, и есть огромное количество информации для людей, которые хотели бы получить от этого информацию, включая невероятно подробную и точную пользовательскую документацию.

Чтобы взаимодействовать с MySQL, нам нужно использовать язык программирования SQL (Structured Query Language). Это позволяет нам выполнять сложные запросы к базе данных, сильно напоминая письменный английский. В результате, для начинающих действительно легко начать.

Но прежде чем мы перейдем к этому, давайте поговорим о типах данных MySQL.

4.1 Типы данных MySQL

MySQL требует, чтобы каждый столбец в таблице был классифицирован с определенным типом данных. Например, чей-то возраст будет классифицирован как число, в то время как чье-то имя будет состоять из переменного числа буквенных символов.

Мы указываем типы данных для обеспечения согласованности данных, хранящихся в таблице.

Хотя это звучит сложно, уверяю вас, это не так. То, о чем мы говорим, — это знание данных, которые мы планируем сохранить, и умение их классифицировать.

В MySQL огромное количество типов данных. Мы поговорим только о двух из них, которые более чем соответствуют целям этой книги.

Varchar (х)

Когда вы вводите контент, который может содержать дисперсию чисел, специальных символов и букв, рекомендуется использовать поле varchar. Они могут быть различной длины. Размер поля с максимальной длиной в тридцать символов может быть представлен с помощью varchar (30).

целое число

При хранении чисел мы используем целочисленное значение. Они могут варьироваться от -2147483648 до 2147483647, хотя существует больше доступных типов данных, если вам нужно представлять большие числа. В этом случае обратитесь к руководству по MySQL .

Другие типы данных MySQL

Существует огромное количество доступных типов данных, которые можно использовать для представления и хранения всех видов данных. К ним относятся большие фрагменты текста, истинные или ложные значения и двоичные файлы. Если вам интересно узнать больше, ознакомьтесь с документацией по MySQL.

4.2 Создание нашей базы данных

Хорошо, теперь пришло время начать работу над базой данных для нашего клона Twitter.

Во-первых, нам нужно подключиться к MySQL. Если вы используете Linux и вы установили MySQL через менеджер пакетов, вы можете подключиться через терминал с помощью следующей команды.

mysql -u root -p

После чего вам будет предложено ввести пароль.

Пользователи XAMPP и MAMP могут использовать PHPMyAdmin, который входит в комплект и позволяет вам редактировать вашу базу данных с хорошим веб-интерфейсом.

Итак, сначала нам нужно создать базу данных для нашего веб-сайта и создать таблицу для размещения сообщений в нашем микроблоге.

Либо через PHPMyAdmin, либо через консоль MySQL, выполните следующие строки.

СОЗДАТЬ БАЗУ ДАННЫХ MicroBlog;
Учимся строить с помощью PHP: ускоренный курс php building 14
ИСПОЛЬЗОВАНИЕ MicroBlog;
Учимся строить с помощью PHP: ускоренный курс php building 15

 CREATE TABLE MicroBlog ( id integer auto_increment, post varchar(255), primary key (id) ); 

Если вы не видите сообщение об ошибке, ваша таблица была создана без помех.
Учимся строить с помощью PHP: ускоренный курс php building 16
Итак, несколько вещей, которые вы могли заметить там. Во-первых, мы заканчиваем каждое выражение точкой с запятой, как мы делали, когда писали PHP.

Во-вторых, все довольно очевидно, не так ли? SQL читается как письменный английский, и довольно легко понять, что происходит.

Тем не менее, в операторе CREATE TABLE есть некоторые вещи, с которыми вы можете быть незнакомы. Первый — это auto_increment. Что это делает?

Ну, ID это поле, которое уникально идентифицирует каждый пост. Когда мы его создали, мы присвоили ему атрибут auto_increment, и всякий раз, когда новая строка добавляется в базу данных, этой строке присваивается уникальный номер. Это число считается на единицу для каждой добавляемой строки.

Наконец, что такое «первичный ключ (id)»? Ну, мы хотим, чтобы ‘id’ был полностью уникальным. Мы также хотим, чтобы ID был полем, которое может идентифицировать строку. Создание «id» первичным ключом гарантирует выполнение этих условий.

4.3 Неправильный способ запроса базы данных

Итак, как мы можем вставить сообщение в нашу базу данных? Отличный вопрос

Традиционный способ сделать это в PHP выглядел примерно так:

$ conn = mysqli_connect ($ DBServer, $ DBUser, $ DBPass, $ DBName);

Вы должны создать соединение с сервером, используя имя хоста, учетные данные базы данных и имя базы данных, и назначить это объекту. В данном случае мы назвали его $ conn (для подключения).

Затем мы определяем запрос к базе данных, который мы хотим сделать.

$ query = mysqli_query ($ conn, «INSERT INTO MicroBlog VALUES (‘$ post’)»);

И тогда мы закроем соединение с базой данных.

mysqli_close ($ сопп);

Итак, что не так с этим? Ну, это опирается на одно ключевое предположение; что любой вход, переданный в базу данных, может быть доверенным.

Это не всегда так. Если вы не очень осторожны, вполне возможно проникнуть в какой-нибудь произвольный код SQL, что может привести к утечке данных или порче записей, хранящихся в вашей базе данных.

LinkedIn узнал об этом нелегко. Плохо очищенный ввод привел к непреднамеренному (и несанкционированному) выпуску тысяч записей пользователей в результате разгрома, который назывался LeakedIn. Это был инцидент, который дорого им обошелся, как с точки зрения финансовых затрат на исправление ситуации, так и с точки зрения гудвилла, потерянного в результате потери миллионов строк личной информации.

Итак, как мы можем безопасно использовать базу данных с PHP?

4.4 Познакомьтесь с MeekroDB

MeekroDB — это библиотека, которая позволяет легко взаимодействовать с базой данных, не будучи широко открытыми для внешней угрозы. Он был разработан с нуля, чтобы быть невосприимчивым к атакам SQL-инъекций . Это бесплатно для некоммерческого использования, но если вы планируете использовать его в коммерческом проекте, вам нужно заплатить за лицензию.
Учимся строить с помощью PHP: ускоренный курс php building 17
Загрузите копию MeekroDB с официального сайта. Получив его, разархивируйте его и поместите в корневой каталог документа.

Теперь вернемся к вашему текстовому редактору. Откройте postForm.php и добавьте следующие строки.

 require_once 'meekrodb.2.2.class.php'; DB::$user = 'user'; DB::$password = 'password'; DB::$dbName = 'database'; 

Измените «user», «password» и «database», указав фактическое имя пользователя, пароль и имя базы данных.

Теперь пришло время вставить ваш пост в вашу базу данных. Добавьте следующие строки кода.

 DB::debugMode(); $microBlog = $_POST['microBlog']; DB::insert('MicroBlog', array( 'post' => $microBlog) ); 

Итак, давайте разберемся с этим.

DB :: DebugMode (); выдает сообщения об ошибках, если мы делаем что-то не так. В результате, это очень удобно, чтобы оставить это в нашем коде, так как это делает процесс разработки немного проще.

DB :: insert вызывается, когда нам нужно вставить один или несколько элементов в базу данных. «MicroBlog» относится к таблице базы данных, тогда как «post» содержит сообщение, которое вы только что опубликовали на веб-сайте.

Мы можем увидеть, достигли ли наши сообщения базы данных, открыв PHPMyAdmin и посмотрев.
Учимся строить с помощью PHP: ускоренный курс php building 18
Если вы используете MySQL в Linux и установили его из диспетчера пакетов, вы можете открыть MySQL из терминала и выполнить следующие команды.

Используйте MicroBlog;

Выберите * из MicroBlog;

Просто, правда? Давайте попробуем, а затем мы посмотрим на отображение наших сообщений на главной странице. Обещаю, это не так уж сложно.

5. Получение контента из базы данных

Мы уже представили MeekroDB. Это библиотека базы данных, которая позволяет нам безопасно взаимодействовать с базой данных MySQL в контексте приложения PHP.

Если вы завершили предыдущую главу, у вас должно быть несколько сообщений в базе данных. Тем не менее, они просто сидят в базе данных и не используются. Как жаль! Итак, давайте посмотрим на получение их в браузере.

Мы знаем, что мы можем использовать SQL — язык, используемый MySQL для запроса базы данных. В то время как MeekroDB позволяет вам вставлять контент в вашу базу данных без использования SQL, вы должны использовать некоторый SQL для извлечения записей.

5.1 Выбор и представление результатов

Одним из таких утверждений является «Выбор оператора». Ранее мы использовали это, чтобы увидеть, распространились ли наши файлы в базу данных. Мы собираемся использовать это снова здесь.

Под тегом закрывающей формы добавьте <? Php and?> И между ними напишите следующие строки кода.

 <?php require_once 'meekrodb.2.2.class.php'; DB::$user = 'root'; DB::$password = 'root'; DB::$dbName = 'MicroBlog'; $results = DB::query("SELECT post FROM MicroBlog"); foreach ($results as $row){ echo "<div class='microBlog'>" . $row['post'] . "</div>"; } ?> 

Давайте посмотрим на это более внимательно. Мы знаем, что делают первые пять строк. Ранее мы использовали их как часть вставки наших сообщений в базу данных.

$ results = DB :: query («ВЫБРАТЬ пост из микроблога»);

Эта строка выбирает все сообщения из таблицы «MicroBlog», а затем копирует их в переменную с именем $ results.

И тогда это становится интересным. Таким образом, $ results состоит из нескольких элементов. Это означает, что мы можем перебирать их, используя что-то, что сильно напоминает те циклы for, на которые мы ранее смотрели.

 foreach ($results as $row){ echo "<div class='microBlog'>" . $row['post'] . "</div>"; } 

Итак, здесь мы рассмотрим каждый результат и сопоставим его с переменной. Затем мы распечатываем его между тегами div. Это позволяет нам инкапсулировать каждый пост и применять стили к каждому из них.
Учимся строить с помощью PHP: ускоренный курс php building 19
Сейчас это выглядит не очень, не так ли? Давайте изменим это.

5.2 Стайлинг

Создайте новый файл с именем ‘style.css’ и добавьте следующую строку HTML-кода между тегами ‘Head’.

<link rel = ”stylesheet” type = ”text / css” href = ”style.css”>

Теперь пришло время сделать каждый пост более заметным и заметным. В ‘style.css’ добавьте следующие строки.

 body { background-color: #99CCFF ; } form { text-align: center; margin-left: 300px; margin-right: 300px; } .microBlog { text-align: center; margin-left: 300px; margin-right: 300px; margin-bottom: 10px; border-style:solid; border-width:5px; } 

Я не буду оскорблять ваш разум, объясняя построчно, что это делает. Вы можете, вероятно, решить это, просто прочитав это. Мы дали каждому посту небольшое отступление, чтобы оно было относительно центрировано на экране. Мы также дали ему границу и выровняли форму по центру экрана.

Это производит что-то похожее на это.
Учимся строить с помощью PHP: ускоренный курс php building 20
Круто, верно?

Теперь, в нашей предпоследней главе, мы соберем все, что мы узнали до сих пор, и посмотрим, как мы можем обрабатывать логины.

6. Логины и аутентификация

Давайте представим, что мы хотим, чтобы только один человек мог публиковать обновления на нашем сайте. Как будто мы создаем очень личный твиттер.
Учимся строить с помощью PHP: ускоренный курс php building 21

6.1 Таблица пользователей

Во-первых, давайте создадим таблицу для обработки нашей регистрационной информации. Это будет иметь два поля. Первый предназначен для имени пользователя, а второй — для пароля. Это может быть представлено в SQL следующим образом:

 CREATE TABLE Credentials ( username varchar(255), password varchar(255), PRIMARY KEY (username) ); 

Как и раньше, запустите это для вашей базы данных, либо через терминал, либо через PHPMyAdmin.
Учимся строить с помощью PHP: ускоренный курс php building 22

6.2 Сессии PHP

Теперь нам нужно обработать логины и регистрации. Мы делаем это с помощью PHP-сессий. Способ, которым они работают, достаточно прост. У вас есть несколько переменных, которые присутствуют в веб-приложении, и они могут находиться в состоянии присутствия или нет, в зависимости от того, вошел ли пользователь в систему или нет.

Прежде чем вы сможете обрабатывать сеансы, вы должны сначала инициализировать сеанс. Добавьте эту строку в начало index.php.

<? php session_start (); ?>

Эта строка должна появляться в каждом файле, который обращается к сеансу.

Теперь нам нужно убедиться, что форма отправки сообщения видна только тем, кто вошел в систему. Замените форму, которую мы создали ранее, следующими строками кода.

 <?php if(isset($_SESSION['loggedin'])){ echo '<form action="postForm.php" method="post"> <TextArea name="microBlog" id="microBlog" cols="30" rows="10"> </TextArea> </br> <input type="submit"> </form>'; } ?> 

$ _SESSION [‘loggedin’] является переменной сеанса. Когда он установлен, пользователь сможет видеть форму, используемую для создания сообщений. Давайте добавим что-то еще.

 else { echo '<form action=“login.php" method=“post”> Username: <input type=“text" name=“username” id="username" /> </br> Password: <input type=“text" name=“password” id="password" /> <input type="submit"> </form>'; } 

Когда вы перейдете к localhost / index.php сейчас, вы увидите, что вы больше не можете публиковать статус, и вам предлагается войти в систему. Это работает!

Но сначала нам нужно создать учетную запись для входа в систему. Итак, давайте добавим следующие строки на нашу страницу индекса.

 if (isset($_SESSION['loggedin'])){ echo '<a href="logout.php">Log Out</a>'; } else { echo '<a href="register.php">Register</a>'; } 

Если наш пользователь вошел в систему, ему будет предоставлена ​​возможность выйти из системы. Аналогичным образом, если наш пользователь не вошел в систему, ему будет предоставлена ​​возможность зарегистрироваться.

Теперь нам нужно создать форму регистрации. Создайте новый файл с именем register.php и добавьте следующее.

 <?php session_start(); ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Register</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h2>Register</h2> <form action=“registerForm.php" method=“post”> <p>Username: <input type=“text" name=“username” id="username"></p> <p>Password: <input type=“text" name=“password” id="password"></p> <input type="submit"> </form> </body> </html> 

Пока вы это делаете, добавьте следующие строки в style.css.

 h2 { text-align: center; } 

6.3 Регистрация пользователей

Теперь нам нужно добавить логику для регистрации пользователя. Создайте новый файл с именем registerForm.php и добавьте следующие строки.

 <?php require_once 'meekrodb.2.2.class.php'; DB::$user = 'root'; DB::$password = 'root'; DB::$dbName = 'MicroBlog'; $username = $_POST['username']; $password = $_POST['password']; $hash = password_hash($password, PASSWORD_DEFAULT); DB::insert('Credentials', array( 'username' => $username, 'password' => $hash )); header('Location: http://localhost:8888/index.php'); ?> 

Многое из этого должно быть довольно знакомым, но кое-что новое. Я объясню это сейчас.

Безопасность всегда на переднем крае разработчика приложений. Всегда бывает неловко, когда происходит серьезное нарушение безопасности, что приводит к утечке информации о клиентах. Доверьтесь мне. Это никогда не приятно.

И это не помогает людям перерабатывать пароли. Да, если ваш сайт взломан и кто-то получит доступ к паролям ваших пользователей, это может привести к взлому учетных записей ваших пользователей на других сайтах.

Хеширование позволяет вам зашифровать пароль с помощью криптографического алгоритма, что значительно затрудняет его возврат к исходному виду. Эта задача решается с помощью одной строки кода в PHP.

$ hash = password_hash ($ password, PASSWORD_DEFAULT);

Однако приведенного мною примера недостаточно. Пароли должны быть засолены. Вы спросите, что это? Ну, это еще одна линия защиты, которая делает практически невозможным расшифровку паролей вашего пользователя. Тем не менее, это слишком сложно для маленького гида. В результате я бы посоветовал вам продолжить чтение этой темы. Этот пост в блоге дает довольно солидное руководство по соляции паролей с помощью PHP [http://www.sitepoint.com/hashing-passwords-php-5-5-password-hashing-api/].

Наконец, у нас есть эта любопытная линия.

header (‘Местоположение: http: // localhost: 8888 / index.php’);

Это выполняет одну задачу — перенаправить браузер на домашнюю страницу. Просто, правда.

6.4 Вход в систему

Создайте файл с именем ‘login.php’ и добавьте следующие строки.

 <?php session_start(); ob_start(); require_once 'meekrodb.2.2.class.php'; DB::$user = 'root'; DB::$password = 'root'; DB::$dbName = 'MicroBlog'; $username = $_POST['username']; $password = $_POST['password']; $result = DB::queryFirstRow("SELECT * FROM Credentials where username = %s", $username); $hash = $result['password']; if (password_verify($password, $hash)) { $_SESSION['loggedin'] = 1; header('Location: http://localhost:8888/'); } else { echo "Login failed"; } ?> 

Как и раньше, здесь нет ничего дико нового. Мы ввели DB :: queryFirstRow. Тем не менее, это довольно прозрачно с тем, что он делает, и получает первую строку из базы данных. Это немного быстрее, чем DB :: query, и создает объект, который нам не нужно перебирать.

Еще одна концепция, которая была представлена, — это функция password_verify (). Это позволяет нам сравнивать хешированный и хешированный пароль и видеть, совпадает ли он. Если это так, мы устанавливаем значение $ _SESSION [‘loggedin’] (в данном случае одно) и затем перенаправляем на домашнюю страницу, где мы можем выйти из системы и опубликовать новые твиты.

Теперь проверьте это, увидев, можете ли вы войти в систему и создать новый пост!
Учимся строить с помощью PHP: ускоренный курс построения php 23

6.5 Выход

Выйти легко. Создайте новый файл с именем ‘logout.php’. Внутри добавьте следующие строки.

 <?php session_start(); session_destroy(); header('Location: http://localhost:8888/'); ?> 

Сеанс, который ранее содержал активированную переменную ‘loggedin’, теперь уничтожен, что фактически вывело нас из системы. После уничтожения пользователь перенаправляется на домашнюю страницу.

7. Заключение и дальнейшее чтение

Надеюсь, вам понравилось это краткое введение в язык программирования PHP.

Я знаю, что это был тур со свистом. Я знаю, это было кратко. Я знаю, что это было спешно. Несмотря на это, я надеюсь, что четко изложил все свои пункты. Если вы недовольны или у вас есть дополнительные вопросы, пожалуйста, свяжитесь со мной. Мой адрес электронной почты me@matthewhughes.co.uk, и со мной также можно связаться через Twitter. Мое имя пользователя @matthewhughes, и я всегда рад ответить на отзывы читателей.

Прежде чем мы закончим, я хочу затронуть еще пару вещей.

Во-первых, язык программирования PHP — это потрясающий, мощный инструмент. Если вы хотите продолжить чтение, ознакомьтесь с PHP «Правильный путь» и « Программирование PHP» от O’Reilly. Оба являются удивительными ресурсами, и настоятельно рекомендуется.

Мои коллеги в также ранее рекомендовали некоторые бесплатные ресурсы для изучения PHP

Наконец, исходный код этого проекта доступен на моем личном Github. Вы можете найти хранилище здесь . Если вы не уверены, что такое Git, ознакомьтесь с этой статьей о контроле версий Git. . Если вы не знаете, как использовать Github, ознакомьтесь с Git Real от CodeSchool . Он быстро разовьет вас и бесплатно.

Похожие посты
Wordpress и веб-разработка

Добавить красивые слайд-шоу в сообщения WordPress с помощью SlideDeck

Wordpress и веб-разработка

Сделайте свой WordPress блог iPad удобным с Onswipe

Wordpress и веб-разработка

Как создать карту изображения с помощью GIMP

Wordpress и веб-разработка

WordPress: еще 3 скрытых жемчужины в наборе плагинов Jetpack, а также обновлено приложение WordPress!