Использование ob_start при поддержке проектов на php. Принудительное закрытие сессии

Тема реферата

Основы веб-программирования

Введение

Веб-программирование - раздел программирования 1. История появления

С середины годов, 1990-х веб-разработка была одной из наиболее динамично развивающихся отраслей в мире. В 1995 году меньше, было чем 1000 веб-разработки компании в Соединенных Штатах, но к 2005 году насчитывалось более 30000 таких компаний, только США. в Сети развития промышленности ожидается рост на 20% к 2010 году. Рост этой отрасли толкают крупных желающих компаний, продавать товары и услуги для своих клиентов и автоматизировать. Вместо стоимости в десятки тысяч долларов, как это в было случае раннего создания веб-сайтов, теперь можно разработать простой веб-сайт для менее тысячи долларов, в зависимости от сложности и содержания. объема веб-компании. Малые разработки сайта . Язык HTML

Язык HTML был разработан британским Данный язык прост в освоении и является классическим языком. С помощью него написаны многие сайты можно даже сказать что 90% сайтов написано с его использованием. С годами данный язык совершенствовался и совершенствуется по сей день.2.0 - Стандарт был утвержден в ноябре 1944 г. организацией IETF (Internet Engineering Task Force). В нем были расширены возможности предыдущей версии языка и он получил широкое распространение как у профессионалов, так и любителей.3.0 - Проект версии языка был опубликован в марте 1995 г. В нем были произведены радикальные изменения предыдущих версий включены дополнительные возможности, включая таблицы, математические выражения и т.д. Это стало причиной того, что он не стал официальной спецификацией и был заменен спецификациейHTML 3.2.3.2 (кодовое наименование проекта: Wilbur) - Был опубликован и начал широко использоватья с мая 1996 г., получил официальное утвержден в 1997 г. Получил популярность из-за совместимости с HTML 2.0.4.0 (кодовое наименование проекта: Cougar ) - последняя версия языка. В нем реализованы многие распространенные концепции Web -дизайна и приняты некоторые средства HTML 3.2. Самым значительным отличием HTML 4.0 от предыдущих версий является кодировка Unicode , тег Object, позволяющий работать с мультимедиа (в т.ч. с видеоклипами и звуком) и др.

HTML5 вводит несколько новых элементов На данный момент последней версией является HTML 5.

Язык PHP

Язык PHP был создан для решения конкретной практической задачи в среде интернет (какой именно можно узнать, прочитав первую лекцию курса). Мы тоже постараемся не отвлекаться слишком сильно на теоретические рассуждения, и будем стремиться к решению какой-нибудь конкретной задачи в каждой из лекций. Большинство примеров взяты из реально существующей системы: виртуального музея истории информатики. Первая часть курса посвящена изучению основ синтаксиса и управляющим конструкциям. После этого рассматривается технология клиент-сервер, как основная сфера приложения языка PHP. Затем переходим к изучению наиболее полезных на наш взгляд встроенных функций и решению с их помощью практических задач. Хотя объектная модель в языке PHP не самая богатая, ее принципиальное наличие позволяет естественным образом описывать объектные модели данных. В качестве базовой модели будет рассмотрена модель документа виртуального музея информатики. После этого будет рассмотрен ряд прикладных аспектов: работа с файловой системой, с БД, строками, сессиями, DOM XML - все это позволит рассмотреть ключевые задачи практического использования языка.

Его создатель, Расмус Лердорф, хотел знать, сколько человек читают его online-резюме, и написал для этого простенькую CGI-оболочку на языке Perl, т.е. это был набор Perl-скриптов, предназначенных исключительно для определенной цели - сбора статистики посещений.

«PHP может все», - заявляют его создатели. В первую очередь PHP используется для создания скриптов, работающих на стороне сервера, для этого его, собственно, и придумали. PHP способен решать те же задачи, что и любые другие CGI-скрипты, в том числе обрабатывать данные html-форм, динамически генерировать html страницы и т.п. Но есть и другие области, где может использоваться PHP. Всего выделяют три основные области применения PHP.

Первая область, как уже говорилось, - это создание приложений (скриптов), которые исполняются на стороне сервера. PHP наиболее широко используется именно для создания такого рода скриптов. Для того чтобы работать таким образом, понадобится PHP-парсер (т.е. обработчик php-скриптов) и web-сервер для обработки скрипта, браузер для просмотра результатов работы скрипта, ну, и, конечно, какой-либо текстовый редактор для написания самого php-кода. Парсер PHP распространяется в виде CGI-программы или серверного модуля. Как установить его и web-сервер на свой компьютер, мы рассмотрим немного позднее. В этом курсе мы будем обсуждать, как правило, создание именно серверных приложений, как пример использования языка PHP.

Вторая область - это создание скриптов, выполняющихся в командной строке. То есть с помощью PHP можно создавать такие скрипты, которые будут исполняться, вне зависимости от web-сервера и браузера, на конкретной машине. Для такой работы потребуется лишь парсер PHP (в этом случае его называют интерпретатором командной строки (cli, command line interpreter)). Этот способ работы подходит, например, для скриптов, которые должны выполняться регулярно с помощью различных планировщиков задач или для решения задач простой обработки текста.

И последняя область - это создание GUI-приложений (графических интерфейсов), выполняющихся на стороне клиента. В принципе это не самый лучший способ использовать PHP, особенно для начинающих, но если вы уже досконально изучили PHP, то такие возможности языка могут оказаться весьма полезны. Для применения PHP в этой области потребуется специальный инструмент - PHP-GTK, который является расширением PHP.

Итак, область применения PHP достаточно обширна и разнообразна. Тем не менее существует множество других языков программирования, способных решать похожие задачи. Почему стоит изучать PHP? Что это нам дает? Во-первых, PHP очень прост в изучении. Достаточно ознакомиться лишь с основными правилами синтаксиса и принципами его работы, и можно начинать писать собственные программы, причем браться за такие задачи, решение которых на другом языке требовало бы серьезной подготовки.

Во-вторых, PHP поддерживается почти на всех известных платформах, почти во всех операционных системах и на самых разных серверах. Это тоже очень важно. Вряд ли кому-т

Язык JavaScript

является языком сценариев (скриптов), который применяют в основном для создания на Web-страницах интерактивных элементов. Его можно использовать для построения меню, проверки правильности заполнения форм, смены изображений или для чего-то еще, что можно сделать на Web-странице. Если взглянуть на Google Maps или службу GMail компании Google, то можно понять, на что способен сегодня язык JavaScript.

Так как JavaScript является в настоящее время единственным языком сценариев, который поддерживают все основные браузеры Web (Internet Explorer, Firefox, Netscape, Safari,Opera, Camino и т.д.), то он используется очень широко.

Код JavaScript обычно выполняется Web-браузером клиента, и в этом случае он называется сценарием на стороне клиента. Но код JavaScript можно выполнять также на Web-сервере для формирования документов HTML, воплощая тем самым сценарий на стороне сервера. Хотя использование JavaScript обычно ограничивается сценариями на стороне клиента, он является также очень мощным серверным языком.

Прежде всего, необходимо узнать, как добавить сценарий JavaScript на страницу HTML. Это можно сделать одним из двух способов: поместить теги Script на Web-странице и расположить код JavaScript внутри этих тегов, или поместить весь код JavaScript в отдельный файл и связаться с ним с помощью тега Script. Любой из этих методов вполне допустим, но они имеют разное назначение. Если имеется небольшой код, который будет использоваться только на одной странице, то размещение его между тегами Script будет хорошим решением. Если, однако, имеется большой фрагмент кода, который будет использоваться на нескольких страницах, то, наверно, лучше поместить этот код JavaScript в отдельный файл и соединиться с ним. Это делается для того, чтобы не нужно было загружать этот код всякий раз при посещении различных страниц. Код загружается один раз, и браузер сохраняет его для последующего использования. Это похоже на то, как используются каскадные таблицы стилей (CSS).

Ниже приведены примеры двух способов подключения кода JavaScript:


Заключение

Из всего этого следует сделать вывод, что для написания хорошего и динамичного сайта надо знать не только основные языки, которые я перечислил, но и языки, которые требуются для построения, так сказать, визуального вида страницы, чтобы она была «красочная». Также в большинстве Веб-страниц используются базы данных, удовлетворяющие нуждам страницы. Иллюстрацией их работы служит работа таких сайтов, как Wikipedia.com, amazon.com, Ozon.ru и т.д.

Список литературы

1.Основы программирования на JavaScript - Марк Кан

2.Курс "Язык программирования PHP" - Нина Владимировна Савельева

3.HTML - Александр Ромаданов

Веб-разработка. Быстрый старт
Основы HTML/CSS и PHP

PHP (Hypertext PreProcessor, препроцессор гипертекста) – язык программирования, исполняемый на стороне веб-сервера. Создатель PHP - Расмус Лердорфом (Rasmus Lerdorf) - спроектировал его в качестве инструмента для создания динамических и интерактивных веб-сайтов. Язык приобрёл большую популярность и используется в проектах разных масштабов: от простого блога до крупнейших веб-приложений в Интернете. Самые крупные PHP-проекты - Zend, Yahoo, Facebook, Google, NASA, W3C. Курс предназначен для тех, кто хочет приобрести начальные навыки веб-разработки на PHP, изучить логику работы с этим языком и терминологию, а также понять принципы функционирования систем и веб-приложений. В процессе обучения студенты проходят основные этапы создания простого сайта интернет-магазина и работают над его функциональностью. Знания и навыки, приобретённые на курсе, - надёжная основа для дальнейшего развития в качестве PHP-разработчика.

Урок 2. Установка и развертывание сервера на своем компьютере

Как взаимодействуют между собой веб-сервер, PHP интерпретатор и база данных; качаем готовую сборку Open Server; выбираем версию PHP; выбираем версию apache; настраиваем доступ к локальному сайту; как понять, что всё настроено правильно и работает; используем редактор кода Sublime Text, встроенный в сборку Open Server.

Урок 3. Как создавать веб-страницы

Кратко рассматриваем для чего нужен html; рассматриваем основные теги: doctype, html, head, title, body, header, h1, footer, div, a, img и их место в веб-странице; демонстрируем, как работают эти теги; показываем созданные теги в панели
«Инструменты разработчика» в Google Chrome; создаём ссылки на главную страницу и страницу с магазином так, чтобы можно было перейти в магазин и обратно.

Урок 4. Создаём макет нашего магазина

Рассматриваем CSS: что это такое, как подключить стили к странице; пишем хедер и рассматриваем, как его оформить с помощью CSS.

Урок 5. Завершаем оформление шаблона

Заканчиваем писать хедер; добавляем оставшиеся части макета из готового шаблона; переносим необходимые части макета из готового шаблона (HTML, CSS, JavaScript).

Урок 6. Основы PHP

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

Урок 7. Как хранить множество связанных данных

Для чего нужны массивы и как их использовать; кладём информацию о товаре в массив.

Урок 8. Хранение и обработка связанных по смыслу данных

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

Урок 9. Работаем с циклами

Что делать, если нужно вывести на страницу много данных из массива.

Урок 10. Как сделать сайт живым

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

Урок 11. Как делать навигацию между страницамиУрок 12. Создаём каталог товаров

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

Урок 13. Размещаем сайт в интернете

Регистрируем имя для нашего сайта; загружаем файлы на хостинг и проверяем работоспособность сайта.

HTML/CSS - язык гипертекстовой разметки, основа для изучения серверных ЯП. Изучив HTML, вы сможете создать статичную веб-страничку или веб-сайт. CSS - каскадные таблицы стилей - позволит оформить сверстанный сайт так, как вам хочется. Вы сможете смотреть видеокурс в удобное время и по всем вопросам обращаться к наставнику, который будет контролировать ваш прогресс. Формат располагает к общению и самодисциплине в обучении. За месяц вы научитесь: * верстке статических сайтов, * валидной кроссбраузерной вёрстке, * блочной вёрстке, * выполнению базовых операций в Photoshop, * использованию препроцессоров LESS и Bootstrap. Для перехода к следующему занятию курса необходимо, чтобы ваше домашнее задание прошло проверку. Это покажет, что вы поняли предыдущий урок и легко освоите новые знания. Задание может проверить как ментор, так и одногруппники, знаниям которых вы доверяете, и получить за это ачивку. С каждой проверкой количество ачивок растет, а навык работы с чужим кодом увеличивается. От количества ачивок зависит уровень итогового сертификата: чем их больше, тем выше статус. Эта в чем-то игровая механика делает занятия еще интереснее.

Урок 1. Основные понятия в веб-разработке

Что представляет собой веб-страница; виды сайтов; процесс разработки сайта; что такое гипертекст, теги и атрибуты; подготовка рабочего места; структура HTML-документа; основные теги оформления текста; простой пример HTML-странички; пример сложной веб-страницы; горячие клавиши для перемещения по документам.

Урок 2. Основы языка разметки документов HTMLУрок 3. Основы языка оформления стилей документа CSS

Что такое CSS; синтаксис CSS; способы объявления CSS; селекторы (id, class, tag); селекторы атрибутов.; основные свойства стилей; вложенность; наследование и группирование свойств; проверка подключения файла стилей.

Урок 4. Псевдоклассы и псевдоэлементы, табличная верстка

Приоритеты применения стилей; псевдоклассы и псевдоэлементы; создание таблиц; объединение ячеек; вложенные таблицы; стилевое оформление таблиц.

Урок 5. Формирование блочной модели, блочная верстка

Основные теги для верстки (div и span); отступы элементов (margin и padding); обтекаемые элементы; позиционирование блоков.

Урок 6. Работа с макетом дизайна в формате PSD

Основные функции и знакомство с Photoshop; выделение основных частей макета; нарезка макета; вёрстка макета сайта при помощи блоков; вставка частей макета в вёрстку;

Урок 7. Разметка сайта и знакомство с Bootstrap

Создание основной разметки сайта; применение overflow и clear в реальной вёрстке; заполнение разметки частями нарезанного макета; приёмы позиционирования элементов; знакомство и применение Bootstrap.

Урок 8. Стандарты web и вспомогательные инструменты

Загрузка проектов на сервер; проблема «кроссбраузерности»; стандарты HTML/CSS; будущее за стандартами HTML5 и CSS3; грамотная, универсальная вёрстка; знакомство с препроцессорами на примере LESS.

Git. Быстрый старт
Основы работы с Git

Видеокурс дает опыт командной разработки с использованием Git. Учит «с нуля» организовать совместное хранилище кода и эффективно его использовать. Студенты осваивают git-клиенты с графическим и консольным интерфейсом, учатся контролировать выпуск версий программы и «откатываться» к предыдущим версиям. Подробно рассматриваются распространенные ошибки командной разработки: при слиянии веток, создании commit-ов, хранении исполняемых файлов в репозитории.

Урок 1. Назначение и возможности

Узнаем, зачем нужен git и какие возможности он открывает для программистов.

Урок 2. Базовые операции

Создаем хранилище кода, доступное всем участникам разработки по сети. Осваиваем базовые операции: Clone, Commit, Push, Pull.

Урок 3. Откат изменений кода

Учимся откатывать изменения в коде с помощью git. Осваиваем операции Discard, Revert, Reset.

Урок 4. Работа с ветками

Работа с ветками.
Параллельно разрабатываем несколько версий программы. Осваиваем операции Add branch, Checkout, Merge.

Урок 5. Конфликты

Учимся разрешать конфликты при слиянии веток.

Урок 6. Распространенные ошибки. Часть 1

Боязнь создания новых веток. Хранение исполняемых файлов в репозитории.

Урок 7. Распространенные ошибки. Часть 2

Ошибки при работе с ветками. Ошибки при создании commit-ов.

Урок 8. Pull Request. Работа с Open-Source-проектами

Осваиваем Pull Request-ы на примере работы с Open-Source-проектами.

Урок 9. Pull Request. Сдача домашних заданий.

Сдача домашних заданий в GeekBrains с помощью Pull Request.

Урок 10. Консольный git-клиент. Базовые операции

Осваиваем базовые операции в консольном git-клиенте.

Урок 11. Консольный git-клиент. Работа с ветками

Учимся работать с ветками в консольном git-клиенте.

Урок 12. Работа с версиями программы

Учимся выпускать различные версии программного продукта с использованием git.

Урок 13. Итоги

Подводим итоги проделанной работы.

HTML5 и CSS3. 1 месяц.
Современные средства Web-разработки

Основа веб-технологии – это HTML/CSS Это базовый фундамент, который служит основой для создания современных веб-сайтов и является первым этапом для изучения других технологий программирования для глобальной сети Internet. Любая значимая организация имеет своё представление в глобальной сети. Это требование времени и требование рынка. Без учета современных реалий мира невозможно добиться конкурентоспособности и следовательно успеха. Именно связка HTML/CSS даёт возможность верстать макеты, создавать и редактировать статические сайты. Изучаемая на данном курсе технология программирования позволяет заложить долгосрочную основу и закрепиться в данной области на рынке труда.

Урок 1. HTML5: Семантические элементы.

Обзор HTML5, Новые семантические элементы HTML5, Новый способ структурирования страниц. Семантика текстового уровня. Настройка редактора, практические примеры применения семантических тегов, для создания структуры сайта. Знакомство с плагинами ускоряющими вёрстку сайта.

Урок 2. Позиционирование элементов, Практическая вёрстка.

Позиционирование элементов, расположение элементов на странице (позиционирование элементов по вертикали, по горизонтали). Рассмотрим самые популярные css генераторы, какие они бывают, для чего применяют каждый из них.

Урок 3. HTML5 формы. Добавление Аудио и Видео на страницу.

Рассмотрим и подробно разберем на практических примерах данные особенности. Усовершенствование традиционных форм (добавление подсказок, фокусировка на элементе и т.д.). Проверка форм на ошибки заполнения. Новые типы элементов (адреса электронной почты, URL-адреса и т.д.). Добавим в наш проект видео и аудио информацию, посмотрим как все это реализуется на практике. Рассмотрим работу тэгов . Задание классов, разбор технологии БЭМ

Урок 4. Параметры CSS для фона. Использование SVG.

Создание множественного фона для сайта. Задание фоновых изображений для адаптивных сайтов. Создание градиентного фона для сайт. Знакомство со спрайтами и иконочными шрифтами. Модернизируем наш проект в соответствии с новыми возможностями CSS3. Добавим необходимые элементы и эффекты. Знакомство с форматом svg.

Урок 5. Работа с текстом. Границы в CSS3

Работа с шрифтами. Веб-шрифты GOOGLE. Размещение текста в несколько колонок. Рассмотрим механизмы представления текстовой информации: оформление, выравнивание, отступы. Переключаемые вкладки для создания меню.Рассмотрим основы Canvas. Рассмотрим работу с границами в CSS, способы создания рамок элементов. Создание прозрачных рамок, теней, скругленных углов, градиентов.

Урок 6. Эффекты перехода и трансформации CSS3.

Эффекты перехода. Применение трансформации. Поворот элементов при наведении на него. Создание анимации средствами в CSS3. Узнаем для чего нужна данная технология и где ее следует применять. Добавим анимацию для некоторых элементов нашего сайта.

Урок 7. Адаптивная вёрстка (Часть 1).

Рассмотрим понятие адаптивного дизайна. Для чего и в каких случаях применяется. Основы синтаксиса и примеры. Придадим дизайну современный вид.

Урок 8. CSS3 Углубленное изучение.SASS. Flexbox.

Рассмотрим новое свойство flex, для создания гибкой структуры внутренних блоков сайт. Сделаем финальный проект со всеми доработками и нововведениями представленными CSS3, С использованием одного из самых популярных препроцессоров SASS.

Основы программирования
Азы программирования, основные термины и понятия

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

Урок 3. Первая программа

Выбор языка программирования. Подготовка браузера. Программа «Hello, world!».

Урок 4. Переменные

Установка удобного редактора кода. Знакомство с переменными. Простой калькулятор.

Урок 5. Типы данных

Типы данных. Операции с разными типами данных. Преобразование типов данных.

Урок 6. Алгоритмы и блок-схемы

Алгоритмическое мышление. Визуальные блок-схемы.

Урок 7. Оператор ветвления if

Выбор вариантов в программе. Оператор ветвления if. Игра в загадки.

Урок 8. Логические операции

Комплексные условия выбора. Логические И, ИЛИ. Игра «Злые птицы».

Урок 9. Циклы do, while

Циклы do и while. Игра в русскую рулетку.

Урок 10. Цикл for

Цикл for. Финансовый калькулятор.

Урок 11. Массивы

Большие наборы данных и массивы. Игра в рулетку.

Урок 12. Функции

Функции. Подготовка к написанию игры «Black Jack (21)».

Урок 13. Игра «Black Jack». Часть 1

Написание полноценной игры. Основа – раздача карт и подсчет очков.

Урок 14. Игра «Black Jack». Часть 2

Завершение написания игры. Определение результатов и победителя.

Урок 15. Карьера программиста

Обзор основных направлений в программировании. Как выбрать язык программирования? Чему учиться дальше?

JavaScript. Уровень 1. 1 месяц.
Интерактивные веб-приложения

Данный курс предназначен для тех, кто уже знаком с принципами HTML-вёрстки и созданием статичных страниц. Практические знания и навыки, приобретённые на этом уровне, дают возможность работать и создавать динамические веб-страницы и приложения. Курс систематизирует знания студентов, которые уже сталкивались с JavaScript, но не имеют богатого опыта работы с языком. Студенты знакомятся с основами создания интерактивных веб-страниц с помощью языка JavaScript. Полученные на уроках знания закрепляются через практическую часть - реализация игр на языке JavaScript. Перед началом обучения рекомендуется пройти курсы «Основы программирования» и «HTML / CSS».

Урок 1. Основы языка JavaScript

Синтаксис; структура кода; внешние скрипты и порядок их исполнения; переменные и типы данных; Hello world; современные стандарты.

Урок 3. Циклы, массивы, структуры данных

Циклы в JavaScript; массивы в JavaScript; структуры данных; практикум; игра «Быки и коровы».

Урок 4. Объекты в JavaScript

Знакомство с понятием объектов; объекты в JavaScript; работа с объектами; перебор значений; практикум; игра «Квест».

Урок 5. Введение в DOM

Понятие DOM; DOM в JavaScript; манипуляции с DOM в JavaScript; практикум; игра «Квест 2.0».

Урок 6. Обработка событий в JavaScript

Понятие события; обработка нажатий; браузерные события; практикум; игра «Крестики-нолики».

Урок 7. Урок-практикум

Реализация игры «Змейка».

Урок 8. Анонимные функции, замыкания

Углублённое изучение работы функций; функции и функциональные выражения; анонимные функции; замыкания; действия браузера по умолчанию.

Курс предназначен для тех, кто уже освоил базовые возможности языка JavaScript, и теперь хочет научиться делать реально крутые вещи. Каждый урок включает в себя как полезную теорию, так и эффективную практику. Насыщенный самыми актуальными знаниями и навыками, продвинутый курс от GeekBrains - это возможность быстро и надёжно стать профессиональным разработчиком JavaScript.

Урок 1. Современный JavaScript

Знакомство со стандартом ES2015 и некоторыми его возможностями.

Урок 2. ООП в JavaScript

Основные принципы объектно-ориентированного программирования и его реализация в JavaScript.

Урок 3. Асинхронные запросы

Основы асинхронного JavaScript. AJAX, JSON и Promises.

Урок 4. Регулярные выражения

Регулярные выражения в JavaScript. Основные операции с регулярными выражениями и строками.

Урок 5. Фреймворк Vue.js

Основы разработки одностраничных приложений с помощью фреймворка Vue.js.

Урок 6. Компоненты Vue.js

Реализация компонентного подхода во фреймворке Vue.js.

Урок 7. JavaScript на сервере

Создание простого сервера с помощью платформы Node.js.

Урок 8. Тестирование и сборка

Тестирование отдельных частей приложения. Сборка модулей с помощью Webpack.

PHP. Уровень 1. 1 месяц.
Основы веб-разработки

PHP входит в тройку самых востребованных и популярных языков программирования в мире. Он широко применяется при создании динамически генерируемых веб-страниц. Большинство фрилансеров-программистов в мире используют язык PHP: он позволяет разрабатывать динамические сайты любой сложности и обладает большим набором встроенных средств для разработки веб-приложений. Курс "PHP. Уровень 1" от GeekBrains создан с целью обучить начинающих программистов основам разработки веб-сайтов на языке PHP. Новички изучат принципы объектно-ориентированного программирования и научаться правильно использовать основные конструкции языка. Более опытные разработчики получат возможность значительно повысить культуру написания кода и смогут грамотно и профессионально оформить скрипт своего веб-сайта.

Урок 1. Введение в PHP

Принципы работы динамических сайтов
Принципы работы веб-серверов
Подготовка рабочей среды
Hello, world! [Практика]
Базовые конструкции языка – дескрипторы, переменные, типы данных
Версии языка и их различия на базовом уровне

Урок 2. Условные блоки, ветвление функции

Принципы ветвления, визуализация, блок-схемы
Операторы if, if-else
Оператор switch
Тернарный оператор
Реализация схем логики ветвления
Тернарный оператор
Функции, рекурсия
Использование функций и рекурсии для решения задач
Области видимости переменных

Урок 3. Циклы и массивы

Понятие цикла, типы циклов в PHP
While, do…while
For
Бесконечный цикл и выход из шагов, цикла
Понятие массива, типы массивов в PHP
Применение циклов для работы с массивами [Практика]
Многомерные массивы
Основные функции работы с массивами Применение функции для работы с массивами [Практика]
Предопределённые массивы

Урок 4. Работа с файлами

Файловая система и адресация, примеры на базе разных ОС
Подключение файлов с кодом
Базовые операции работы с файлами – чтение, запись.
Использование базовых операций для решения повседневных задач – логирование, чтение данных, кэширование [Практика]
Типовые форматы хранения данных

Урок 5. Базы данных MySQL и работа с ними на уровне PHP

Создание БД, пользователей
Создание таблиц
Синтаксис базовых запросов. Создаем, редактируем и удаляем таблицы, Изучаем 4 главных команды: INSERT, UPDATE, DELETE, SELECT
Выборка из БД и вывод на экран

Урок 6. Интерактивность: Методы передачи данных GET и POST, работа с формами и пользовательскими данными

Основные методы передачи данных на сервер
Методы GET и POST
Передача данных из формы в скрипт
Обработка и сохранение данных в БД, обеспечение безопасности.
Реализация CRUD-пакета действий [Практика]Урок 7. Авторизация и аутентификацияУрок 8. Практика

Написание недостающей логики страниц
Создание тестовых заказов
Тестирование

PHP. Уровень 2. 1 месяц.
Профессиональная веб-разработка

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

Урок 1. ООП в PHP. Базовые понятия.

Введение в парадигму ООП, знакомство с фундаментальными понятиями и принципами. Реализация ООП в PHP.

Урок 2. ООП в PHP. Расширенное изучение.

Продолжение изучения ООП и его реализации в PHP. Архитектурные аспекты ООП. Магические методы, контроль типов, трейты, паттерны.

Урок 3. Шаблонизаторы

Понятие шаблонизаторов. Знакомство с Twig. Реализации функционала шаблонизатора. Исключения в PHP.

Урок 4. Углубленное проектирование реляционных БД.

Продолжение знакомства с симбиозом MySQL и PHP. Понятие нормализации данных, различные формы нормализации. Связи в БД. Резервное копирование данных и оптимизация производительности БД. Знакомство с механизмом транзакций.

Урок 5. Парадигма MVC. Обновления движка

Знакомство с парадигмой-паттерном «Model-View-Controller». Обновление архитектуры системы. Стандартизация кода.

Урок 7. Тестирование. PHPUnit.

Введение в принципы тестирования, TDD, BDD. Знакомство с PHPUnit, написание тестов.

Урок 8. Развитие карьеры разработчика. Инструменты и необходимые знания

Обзор тенденций современного программирования и разработки на PHP. Знакомство с полезными инструментами. Обсуждение дальнейшего развития.

На новом уровне комплекса курсов по базам данных студенты получат исчерпывающую информацию о долговременных хранилищах. Плотно поработают с MySQL – системой управления БД, зарекомендовавшей себя на популярных крупных проектах. Пошагово разбирается проектирование баз данных и работа с ними. Курс знакомит и с альтернативными БД: MongoDB, Redis, ElasticSearch и ClickHouse.

Урок 1. Быстрый старт

1.1. Типы баз данных.
1.2. Основы реляционных баз данных.
1.3. MySQL и клиенты.
1.4. Управление базами данных.
1.5. Разбор домашнего задания.

Урок 2. Язык запросов SQL

2.1. Введение в SQL.
2.2. Числовые и строковые типы данных.
2.3. Календарные типы данных и множества.
2.4. Индексы.
2.5. CRUD-операции.
2.6. Разбор домашнего задания.

Урок 3. Операторы, фильтрация, сортировка и ограничение

3.1. Операторы.
3.2. Условная выборка.
3.3. Сортировка и ограничения.
3.4. Предопределенные функции.
3.5. Предопределенные функции (продолжение).
3.6. Разбор домашнего задания.

Урок 4. Агрегация данных

4.1. Группировка данных.
4.2. Агрегационные функции.
4.3. Специальные возможности GROUP BY.
4.4. Разбор домашнего задания.

Урок 5. Сложные запросы

5.1. Типы многотабличных запросов и UNION
5.2. Вложенные запросы
5.3. JOIN-объединения таблиц
5.4. Внешние ключи и ссылочная целостность
5.5. Разбор домашнего задания

Урок 6. Транзакции, переменные, представления

6.1. Транзакции.
6.2. Внутренняя реализация транзакций.
6.3. Переменные, временные таблицы и динамические запросы.
6.4. Представления.
6.5. Разбор домашнего задания.

Урок 7. Администрирование MySQL

7.1. Администрирование MySQL.
7.2. Администрирование MySQL (продолжение).
7.3. Права пользователей.
7.4. Репликация.
7.5. Репликация (продолжение).
7.6. Разбор домашнего задания.

Урок 9. Оптимизация запросов

9.1. Типы таблиц.
9.2. Подробнее об индексах.
9.3. Оптимизация запросов.
9.4. Разбор домашнего задания.

Урок 10. NoSQL

10.1. NoSQL-базы данных.
10.2. Key-Value хранилища Redis.
10.3. Документ ориентированная СУБД MongoDB.
10.4. СУБД Полнотекстового поиска ElasticSearch.
10.5. Колоночная СУБД ClickHouse.
10.6. Разбор домашнего задания.

Yii2 Framework. 1 месяц.
Профессиональная Backend-разработка

Yii2 framework - один из самых популярных и востребованных фреймворков на PHP. Знание любого фреймворка качественно увеличивает востребованность php-программиста на рынке труда, и его оклад. Курс рассчитан на тех, кто знаком с PHP и ООП на базовом уровне. Мы рассмотрим базовый и продвинутый шаблон приложения, разработаем приложение - аналог программы evernote. Выполняя домашние задания, вы создадите полноценный проект для портфолио: программа-календарь, в котором можно делать пометки о планах на день и "шарить" между другими пользователями.

Урок 8. Полезные возможности Yii2

Управление URL. Организация REST. Assets. Деплой

Стажировка в GeekBrains (Web). 2 месяца.
Практика командной разработки

Стажировка в GeekBrains будет проводиться в формате вебинаров. С самого начала занятий Вы приступите к совместной разработке проекта, под руководством преподавателя. Команда учеников будет решать коммерческую задачу, за которую вполне могли бы заплатить гонорар реальные заказчики. На каждом занятии мы будем проводить совещание, как в реальных IT-компаниях. Анализировать проделанную работу и определять объем задач на следующую неделю. Помимо совещаний, на занятиях будет преподаваться различные темы, которые помогут вам написать хороший, качественный код, подготовить качественно портфолио, написать хорошее резюме, и успешно пройти собеседования.

Урок 1. Начало проекта

Как выбрать нишу для стартапа? Начало проекта. Работа менеджера по продажам, аналитика, проектировщика UI, архитектора

Урок 2. Гибкие методологии разработкиУрок 3. Проблемы и их решение. СовещаниеУрок 4. Первые промежуточные итоги

Анализ проделанной работы. Постановка новых задач.

264

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

Ниже представлены разделы, которые входят в данную тему:

HTML5

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

CSS3

Почти бессмысленно пытаться создать современный веб-сайт, не используя возможностей CSS (Cascading Style Sheet). Этот стандарт воткан в ткань Всемирной сети почти так же плотно, как и HTML. Каскадные таблицы стилей являются основным средством для любого типа деятельности в области веб-дизайна, будь то компоновка страниц, создание интерактивных кнопок и меню или простое декорирование. По сути, в то время как фокус HTML все больше смещается на содержимое и семантику, спецификация CSS стала центральной технологией веб-дизайна.

JavaScript , jQuery

Язык сценариев JavaScript был создан с целью получения доступа из сценариев ко всем элементам HTML-документа. Иными словами, этот язык представляет средства для динамического взаимодействия с пользователем, например для проверки приемлемости адресов электронной почты в формах ввода данных, отображения подсказок и т.п. В сочетании с CSS JavaScript закладывает основу мощности динамических веб-страниц, которые изменяются буквально на глазах, в отличие от новой страницы, возвращаемой сервером.

ASP.NET

ASP.NET является основной технологией для построения серверных элементов веб-приложений от Microsoft. Заинтересовать разработчиков в ASP.NET совсем нетрудно. Без преувеличения, ASP.NET является наиболее полной платформой для веб-разработки из всех, которые когда-либо создавались.

PHP и MySQL

Сочетание PHP и MySQL является одним из самых удобных подходов к динамическому веб-конструированию, основанному на использовании базы данных. Благодаря открытости исходных кодов (в отличие от конкурирующей технологии ASP.NET) это технологическое сочетание можно использовать совершенно бесплатно, и поэтому оно приобрело очень большую популярность у веб-разработчиков. Любой претендующий на результативность разработчик, использующий платформу Unix/Linux или даже Windows/Apache, нуждается в серьезном освоении этих технологий.

Если вы уже пробовали (а может быть, даже и небезуспешно:)) программировать, например, на Delphi, или Visual Basic, или даже Visual C++, то привыкли к такой схеме работы программы: нажимается кнопочка - выполняется код - выводится результат, и все это выполняется на одном компьютере.

В веб-программировании все обстоит по-другому.

Вы задумывались, что происходит, когда вы вводите в адресной строке браузера URL (Universal Resource Location, или в просторечии - адрес)? Cхема работы следующая:

  • Браузер открывает соединение с сервером
  • Браузер отправляет серверу запрос на получение страницы
  • Сервер формирует ответ (чаще всего - HTML-код) браузеру и закрывает соединение
  • Браузер обрабатывает HTML-код и отображает страницу

Обратите внимание: еще до того, как вы увидели на экране запрошенную страницу, соединение с сервером закрыто, и он о вас забыл. И когда вы введете другой (или тот же самый) адрес, или щелкните по ссылке, или нажмете на кнопку HTML-формы - та же схема повторится снова.

Такую схему работы называют "клиент-сервер". Клиент в данном случае - браузер.

Итак, соединение с веб-сервером длится всего несколько секунд (или долей секунд) - это промежуток времени между щелчком по ссылке (или другим способом запроса) и началом отображения страницы. Большинство браузеров во время соединения отображают некий индикатор, например, MS Internet Explorer отображает анимацию в правом верхнем углу.

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

Чтобы навсегда избавиться от восприятия HTTP как "черного ящика", "притворимся" браузером с помощью telnet"а:

Запустим telnet сайт 80 . Введем в окне терминала следующее (если ввод не отображается - ничего страшного):

GET / HTTP/1.0 [здесь нажмем Enter] Host: сайт [здесь нажмем Enter дважды]

Нажатие Enter соответствует, как правило, комбинации символов CR + LF, обозначаемых как \r\n. Далее будет использоваться именно это обозначение.

По экрану пробежит HTML-код страницы . Как видите - ничего сложного.

Исходный код текущей страницы можно просмотреть практически в любом браузере, выбрав в меню "View|Source".

Картинки, фреймы - все это дополнительные запросы, точно такие же. Собственно, откуда берутся картинки в окне браузера: при парсинге (обработке) HTML-кода, браузер, натыкаясь на тэг осуществляет дополнительный запрос к серверу - запрос картинки, и отображает ее на месте, где стоит тэг .

Попробуйте:

Telnet www.ya.ru 80 GET /logo.gif HTTP/1.0\r\n Host: www.ya.ru\r\n \r\n

По экрану пробежит то, что вы увидите, если просмотрите логотип Яндекса в текстовом редакторе.

HTML-формы. Методы отправки данных на сервер

С HTML-формами вы наверняка уже встречались:

Введите Ваше имя:

Сохранив данный код в HTML-файле и просмотрев его с помощью вашего любимого браузера, вы увидите привычную HTML-форму.

Рассмотрим используемые в этом небольшом примере тэги подробнее.

Тэг , имеющий парный завершающий тэг , собственно и задает форму. Его атрибуты - оба необязательные:

  • action - указывает URL (полный или относительный), на который будет отправлена форма. Отправка формы - это такой же запрос к серверу, как и все остальные (как я уже описал выше). Если этот атрибут не указать - форма отправляется на текущий документ, то есть "сама на себя".
  • method - способ отправки формы. Их два.
    • GET - отправка данных формы в адресной строке. Вы могли заметить на различных сайтах присутствие в конце URL символа "?" и следующих за ним данных в формате параметр=значение. Здесь "параметр" соответствует значению атрибута name элементов формы (см. ниже про тэг ), а "значение" - содержимому атрибута value (в нем, например, содержится ввод пользователя в текстовое поле того же тэга ). Для примера - попробуйте поискать что-нибудь в Яндексе и обратите внимание на адресную строку браузера. Это и есть способ GET.
    • POST - данные формы отправляются в теле запроса. Если не совсем понятно (или совсем непонятно), что это такое - не беспокойтесь, скоро мы к этому вопросу вернемся.

Если атрибут method не указан - подразумевается "GET".

Тэг - задает элемент формы, определяемый атрибутом type:

Значение "text" задает однострочное текстовое поле ввода. Значение "submit" задает кнопку, при нажатии которой происходит отправка формы на сервер.

Итак, что же происходит, когда мы нажимаем кнопку "OK"?

  • Браузер просматривает входящие в форму элементы и формирует из их атрибутов name и value данные формы. Допустим, введено имя Vasya. В этом случае данные формы - name=Vasya&okbutton=OK
  • Браузер устанавливает соединение с сервером, отправляет на сервер запрос документа, указанного в атрибуте action тэга , используя метод отправки данных, указанный в атрибуте method (в данном случае - GET), передавая в запросе данные формы.
  • Сервер анализирует полученный запрос, формирует ответ, отправляет его браузеру и закрывает соединение
  • Браузер отображает полученный от сервера документ

Отправка того же запроса вручную (с помошью telnet) выглядит следующим образом (предположим, что доменное имя сайта - www.example.com):

Telnet www.example.com 80 GET /cgi-bin/form_handler.cgi?name=Vasya&okbutton=OK HTTP/1.0\r\n Host: www.example.com\r\n \r\n

Как вы, скорее всего, уже догадались, нажатие submit-кнопки в форме с методом отправки "GET" аналогично вводу соответствующего URL (со знаком вопроса и данными формы в конце) в адресной строке браузера: http://www.example.com/cgi-bin/form_handler.cgi?name=Vasya&okbutton=OK

На самом деле, метод GET используется всегда, когда вы запрашиваете с сервера какой-либо документ, просто введя его URL, или щелкнув по ссылке. При использовании , к URL просто добавляются знак вопроса и данные формы.

Возможно, все эти технические подробности и упражнения с telnet-ом кажутся вам невероятно скучными и даже ненужными ("а при чем тут PHP?"). А зря. :) Это основы работы по протоколу HTTP, которые необходимо знать назубок каждому Web-программисту, и это не бесполезные теоретические знания - все это пригодится в ежедневной практике.

Теперь заменим первую строку нашей формы на следующую:

Мы указали метод отправки "POST". В этом случае данные отправляются на сервер несколько другим способом:

Telnet www.example.com 80 POST /cgi-bin/form_handler.cgi HTTP/1.0\r\n Host: www.example.com\r\n Content-Length: 22\r\n \r\n name=Vasya&okbutton=OK

При использовании метода POST данные формы отправляются уже после "двух Enter-ов" - в теле запроса. Все, что выше - на самом деле заголовок запроса (и когда мы использовали метод GET, данные формы отправлялись в заголовке). Для того, чтобы сервер знал, на каком байте закончить чтение тела запроса, в заголовке присутствует строка Content-Length. Преимущество метода POST - отсутствие ограничения на длину строки с данными формы.

При использовании метода POST невозможно отправить форму, просто "зайдя по ссылке", как было с GET.

Для краткости изложения, введем термины "GET-форма" и "POST-форма", где префикс соответствует значению атрибута method тэга .

При использовании POST-формы, в ее атрибуте action можно указать после знака вопроса и параметры GET-формы. Таким образом, метод POST включает в себя и метод GET. Технология CGI

В предыдущей главе мы с вами разобрались, как создать HTML-форму, и как браузер отправляет введенные в нее данные на сервер. Но пока что непонятно, что будет сервер делать с этими данными.

Сам по себе веб-сервер умеет просто отдавать запрошенную страницу, и ничего более того, и ему все переданные данные формы, в общем-то, совершенно безразличны. Для того, чтобы можно было обработать эти данные с помощью какой-либо программы и динамически сформировать ответ броузеру, и была изобретена технология CGI (Common Gateway Interface).

Взглянем на этот URL: http://www.example.com/cgi-bin/form_handler.cgi. Первое предположение, которое можно сделать на его счет, обычно такое: сервер отдает содержимое файла form_handler.cgi из каталога cgi-bin. Однако, в случае с технологией CGI дело обстоит по-другому. Сервер запускает программу form_handler.cgi и передает ей данные формы. Программа же формирует текст, который передается браузеру в качестве ответа на запрос.

Программу form_handler.cgi можно написать на любом языке программирования, главное - соблюдать в программе стандарт CGI. Можно использовать, например, популярный скриптовый язык Perl. А можно написать все и на Си. Или на shell-скриптах... Но мы, для примера, напишем эту программу на С. Но сначала разберемся, как происходит обмен данными между веб-сервером и CGI-программой.

Перед запуском CGI-программы, сервер устанавливает переменные окружения (вам они наверняка знакомы по команде PATH). В каждый мало-мальски серьезном языке программирования есть средства для чтения переменных окружения. Стандарт CGI определяет весьма значительный набор переменных, которые должны быть определены перед запуском CGI-программы. Рассмотрим сейчас только три из них:

  • REQUEST_METHOD - метод передачи данных - GET или POST (есть и другие, но пока мы их не рассматриваем)
  • QUERY_STRING - содержит часть URL после вопросительного знака, или, другими словами, данные GET-формы.
  • CONTENT_LENGTH - длина тела запроса (данные POST-формы).

Сервер запускает CGI-программу. Тело запроса передается программе в виде стандартного ввода (stdin) - будто бы эти данные были введены с клавиатуры.

Программа выдает ответ броузера на стандартный вывод (stdout) - "на экран". Этот вывод перехватывается веб-сервером и передается браузеру.

1 : #include 2 : #include 3 : 4 : int main(void ) 5 : { 6 : // Читаем переменные среды, установленные веб-сервером 7 : char *query_string = getenv("QUERY_STRING" ) ; 8 : char *request_method = getenv("REQUEST_METHOD" ) ; 9 : 10 : char *post_data; // Буфер для данных POST-запроса 11 : int post_length = 0 ; // Длина тела запроса 12 : 13 : if (strcmp(request_method, "POST" ) == 0 ) { // Если получен POST-запрос, 14 : post_length = atoi(getenv("CONTENT_LENGTH" ) ) ; // сначала читаем из 15 : // переменной среды его длину, 16 : if (post_length) { // если она не нулевая, 17 : post_data = (char *) malloc(post_length+1 ) ; // выделяем память для буфера, 18 : fread(post_data, post_length, 1 , stdin) ; // читаем со стандартного ввода тело запроса, 19 : post_data[ post_length] = 0 ; // завершаем строку нулевым байтом. 20 : } 21 : } 22 : 23 : // Выводим заголовок ответа... 24 : printf ("Content-type: text/html\r \n \r \n " ) ; 25 : 26 : // и его тело: 27 : printf ("Здравствуйте!\r \n " ) ; 28 : 29 : if (strlen(query_string) ) { 30 : printf ("

Параметры GET-формы: %s\r \n " , query_string) ; 31 : } 32 : 33 : if (post_length) { 34 : printf ("

Параметры POST-формы: %s (длина тела запроса: %d)\r \n " , post_data, post_length) ; 35 : free(post_data) ; // не забываем освободить выделенную в строке 17 память 36 : } 37 : 38 : return 0 ; 39 : }

Это простейшая CGI-программа на Си, выводящая содержимое полученных от веб-сервера параметров форм. Браузер в результате получит примерно следующий код (если "засабмитить" на эту программу POST-форму из последнего примера):

Здравствуйте!

Параметры POST-формы: name=Vasya&okbutton=OK (длина тела запроса: 22 )

Что при этом отобразится на экране пользователя, думаю, понятно без комментариев. :)

Как видите, даже простейшая программа вывода параметров не так-то проста. Более того, по стандарту HTTP почти все не алфавитно-цифровые символы (в т.ч. и русские буквы) передаются в так называемом UrlEncoded-виде (%XX, где XX - шестнадцатеричный код символа), и, если добавить в приведенную Си-программу код расшифровки UrlEncode, она уже не поместится на экран. А это - всего лишь базовые операции. А как вырастет программа на Си, если необходимо работать с базой данных?

Впрочем, написание CGI-программ на Си - довольно редкое извращение. :) Чаще всего это делают на Perl - языке, разработанном специально для обработки текстовых данных, а наличие модуля CGI делает написание CGI-скриптов намного более простой задачей. Здесь я не буду вас знакомить с Perl, отмечу лишь, что проблем остается достаточно: все же Perl не предназначен для Web, это язык универсальный. Да и сама технология CGI несовершенна: при каждом обращении происходит запуск программы (в случае с Perl - интерпретатор языка), а эта операция довольно ресурсоемкая: для домашней странички Васи Пупкина производительности, конечно, достаточно, но серьезный портал с десятками и сотнями тысяч хитов в сутки потребует уже огромных аппаратных мощностей.

А теперь взглянем на веб-сервер Apache. По своей природе он модульный, и позволяет подключать расширения добавлением одной строки в конфигурационный файл. (Ну, хорошо, хорошо, двух строк. :)). Было бы прекрасно, если бы существовал скриптовый язык, заточенный именно под Web, да еще и при желании подключаемый модулем к Апачу, не так ли? Ну, вы уже поняли, к чему я клоню:) - это и есть PHP.

PHP: Препроцессор Гипертекста

В 1994-м году, один программист, по имени Rasmus Lerdorf, намучавшись с классическим перловым модулем CGI, решил написать несколько собственных Perl-скриптов, дабы было попроще создавать собственную домашнюю страницу, и назвал все это дело Personal Home Page (PHP). Через некоторое время ему понадобилось обрабатывать формы, ну и для увеличения производительности все было переписано на C - так появился Personal Home Page/Forms Interpreter (PHP/FI) 2.0. Труды свои Расмус, следуя принципам Open Source, выложил на всеобщее обозрение, и, в принципе, на некоторм количестве сайтов PHP/FI вполне успешно использовался, хотя был довольно примитивен.

В 1997-м на PHP/FI - в поисках инструмента для удобного Веб-скриптинга - наткнулись два других программера - Andi Gutsman и Zeev Suraski. Сама идея им понравилась, но функциональность и скорость работы PHP/FI оставляли желать лучшего, и Andi и Zeev решились переписать PHP с нуля. Язык получился универсальный и мощный, и вскоре привлек внимание множества веб-разработчиков: к концу 1998 года PHP3 использовался на ~10% веб-серверов. Скромное название "Personal Home Page" уже не очень-то соответствовало реальности, и название было изменено на - в лучших Unix-традициях - рекурсивное: PHP: Hypertext Preprocessor.

Такая популярность PHP побудила Andi и Zeev на повторное переписание кода, прежде всего - с целью еще большего увеличения производительности. "Движок" PHP 4, названный Zend Engine, разрабатывался усилиями уже сформировавшегося и с тех пор непрерывно расрастающегося PHP community, и в 2000-м году вышла 4-я версия PHP, ставшая менее чем через полгода стандартом для Веб-разработки под Unix (и не только): каждый уважающий себя хостер предоставлял поддержку PHP. Летом 2004-го года команда разработчиков PHP представила 5-ю версию, основанного на новом Zend Engine 2, со "взрослой" поддержкой ООП, сейчас активно разрабатывается PHP6...

Впрочем, хватит лирики. Давайте посмотрим на простой PHP-скрипт. Сначала немного изменим HTML-форму из предыдущего раздела:

Введите Ваше имя:

А теперь - form_handler.php:

В отличие от Си или Perl, php-скрипт представляет собой обычную, в общем-то, HTML-страницу: "просто так" написанные тэги передаются "как есть", будто бы это обычный html-ник. Сам скрипт заключается в специальные тэги , внутри которых мы используем для вывода текста оператор echo. Таких блоков может быть сколько угодно, все, что между ними, интерпретируется как обычный html.

Переменные GET-запроса попадают в массив $_GET, переменные POST-запроса - в массив $_POST, серверные переменные (типа IP-адреса, имени скрипта и т.д.) - в $_SERVER, оператор "точка" (.) - объединение строк... Причем все служебные операции (чтение stdin и переменных среды, Url-декодирование) уже произвел сам PHP. Удобно, не так ли?

Введите Ваше имя:

Мы убрали из тэга form атрибут action - это значит, что форма отправляется "сама на себя", т.е. на текущий URL. Это иногда называют "postback form". В строке 4 с помощью оператора if проверяется, использовался ли для загрузки документа метод POST (аналог строки 13 примера на Си), и - если это так - в следующей строке выводится приветствие.

Привет, Хабр!

Сегодня я бы хотел познакомить начинающих вебмастеров с разнообразными изящными способами использования буферизации вывода в php. Опытные вебмастера для себя здесь врят ли найдут что-то полезное. Хотя - кто знает?

Как вы все знаете, буферизацией вывода в php управляет набор функций, начинающихся на «ob_». Самая главная из них - ob_start. При запуске она собирает последующий вывод, то есть всевозможные print(), echo и прочее, что потом отдастся посетителю в форме html-странички. И если перед тем, как выводить, мы запустили буферизацию, то с этой, почти готовой уже, страничкой, можно будет напоследок что-нибудь сотворить.


Например, мы хотим отфильтровать все ссылки на посторонние сайты.

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

"http://blackjack-hookers.com" => "http://myoldforum.ru/redirect.php?url=blackjack-hookers.com"

Способ может быть и не самый эффективный, но действенный. Мы написали redirect.php с фильтром и черным листом, и теперь нам надо преобразовывать все ссылки на тысячах страниц форума. С помощью ob_start и парочки регулярных выражений мы сделаем это всего в несколько строк:

Function f_callback($buffer){ $buffer = preg_replace("#http://(www.)?myoldforum\.ru/#","/",$buffer); $buffer = preg_replace("#href="http://([^"]*)"#","#href="/redirect\.php\?url=$1",$buffer); return $buffer; } ob_start(f_callback);

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

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

Function generate_plugin(){ /*что-то генерируем*/ } function f_callback($buffer){ /*...*/ $buffer = str_replace ("",generate_plugin(),$buffer); /*...*/ return $buffer; } ob_start("f_callback");

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

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

{GENERATE BIG CRAZY THING}

Должно быть, вы уже заметили все эти обороты: «не хочется лезть», «древний, как стул тиранозавра», «криво написанный редактор»… В идеальном мире оболочки вокруг буфера вывода не нужны. Все что можно сделать с помощью ob_start, теоретически можно было бы сделать и без него. Этот прием иной раз вносит путанницу в код проекта, многие видят его смысл лишь в том, что бы отдать вывод в ob_gzhandler для сжатия, и считают его применение в иных случаях опасным. Но часто без управления выводом просто не обойтись.

Особенно если не хочется копать вглубь.




Top