Web Основы с LWP PHP

Оглавление (нажмите, чтобы открыть):

ГЛАВА 1 Знакомство с PHP

Последние пять лет ознаменовались фантастическим развитием Интернета и новых способов общения между людьми. На переднем крае этого явления находится World Wide Web (WWW). Ежедневно в этой новой коммуникационной среде открываются тысячи новых сайтов, а потребителям предлагаются новые виды услуг. Вместе с бурным развитием рынка появился огромный спрос на новые технологии и разработчиков, владеющих ими. Если вы читаете этот абзац, вероятно, вы уже являетесь или скоро станете web-разработчиком. Впрочем, какой бы ни была ваша профессия, вы выбрали эту книгу потому, что слышали о замечательной новой технологии — PHP.

В этой главе вы познакомитесь с языком PHP, получите представление о его истории и возможностях, а также основную информацию, необходимую для разработки сайтов с поддержкой PHP. Надеюсь, приведенные примеры пробудят ваш энтузиазм и наглядно покажут, какие перспективы PHP открывает перед вами и вашей организацией. Вы узнаете, как установить и настроить программное обеспечение PHP на компьютерах с Linux/UNIX или Windows и как внедрить PHP в HTML. К концу главы вы будете готовы к тому, чтобы углубленно заняться изучением других важных аспектов языка PHP. Итак, зажигайте свет, включайте свою любимую музыку и устраивайтесь поудобнее. Пришла пора познакомиться с тем, что станет одним из важнейших пунктов в вашем резюме, — с программированием на PHP.

Краткая история

История PHP начинается с 1995 года, когда независимый программист-контрактник по имени Расмус Лердорф (Rasmus Lerdorf) написал сценарий Perl/CGI для подсчета количества посетителей сайта, прочитавших его онлайновое резюме. Его сценарий решал две задачи: регистрацию данных посетителя и вывод количества посетителей на web-странице. Развитие WWW еще только начиналось, никаких специальных средств для решения этих задач не было, и к автору хлынул поток сообщений с вопросами. Лердорф начал бесплатно раздавать свой инструментарий, названный Personal Home Page (PHP) или Hypertext Processor (гипертекстовый процессор).

Шумный успех инструментария PHP заставил Лердорфа приступить к разработке расширений PHP. Одно из расширений преобразовывало данные, введенные на форме HTML, в символические переменные, что позволяло экспортировать их в другие системы. Чтобы добиться поставленной цели, Лердорф решил в дальнейших разработках перейти с Perl на С. Расширение существующего инструментария PHP привело к появлению PHP 2.0, или PHP-FI (Personal Home Page — Form Interpretator). В усовершенствовании версии 2.0 принимали участие программисты со всего мира.

Новая версия PHP пользовалась исключительной популярностью, и вскоре образовалась основная команда разработчиков. Они сохранили исходную концепцию внедрения программного кода прямо в HTML и переписали заново механизм лексического анализа, что привело к появлению PHP 3.0. К моменту выхода версии 3.0 в 1997 году свыше 50 000 пользователей применяли PHP для улучшения своих web-страниц.

В 1997 году было решено, что сокращение PHP должно означать не «Personal Home page», а «PHP Hypertext Processor»

В течение следующих двух лет стремительное развитие PHP продолжалось. В язык добавлялись сотни новых функций, а количество пользователей стремительно росло. В начале 1999 года служба Netcraft (http://www.netcraft.com) сообщила о том, что, по минимальным оценкам, число пользователей PHP превысило 1 000 000, в результате чего PHP стал одним из самых популярных сценарных языков в мире.

В начале 1999 года было объявлено о предстоящем выходе PHP 4.0. Хотя одной из сильнейших сторон PHP была эффективность выполнения сценариев, при первоначальных разработках не предполагалось, что на базе PHP будут строиться крупномасштабные приложения. По этой причине была начата работа над более устойчивым механизмом лексического анализа, больше известным под названием Zend (http://www.zend.com). Работа шла быстро и завершилась 22 мая 2000 года выпуском PHP версии 4.0.

Кроме лексического анализатора Zend, компания Zend Technologies (Израиль) распространяет оптимизатор Zend, который повышает выигрыш в быстродействии от применения лексического анализатора Zend. Тесты показывают, что ускорение работы программы в результате использования оптимизатора составляет от 40 до 100 %. За дополнительной информацией обращайтесь на сайт Zend.

На момент написания этой книги, по данным Netcraft (http://www.netcraft.com), программное обеспечение PHP было установлено более чем в 3,6 миллиона доменов. Будущее PHP выглядит светлым, поскольку продукт продолжает активно использоваться как на крупных web-сайтах, так и на компьютерах отдельных пользователей.

PHP лучше всего охарактеризовать как работающий на стороне сервера встроенный язык сценариев Web, позволяющий разработчикам быстро и эффективно строить динамические web-приложения. С позиций грамматики и синтаксиса PHP напоминает язык программирования С, хотя разработчики не постеснялись включить в него средства из других языков, в том числе из Perl, Java и C++. Среди ценных заимствованных возможностей — поддержка регулярных выражений, мощные средства работы с массивами, объектно-ориентированная методология и обширная поддержка работы с базами данных.

При написании приложений, выходящих за рамки традиционной, статической методологии разработки web-страниц (то есть HTML), PHP также может послужить ценным инструментом для создания и управления динамическим содержанием, который используется наряду с JavaScript, стилями, WML (Wireless Markup Language) и другими полезными языками. Благодаря наличию сотен стандартных функций PHP в состоянии решить практически любую задачу, которая может придти в голову разработчику. В нем имеется обширная поддержка создания графики и операций с ней, математических вычислений, средств электронной коммерции и таких популярных технологий, как XML (Extensible Markup Language), ODBC (Open Database Connectivity) и Macromedia Shockwave. Широкий выбор возможностей избавляет от необходимости рутинной и непростой работы по подключению сторонних модулей, поэтому многие разработчики со всего мира останавливают свой выбор на PHP.

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

Сообщение «Hello world!» выводится в заголовке web-страницы. Интересно то, что команда print внутри конструкции, которая обычно называется экранирующими последовательностями PHP ( ), представляет собой законченную программу. Ни длинного кода инициализации, ни включения библиотек — программа состоит лишь из того кода, который непосредственно решает поставленную задачу!

Конечно, для выполнения сценариев PHP необходимо предварительно установить и настроить программное обеспечение PHP на сервере. Этот процесс описан в разделе «Загрузка и установка PHP/Apache» настоящей главы. Разделу предшествуют фрагменты из отзывов нескольких пользователей, выступающих в пользу PHP, с кратким обзором языка и его истории. Но прежде чем браться за процесс установки, мы познакомимся с некоторыми характеристиками PHP. Этой теме посвящен следующий раздел.

Характеристики PHP

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

  • традиционностью;
  • простотой;
  • эффективностью;
  • безопасностью;
  • гибкостью.

Существует еще одна «характеристика», которая делает PHP особенно привлекательным: он распространяется бесплатно!

Традиционность

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

Простота

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

Эффективность

Эффективность является исключительно важным фактором при программировании для многопользовательских сред, к числу которых относится и WWW. В PHP 4.0 был реализован механизм выделения ресурсов и обеспечена улучшенная поддержка объектно-ориентированного программирования, а также средства управления сеансом. В последней версии появился и механизм подсчета ссылок (reference counting), предотвращающий выделение лишней памяти.

Безопасность

PHP предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности, которые условно делятся на две категории: средства системного уровня и средства уровня приложения.

Средства безопасности системного уровня

В PHP реализованы механизмы безопасности, находящиеся под управлением администраторов; при правильной настройке PHP это обеспечивает максимальную свободу действий и безопасность. PHP может работать в так называемом безопасном режиме (safe mode), который ограничивает возможности применения PHP пользователями по ряду важных показателей. Например, можно ограничить максимальное время выполнения и использование памяти (неконтролируемый расход памяти отрицательно влияет на быстродействие сервера). По аналогии с cgi-bin администратор также может устанавливать ограничения на каталоги, в которых пользователь может просматривать и исполнять сценарии PHP, а также использовать сценарии PHP для просмотра конфиденциальной информации на сервере (например, файла passwd).

Средства безопасности уровня приложения

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

Тема безопасности настолько важна, что ей посвящена целая глава. За подробной информацией о средствах безопасности PHP обращайтесь к главе 16.

Гибкость

Поскольку PHP является встраиваемым (embedded) языком, он отличается исключительной гибкостью по отношению к потребностям разработчика. Хотя PHP обычно рекомендуется использовать в сочетании с HTML, он с таким же успехом интегрируется и в JavaScript, WML, XML и другие языки. Кроме того, хорошо структурированные приложения PHP легко расширяются по мере необходимости (впрочем, это относится ко всем основным языкам программирования).

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

Поскольку PHP не содержит кода, ориентированного на конкретный web-сервер, пользователи не ограничиваются определенными серверами (возможно, незнакомыми для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold и Zeus — PHP работает на всех перечисленных серверах. Поскольку эти серверы работают на разных платформах, PHP в целом является платформенно-незави-симым языком и существует на таких платформах, как UNIX, Solaris, FreeBSD и Windows 95/98/NT.

Наконец, средства PHP позволяют программисту работать с внешними компонентами, такими как Enterprise Java Beans или СОМ-объекты Win32. Благодаря

этим новым возможностям PHP занимает достойное место среди современных технологий и обеспечивает масштабирование проектов до необходимых пределов.

Бесплатное распространение

Стратегия Open Source наделала немало шуму в программной отрасли. Распространение исходных текстов программ в массах оказало несомненно благотворное влияние на многие проекты, в первую очередь — Linux, хотя и успех проекта Apache сильно подкрепил позиции сторонников Open Source. Сказанное относится и к истории создания PHP, поскольку поддержка пользователей со всего мира оказалась очень важным фактором в развитии проекта PHP.

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

В следующем разделе «Рекомендации пользователей» приведены свидетельства трех видных профессионалов в области web-разработок. Из них становится ясно, почему они считают PHP такой замечательной технологией.

Рекомендации пользователей

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

Майкл «Монти» Видениус (Michael «Monty» Widenius),

«Выбор PHP для реализации mp3.lycos.com был обусловлен несколькими причинами. Главной причиной стали сжатые сроки работы над проектом — ведь PHP ускоряет процесс разработки. Другой причиной была высокая эффективность — мы перешли от 0 к 1,4 миллиона посещений в сутки, и PHP с этим прекрасно справился. Третья причина заключалась в том, что я твердо знал: если на стадии тестирования с повышенной нагрузкой в PHP обнаружатся какие-либо ошибки, я смогу их самостоятельно исправить, поскольку PHP распространяется вместе с исходными текстами».

Стиг Баккен (Stig Bakken),

FAST Search & Transfer ASA

«Я использовал PHP с первых дней, еще с версии PHP/FI 1.x. Мне понравилось, что я могу обрабатывать формы и настраивать страницы «на ходу» при помощи такого простого языка. Вместе с потребностями моей компании развивался и PHP.

В наши дни PHP обладает исключительно богатыми возможностями. Мы используем его практически во всех создаваемых web-сайтах, включая 32bit.com и DevShed.com. Мы даже воспользовались им в Info West для реализации службы поддержки, управления учетными записями и отслеживания портов.

Эволюция PHP и признание его мировым сообществом — классический пример успешного ведения проекта с открытыми исходными текстами. Широта взглядов создателей, поддержка сообщества и хорошее сопровождение кодовой базы привели PHP к успеху, о котором многие коммерческие проекты могут лишь мечтать. Я с оптимизмом смотрю в будущее PHP и рекомендую каждому web-разработчику попробовать его в деле. Возможно, вы, как и я, уже не расстанетесь с ним».

Рэнди Косби (Randy Cosby),

президент nGenuity, Inc. DevShed

Вводный пример

Пример, приведенный в листинге 1.1, наглядно показывает, как легко PHP интегрируется с HTML-кодом.

Листинг 1.1. Создание динамической страницы PHP

Web Основы с LWP PHP

Освойте бесплатно наиболее простой, быстрый и гибкий способ создавать адаптивные веб-сайты.

Дизайн лендинга

Создавайте дизайн любых сайтов — для себя и на заказ!

Популярное

  • Главная
  • ->
  • Материалы
  • ->
  • Основы основ PHP: обзор для начинающих

Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Бесплатный Курс «Практика HTML5 и CSS3»

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Что нужно знать для создания PHP-сайтов?

Ответ здесь. Только самое важное и полезное для начинающего веб-разработчика.

Узнайте, как создавать качественные сайты на PHP всего за 2 часа и 27 минут!

Создайте свой сайт за 3 часа и 30 минут.

После просмотра данного видеокурса у Вас на компьютере будет готовый к использованию сайт, который Вы сделали сами.

Вам останется лишь наполнить его нужной информацией и изменить дизайн (по желанию).

Изучите основы HTML и CSS менее чем за 4 часа.

После просмотра данного видеокурса Вы перестанете с ужасом смотреть на HTML-код и будете понимать, как он работает.

Вы сможете создать свои первые HTML-страницы и придать им нужный вид с помощью CSS.

Бесплатный курс «Сайт на WordPress»

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Хотите изучить JavaScript, но не знаете, как подступиться?

После прохождения видеокурса Вы освоите базовые моменты работы с JavaScript.

Развеются мифы о сложности работы с этим языком, и Вы будете готовы изучать JavaScript на более серьезном уровне.

*Наведите курсор мыши для приостановки прокрутки.

Основы основ PHP: обзор для начинающих

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

Что такое PHP?

PHP расшифровывается как Hypertext PreProcessor (что-то вроде «преобработчик HTML»).

Что это означает? Начнем немного издалека: есть два типа языков. Один тип называется «клиентским», а другой — «серверным».

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

Мастер Йода рекомендует:  Как оживить свой сайт 5 инструментов для анимации в современном WEB

Если Вы хотите больше узнать о JavaScript, то ознакомьтесь с материалом Основы JavaScript — часть 1.

Все действия и команды, которые мы задаем, скажем, на языке JavaScript, выполняются браузером, что означает, что один и тот же код, написанный нами, обрабатывается в одном случае браузером Internet Explorer, в другом — Firefox, в третьем — Opera, в четвертом — Google Chrome, т.е. тем обозревателем, который использует каждый конкретный человек для просмотра нашей страницы.

Браузер, таким образом, имеет альтернативное название — клиент.

В случае с серверными языками (к которым и относится PHP) мы наблюдаем другую картину.

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

Все команды и скрипты, написанные на языке PHP, выполняются именно на сервере, и никак иначе. После того, как PHP-скрипт выполнится на сервере, сервер «отдает» результат своей работы, который мы и видим в браузере.

Здесь важно понимать следующий момент: по исходному коду веб-страницы, который можно посмотреть в любом браузере через опцию вроде «Исходный код страницы» нельзя определить, использовался ли язык PHP для создания данной страницы, или нет.

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

Разница по сравнению с обычными статичными HTML-страницами заключается в одном дополнительном этапе обработки кода.

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

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

Вообще PHP прекрасно работает в паре с HTML. Более того, в HTML-код можно делать вставки PHP-кода, а с помощью PHP выводить HTML-разметку. Важно запомнить следующий простой момент: Не имеет значения, насколько сложен Ваш PHP-код, в конечно итоге «на выходе» он станет обычным HTML.

Для чего использовать PHP?

HTML на 100% статичен. Встраивая же в наши страницы PHP-код, мы можем добиться того, чтобы содержимое одной и той же страницы было различно в зависимости от определенных условий (динамические страницы). За долгие годы своего существования язык PHP зарекомендовал себя как великолепное решение для создания динамических веб-сайтов.

Похож ли PHP на другие языки?

Да. PHP похож на ASP.NET, Perl, JavaScript, C#. Возможно, сейчас Вы и не знаете ни одного из них, однако изучение PHP позволит Вам в будущем с большей уверенностью овладевать и другими языками.

Что нужно, чтобы начать?

Для полноценной работы с PHP на Вашем компьютере нужны следующие вещи:

1. Веб-сервер Apache (он используется в большинстве случаев);
2. Система Управления Базами Данных (СУБД) MySQL (в базе данных хранится наполнение сайта);
3. Установленный интерпретатор PHP;
4. Текстовый редактор, в котором Вы будете писать код;
5. Браузер.

Теперь чуть подробнее о первых трех пунктах.

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

2. СУБД MySQL нужна для хранения информации, которая будет на Вашем сайте. В случае с HTML-страницами все содержимое сайта находится непосредственно в них. Каждая страница содержит определенный объем информации (контента).

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

3. Интерпретатор PHP — это своеобразная программа, которая осуществляет обработку PHP-кода на веб-сервере. Без него мы никак не сможем выполнить наши PHP-скрипты и увидеть результат их работы.

Как же установить все эти компоненты на компьютер?

Существует хорошее решение, которое значительно упрощает этот процесс и не требует от Вас никаких знаний в области настройки веб-сервера, MySQL и PHP-интерпретатора.

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

Denwer является идеальным решением в подавляющем большинстве случаев, а для новичков он будет и вовсе спасительной палочкой, так как позволяет приступить к разработке сайтов на PHP без необходимости изучать кучу дополнительной информации по настройке веб-сервера, СУБД MySQL и интерпретатора PHP.

Посмотреть видеоурок по установке и основам работы с Denwer Вы можете здесь: Denwer — установка и основы работы.

Основы

Для того, чтобы сообщить серверу о том, что надо произвести обработку PHP-кода, необходимо использовать следующий синтаксис при добавлении PHP в HTML-документ:

Открытие блока PHP-кода обозначается как » «. Теперь изменим наш код следующим образом:

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

В примере мы даем серверу команду echo (команда для вывода информации на экран) и указываем, что мы хотим вывести на экран фразу Это PHP в действии. Каждая команда в PHP отделяется от предыдущей знаком точки с запятой в конце этой команды.

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

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

Объявление переменных

Переменная в PHP — это своеобразный контейнер, который может содержать определенную информацию. Для того, чтобы создать такой «контейнер», нам нужно его назвать и указать, что в нем должно «лежать». Делается это с помощью знака «$», который означает, что мы имеем дело с переменной. Давайте занесем в переменную с именем test фразу Это PHP в действии.

Результат обработки этот кода будет точно таким же, как и в предыдущем примере. На экран просто будет выведена фраза Это PHP в действии. Однако до этого мы напрямую выводили эту фразу, а сейчас занесли эту фразу в переменную test, после чего дали команду вывести на экран уже значение переменной test.

Каким образом мы можем добавить еще какой-нибудь текст или иную информацию для вывода на экран?

Давайте рассмотрим это на следующем примере:

Как Вы видите, после вывода переменной test идет пробел, затем точка, затем снова пробел. После этого открываются кавычки, сначала идет один пробел, а затем — предложение Меня зовут Дмитрий Науменко., после чего закрываются кавычки.

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

После вывода переменной test мы как бы «прибавляем» к уже существующему выводу дополнительный текст. Делается это с помощью символа точки (.).

Символ точки означает в PHP сложение, но не сложение чисел, а сложение именно текстовой информации, вроде той, с которой мы и работаем. После точки мы указываем в кавычках, что именно мы хотим добавить к выводу, и пишем новое предложение.

Обратите внимание на то, что после открытия кавычек идет пробел. При выводе на экран он будет сохранен, благодаря чему у нас не сольются наши фразы. Т.е. мы получим вы выходе:
Это PHP в действии. Меня зовут Дмитрий Науменко.

Если же убрать тот пробел, то получится:
Это PHP в действии.Меня зовут Дмитрий Науменко.

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

Поэтому пишите так, как Вам в данном случае удобнее.

Вставка комментариев в код

Первый вопрос — «Для чего они вообще нужны?»

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

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

В PHP используются, как правило, два вида комментариев:

Разумеется, комментарии действуют лишь в пределах блоков PHP-кода .

Выводим HTML с помощью PHP

Как я уже упоминал ранее, PHP и HTML отлично работают вместе. То, что мы находимся внутри блока PHP-кода, еще не говорит о том, что мы не можем вывести на экран текст в параграфе или в жирном начертании.

Как Вы уже догадались, результатом работы этого кода будет вывод в браузер данной строки в жирном начертании.

Создаем первую функцию

Прежде всего, несколько слов о том, что такое функция.

Функция — это своеобразная мини-программа, которая выполняет некую полезную работу и выдает нам результат.

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

Синтаксис при создании функции следующий:

Скажем, если мы хотим написать функцию, подсчитывающую сумму чисел 10 и 5, мы можем сделать так:

Мы создаем функцию с именем sum и в ее теле указываем, что она должна вывести на экран сумму чисел 10 и 5. После этого мы вызываем функцию sum. Вызов функции по сути означает ее выполнение.

В данном примере мы не используем никаких аргументов (см. синтаксис функции выше). Что такое аргументы и для чего они нужны, мы рассмотрим непосредственно на примере. Модифицируем тот код, что у нас есть, сделав его более гибким и функциональным:

Теперь при создании функции sum мы указываем в скобках через запятую два аргумента — $slagaemoe1 и $slagaemoe2. В теле же функции мы складываем и выводим на экран не конкретные цифры, а значения переменных $slagaemoe1 и $slagaemoe2 (т.е. этих самых аргументов).

Теперь нам нужно просто вызвать функцию, при этом передав ей в скобках два аргумента, которые она «ожидает». Мы указываем цифры 10 и 5, в результате чего получаем 15. Передав функции sum другие числа мы, разумеется, получим другой ответ.

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

P.S. Хотите двигаться дальше в освоении PHP? Обратите внимание на премиум-уроки по различным аспектам сайтостроения, включая программирование на PHP, а также на бесплатный курс по созданию своей CMS-системы на PHP с нуля. Все это поможет вам быстрее и проще освоить этот мощный язык веб-разработки:

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!

Этапы создания веб-приложения. Основы РНР и MySQL (стр. 1 из 6)

Этапы создания веб-приложения. Основы РНР и MySQL

1. Что такое веб-программирование. Основные технологии

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

1.3. Технология CGI

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

2.1. Что такое PHP?

2.2. Возможности PHP

2.3. Почему нужно выбирать PHP

2.4. Недостатки PHP

2.5. Встраивание PHP в HTML — форму

2.6. HTML-формы. Массивы $_GET и $_POST

2.6.1. Особенности метода отправки формы POST

2.6.2. Особенности метода отправки формы GET

2.7. Функция htmlspecialchars()

2.8. Применение функции phpinfo() для отладки

3. Что такое MySQL

3.1. Возможности MySQL.

3.2. Примеры использования PHP совместно с MySQL

3.2.1. Работа с формами

3.2.2. Сохранение данных в базе данных MySQL

3.2.3. Получение (извлечение) данных из базы данных MySQL

Основные технологии веб-программирования. Методы отправки данных на сервер с помощью HTML-формы. PHP — Препроцессор Гипертекста. Сохранение данных в базе данных MySQL. Клиент-Сервер и технология CGI. Примеры использования PHP совместно с MySQL.

Рассмотрим основные этапы создания web-приложения на языке PHP .

Предполагается, что Вы знаете основы языка разметки HTML и имеете небольшой опыт программирования.

Прежде, чем приступать к созданию web-приложения, нужно выяснить, что понимают под web- программированием.

1. Что такое веб-программирование. Основные технологии

1.1. Клиент-Сервер

Когда Вы программировали, например, на Delphi, Visual Basic , или Visual C++ , то привыкли к такой схеме работы программы: нажимаете кнопку на клавиатуре ► выполняется код ► выводится результат. Все это выполняется на одном компьютере.

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

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

● Браузер открывает соединение с сервером.

● Браузер отправляет серверу запрос на получение страницы.

● Сервер формирует ответ (чаще всего — HTML-код) браузеру и закрывает соединение.

● Браузер обрабатывает HTML-код и отображает web -страницу, которую Вы видите на экране монитора.

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

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

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

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

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

1. Запустим telnet www.php5.ru 80

2. Введем в окне терминала следующее (если ввод не отображается — ничего страшного):

Host: www.php5.ru [здесь нажмем Enter дважды]

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

По экрану монитора пробежит HTML-код страницы http://www.php5.ru/.

HTML-код текущей страницы можно просмотреть практически в любом браузере, выбрав в меню «Вид|Просмотр HTML-кода»:

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

GET /php/php5ru.png HTTP/1.0\r\n

По экрану пробежит то, что бы вы увидели, если б просмотрели этот png -файл в текстовом редакторе.

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

Одно из наиболее распространенных приложений любого языка создания серверных сценариев – обработка HTML — форм. Web-программирование в большей части представляет собой обработку различных данных, введенных пользователем.

РНР облегчает задачу обработки и разбора форм, поступивших из браузера, так как в язык на самом нижнем уровне встроены все необходимые возможности. Поэтому программисту не приходится даже и задумываться над особенностями протокола HTTP и размышлять, как же происходит отправка и прием ро s т -форм или даже загрузка файлов.

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

Рассмотрим пример посылки сообщения из формы по электронной почте.

Часть 1. PHP – основы применения при построении Web-сайтов

Серия контента:

Этот контент является частью # из серии # статей: Программирование с использованием PHP и MySQL в разработке Web-приложений

Этот контент является частью серии: Программирование с использованием PHP и MySQL в разработке Web-приложений

Следите за выходом новых статей этой серии.

PHP – это язык сценариев, который используется на стороне сервера и разработан специально для Web. Он позволяет непосредственно в HTML-страницу внедрять код, выполняемый при каждом ее посещении. При этом программа на PHP интерпретируется Web-сервером, а результат ее работы в виде HTML-странички отображается браузером пользователя.

Начало разработки PHP приходится на 1994 год, и вел ее сначала один программист Расмус Лердорф (Rasmus Lerdorf). С тех пор язык претерпел большие изменения, которые вносились многими талантливыми разработчиками. На сегодняшний день мы имеем дело с его зрелой и широко используемой формой, которая применяется более чем в двадцати миллионах доменов по всему миру, и их число постоянно растет. Более точное число хостов, использующих PHP на сегодняшний день, можно посмотреть на сайте http://www.php.net/usage.php.

PHP – это продукт с открытым исходным кодом. Его можно видоизменять, использовать и свободно распространять.

Сегодня актуальной версией является PHP5, которая характеризуется полной переделкой механизма Zend. Домашняя страница PHP находится по адресу http://www.php.net, а домашняя страница Zend Technologies – http://www.zend.com.

К числу основных преимуществ PHP можно отнести следующие.

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

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

Мастер Йода рекомендует:  10 интересных вопросов по Java, которые вам могут задать на собеседовании
  • Тесная интеграция с разнообразными СУБД. В дополнение к MySQL, можно непосредственно работать с такими СУБД, как PostgreSQL, mSQL, Oracle, dbm, FilePro, Hyperware, Informix, InterBase и Sybase. Начиная с 5-й версии, PHP имеет встроенный SQL-интерфейс для работы с плоскими (двумерными) файлами, а используя стандарт ODBC, можно подключаться к любой СУБД, для которой есть ODBC-драйвер.
  • Наличие встроенных библиотек. PHP имеет в своем составе большое количество функций, решающих самые разнообразные задачи, связанные с Web. К числу таких возможностей относится генерация «на лету» GIF-изображений, подключение к Web и другим сетевым службам, обработка XML-документов, отправка электронной почты, работа с cookie-наборами и генерация PDF-файлов.
  • Одним из основных преимуществ PHP является его бесплатность.
  • Простота освоения. Отличительной особенностью PHP является похожесть его синтаксиса на C и Perl, поскольку он основан на этих языках. Зная их, любой желающий может быстро начать эффективную работу и с PHP.
  • Объектно-ориентированный подход в программировании. Пятая версия PHP полностью поддерживает все возможности объектно-ориентированного программирования. Поддержка таких основ, как наследование, приватные и защищенные атрибуты и методы, абстрактные классы и методы, интерфейсы, конструкторы и деструкторы очень похожа по духу и синтаксису на их реализацию в Java или C++.
  • Высокая степень переносимости. PHP очень хорошо работает под управлением множества операционных систем. Сам код можно разрабатывать как в среде свободных UNIX-подобных операционных систем (например, Linux или FreeBSD), так и в коммерческих версиях UNIX. Существуют и реализации PHP для Microsoft Windows.
  • Для PHP имеется поддержка, правда на коммерческой основе. Компания Zend Technologies финансирует дальнейшее его развитие и осуществляет техническую поддержку, а также разработку проприетарного ПО.
  • Отличительные черты 5-й версии PHP:

    1. Полная поддержка объектно-ориентированного программирования на основе новой объектной модели;
    2. Использование механизма исключений, обеспечивающего масштабируемую обработку ошибок;
    3. SimpleXML для простой обработки XML-данных;
    4. Улучшение поддержки потоков и добавление поддержки SQLLite;

    Взаимодействие клиентов и серверов в Интернет

    При обращении к серверу клиент, как правило, просит выполнить некоторый запрос и дать на него ответ. При этом на сервере выполняются различные Web-приложения, соблюдая интерфейсы CGI или HTTP.

    Одним из наиболее распространенных применений любого языка серверных сценариев является написание HTML-форм. Рассмотрим пример создания такой формы. Предположим, что гипотетический покупатель через Интернет зашел в универмаг и хочет сделать заказ из нескольких товаров. Сервер предоставляет ему HTML-форму (см. рисунок 1) для заполнения, которая учитывает, что заказывает клиент. Затем данные, введенные в форму, передаются обработчику формы или сценарию, который принимает эти данные, обрабатывает их по определенному алгоритму и выдает ответ заказчику в виде HTML (см. рисунок 2). При этом интерпретатор PHP, выполнив свой код, полностью формирует ответ на чистом HTML. Это означает, что из PHP-кода можно построить чистый HTML-код, допускающий просмотр в любом браузере.

    Рисунок 1. Форма заказа
    Рисунок 2. Ответ сервера

    HTML-код Web-формы имеет вид:

    Здесь в третьей строке задается имя скрипта PHP, который будет заниматься обработкой полученных данных php_var.php. Затем формируется таблица из двух столбцов и нескольких строк с наименованием предлагаемых товаров и полем для ввода адреса клиента. Ниже выводится кнопка «Подтвердить заказ», при нажатии на которую данные формы методом post (см. строку ) отправляются на сервер, где и подвергаются обработке.

    Код PHP-скрипта, обрабатывающего данные HTML-формы, имеет вид:

    В начале сценария переменным $tireqty, $oilqty , $sparkqty, $address присваиваются значения, получаемые из HTML-формы. После суммирования общего количества всех заказанных товаров совершается проверка на отсутствие заказа (нажимается кнопка «подтвердить заказ» при пустых полях формы). Если поля не были заполнены, выводится сообщение о том, что вы ничего не заказали. Если значения переменных не нулевые, то выводится результирующая информация о том, чего и сколько было заказано с указанием текущей даты и сколько все это стоит с учетом местного налогообложения. После этого открывается текстовый файл, куда заносится информация (по одному заказу в строку) о сделанных заказах и адресе клиента, которые он указал в форме. До процесса записи в файл он блокируется для исключения возможности одновременной записи и потери информации. После окончания записи блокировка файла снимается, и он закрывается.

    Выводы

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

    petukhovsky.com

    Или как работать с WebSocket на простом PHP хостинге

    Или getting started with WebSocket PHP без phpDaemon

    Здравствуйте! Простите за столь длинный заголовок, но, надеюсь, что новичкам вроде меня будет легче найти эту статью, ведь мне ничего подобного найти не удалось. Несколько недель назад я принял решение переработать игровой клиент и сервер своей игры Growing Crystals с AJAX, на WebSocket, но всё оказалось не просто непросто, а очень сложно. Поэтому я и решил написать статью, которая бы помогла самым что ни на есть начинающим разработчикам на WebSocket + PHP сэкономить несколько дней времени, максимально подробно объясняя каждый свой шаг по настройке и запуску первого WebSocket скрипта на PHP.

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

    Что я хочу: Без установки phpDaemon (phpd), NodeJS и прочих вещей на локальную машину и хостинг, продолжить разработку своего проекта, но теперь с WebSocket, в этой статье разберем простой WebSocket эхо сервер.

    Чего я не хочу: Говоря о NodeJS, не хочется переписывать серерную логику с PHP на другой язык, тем более устанавливать NodeJS, хотя и люблю JavaScript больше чем PHP.

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

    Проверка поддержки сокетов на хостинге и в Денвере

    — Что нужно сделать в первую очередь для начала работы с WebSocket?
    — Проверить поддержку сокетов на хостинге и в Денвере.

    Для этого создаём простенький файлик sockettest.php

    Загружаем на хостинг и обращаемся к нему через браузер, и, здесь может быть самое неприятное, хостинг выдаст WebSockets UNAVAILABLE. В таком случае нужно искать другой хостинг, либо, если есть возможность поменять в настройках хостинга версию и комплектацию PHP на PHP с sockets, добиваться того, чтобы хотсер волшебным образом это сделал. Если хостер такой возможности не предоставляет, то тогда при выборе нового хостинга, нужно смотреть на php_info(); и по нему определить поддержку сокетов по наличию следующей строки. А для того, чтобы сокеты заработали в Денвере, пришлось немного покопаться.

    В моём случае хостинг заработал с первой попытки, что в 2014 году вероятно на 80%.

    Добавление веб-сокетов в Денвер

    Теперь задача настроить Денвер. Мне довелось работать с разными сборками Денвера. Последняя из них Denwer3_Base_2013-06-02_a2.2.22_p5.3.13_m5.5.25_pma3.5.1_xdebug.exe, к сожалению, она и другие имеющиеся в настоящий момент сборки Денвера(дело в PHP) не поддерживают сокеты по умолчанию.

    Но эта проблема решается путём поиска и установки подходящей php_sockets.dll. Для того, чтобы всё заработало, достаточно разместить dll файл в каталоге Денвера \usr\local\php5\ext\php_sockets.dll и отредактировать файл \usr\local\php5\php.ini убрав точку с запятой перед строкой

    перезагрузить Денвер и всё, или почти всё: в некоторых случаях при перезагрузке Денвера может возникнуть ошибка

    это значит что вы используете не подходящую версию файла php_sockets.dll. Чтобы облегчить поиски предлагаю две версии — одна гарантированно подходит для PHP 5.2.12 (скачать), а вторая для гарантированно подходит для PHP 5.3.13 (скачать). Но если вам не подошел ни один из этих файлов, предлагаю скачать полный архив соответствующей версии php для windows с веб-сайта php.net и найти в архиве файл php_sockets.dll, который точно подойдёт.

    Теперь можете запустить файлик sockettest.php через браузер и увидеть заветную строку «WebSockets OK», означающую что всё необходимое для работы с Web-Socket установлено и работает хорошо.

    От сокета к веб-сокету

    Теперь, когда модуль сокетов активирован в PHP, нам предстоит путь от написания простого сокет скрипта, до скрипта способного корректно общаться по протоколу веб-сокет. Дело в том, что PHP умеет только технически работать с сокетами: принимать соедние, заводить очередь, отправлять/принимать данные, находиться в режиме ожидания и другие технические вещи. Но в нём совершенно отсутствуют готовые заголовки и другие метаданные необходимые для веб-сокетов. Обычное сокет-соединение отличается от веб-сокетов тем, что мы можем отправлять любые сообщения в произвольном формате, в то время, как веб-сокет требует обязательной отправки заголовков вида «GET / HTTP/1.1\r\nUpgrade: websocket\r\n» и соблюдение достаточного количества других правил.

    Есть еще один важный нюанс, теперь касающийся PHP — скрипт обрабатывающий сокет-соединения отличается от обычного скрипта PHP, который многократно выполняется от начала до конца при разгрузке страницы обычно менее чем за 0,1 секунды. Отличаются скрипты работы с WebSocket-ами тем, что длительность их выполнения должна быть бесконечной. Т.е. мы должны инициировать выполнение PHP-скрипта содержащего бесконечный цикл, в котором происходит получение/отправка сообщений по протоколу веб-сокет. На самом деле с этим не должно быть никаких проблем, т.к. существует большое количество способов снять ограничение по времени выполнения PHP скрипта, помимо этого можно запустить скрипт в бэкграунде пользуясь консолью сервера. На PHP вполне возможно даже создание полноценного демона. Существуют готовые решения, о которых я упоминал выше, например PhpDaemon, но сегодня речь не о них.

    Для начала, чтобы убедиться что мне не мешают файрволлы, всё настроено правильно и связь между клиентом и сервером может быть установлена, я решил написать и протестировать небольшой PHP скрипт выполняющий роль сокет-сервера (именно сокет, а не веб-сокет!), устанавливающий соединение и отвечающий всем фразой «Hello, Client!». Но для его тестирования нужно несколько клиентов (веб-сокет клиент, чтобы понять базовое отличие от простого сокета и обычный telnet).

    Клиент на html+JavaScript для веб-сокет соединения

    Для тестирования скрипта сокет-сервера нам понадобится несколько клиентов, один из них telnet (я использовал Putty), второй, веб-сокет клиент, написанный на html+JavaScript. Вы можете не устанавливать себе Telnet, его я использовал исключительно, чтобы разобраться в том, что отправляет сервер и почему я не могу это увидеть в браузере. Приведу код веб-сокет клиента, написанного на html+JavaScript.

    Веб-сокет клиент должен иметь возможность подключаться/отключаться к веб-сокетам, отправлять сообщения, выводить полученные ответы. По умолчанию, в качестве веб-сокет сервера выступает ws://echo.websocket.org, т.к. это гарантированно работающий ws(веб-сокет, далее везде ws) echo сервер, на котором можно убедиться в работоспособности нашего веб-сокет клиента.

    Логика скрипта JavaScript также максимально проста. При загрузке пытаемся подключиться по адресу ws сервера по умолчанию. Выполняем функции приёма отправки сообщений. Я специально для простоты понимания кода не использую jQuery и другие библиотеки. В скрипте используются команды создания веб-сокета (что означает автоматическое подключение), отправки сообщения и закрытия.

    и обработчики событий onopen, onmessage. Которые вызываются при открытии соединения и при получении сообщения соответственно. К сожалению, если вы создадите эти два файла и запустите клиента через Денвер с localhost, то у вас возникнут проблемы с кодировкой т.к. Денвер по умолчанию использует CP1251, не забывайте явно прописать UTF-8 в .htaccess. Или скачайте архив данного ws клиента, содержащий также и сокет-сервер.

    Код сокет-сервера на PHP я приводить не буду, т.к. он есть в архиве и снабжен комментариями. Я искусственно ограничил время работы приёмки соединений 100 секундами, чтобы скрипт он не оставался в памяти, закрывал все соединения и не приходилось при внесении в него изменений постоянно перезагружать Денвер. При чем, по прошествии 100 секунд, скрипт не прекратит свою работу, а будет ждать подключения, после которого его работа будет завершена, а все сокеты благополучно закрыты. Также, для тестирования, я использую localhost и порт 889.

    Файлы из архива можно поместить в корневую папку localhost Денвера. Алгоритм тестирования:

    1. Запускаем http://localhost/socket.html, он автоматически подключится к ws echo серверу ws://echo.websocket.org, можно отправить несколько сообщений, которые сервер должен отправить обратно, ведь это же эхо-сервер. Если это работает — отлично, с клиентом всё в порядке, если нет, проверьте все ли вы файлы разместили в одном каталоге, запущен ли у вас Денвер, и есть ли соединение с сетью Интернет.
    2. Откройте в этой же вкладке где у вас открыт ws-клиент JavaScript консоль (В GoogleChrome 34.8.1847.137 m и в FireFox это делается почти одинаково меню->инструменты->консоль Java Script или Ctrl+Shift+J, но лично я использую для этого консоль FireBug). Отправьте еще несколько сообщений. Вы увидите какие сообщения приходят от сервера. Вы можете нажать disconnect и после этого отправить несколько сообщений, вы убедитесь что сообщения не уходят, т.к. связь с сервером ws://echo.websocket.org разорвана.
    3. Запускаем в новой вкладке браузера наш сокет-сервер http://localhost/simpleworking.php. Желательно чтобы вы сразу могли видеть и вкладку клиента с консолью и вкладку сервера. Должно появиться

    Что означает, что сервер готов к входящим соединениям.
    Во вкладке клиента в поле Server address вводим ws://127.0.0.1:889 и нажимаем reconnect, мы видим что на клиенте ничего не происходит, а на сервере появляются сообщения вида

    Что говорит нам о том, что технически соединение с сокетом на сервере установлено, а на клиенте ожидается соединение по протоколу веб-сокет, и оно не установлено, т.к. браузером не получены соответствующие заголовки протокола ws. При попытке отправить сообщение с клиента, в консоли должна появиться ошибка о том, что соедние с ws не установлено. К сожалению, скрипт в GoolgeChrome остановится и для новых попыток подключения придётся перезагружать страницу с веб-клиентом. В FireFox скрипт продолжает выполняться. Обязательно сделайте reconnect спустя 100 секунд, после запуска скрипта сервера, чтобы дать ему благополучно завершиться.

  • Чтобы окончательно убедиться в том, что сервер отвечает, что его сообщения не блокируются файрволом, запустите скрипт сервера http://localhost/simpleworking.php запустите telnet и попытайтесь подключиться к 127.0.0.1:889, только это нужно сделать не позднее 100 секунд, с момента запуска сервера, пока он не закрыл соединения и не завершил скрипт.
  • По telnet должен придти ответ «Hello, Client!», что свидетельствует о том, что всё работает в штатном режиме и связь с сервером двухсторонняя.

    Ответ сокет сервера при попытке подключения по Telnet

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

    Протокол веб-сокет

    Теперь остаётся научить наш сокет-сервер общаться как веб-сокет сервер, корректно работать в фоне (демон), и, самое главное, на дешевом хостинге. Немного теории: разрешив серверу выводить на экран сообщение, которое получаем от клиента при попытке подключения, добавив перед строкой $msg = «Hello, Client!»; код

    можно увидеть, что попытка установить соединение по протоколу веб-сокет всегда сопровождается отправлением клиентом заголовка с обязательным соблюдением формата протокола WebScoket. Тег pre для вывода заголовков выбран не случайно, т.к. в заголовках большое значение играют переносы строк. Такие заголовки я получаю от браузеров, когда пытаюсь подключиться к нашему ws://127.0.0.1:889.

    Еще до того, как я начал изучать веб-сокеты, мне казалось, что работа с веб-сокетами будет напоминать работу с AJAX, когда мы отправляли запросы серверу используя JavaScript XMLHttpRequest(), но в реальности задача оказалась намного сложнее, и в первую очередь потому, что WebSocket это протокол находящийся на одном уровне с протоколом HTTP (но с некоторыми нюансами) в сетевой модели OSI, что означает, нам на стороне сервера, нужно реализовывать функционал похожий на обработку HTTP (который всегда выполнял Apache). Продолжая сравнения с AJAX, в AJAX нам не нужно обеспечивать работу протокола HTTP, т.к. это всё делает браузер и веб-сервер Apache. Мы просто отправляем и получаем сообщения. Но, использование ws хоть и накладывает на нас достаточно большой объём работы связанный с реализацией сервера на PHP, оно также даёт и преимущества: сокращение объёма передаваемых данных и рост производительности серверного ПО. Для успешного общения с клиентами по протоколу WebSocket сервер должен строго выполнять требования стандарта RFC6455, подробно описывающего форматы заголовков ответов. Все сообщения отправляемые по протоколу WebSocket можно разделить на несколько видов: handsnake (рукопожатие при установлении связи), ping-pong(проверка связи) и data-transfer(передача данных). Также есть более краткое описание протокола в общих чертах на русском. Для того, чтобы обеспечить полноценное корректное общение сервера и клиента по протоколу веб-сокет, необходима реализация функций на PHP получения и разбора заголовков от клиента, составление заголовков сервером, составление ключа и ряд других. Изучив материалы представленные на хабре и других ресурсах, удалось найти реализованные годные функции, единственным смущающим различием явлилось то, что большинство авторов используют потоковые функции работы с сокетами, они считаются более компактными, но, при этом, более ресурсоёмкими в связи с использованием буфера. Для перехода на потоковые функции работы с сокетами, не требуется установка никаких дополнительных модулей кроме уже установленных, т.к. потоки встроены в PHP 5 по умолчанию. Потоковые функции работы с сокетами всегда начинаются с stream_socket_*. При использовании потоковых функций, желательно убедиться в phpinfo() в поддержке необходимого транспорта для потоков.

    В случае если такой информации в phpinfo() нет или в случае возникновения других проблем, обратитесь к документации, но проблема решается банальным обновлением Денвера на актуальную версию.
    Еще важным является тот факт, что большинство систем ограничивает возможность создания сокета на порту ниже чем 1024, поэтому во всех дальнейших программах для сокета будет использоваться порт 8889.
    Взяв за основу исходные коды функций кодирования и декодирования заголовков протокола WebSocket, удалось реализовать полноценный ws echo сервер. Алгоритм его работы также прост как и в предыдущем случае: создаём ws сервер используя функцию stream_socket_server, запускаем бесконечный цикл в котором проверяем наличие новых соединений и при получении нового соединения размещаем его в массиве $connects, также запускаем второй цикл, который пробегает по всем соединениям и закрывает отвалившиеся и получает сообщения от открытых соединений. Также в скрипт PHP мною добавлено три функции, которые я оформил как обработчиков событий.

    Мастер Йода рекомендует:  Генерация контента сайта с использованием Template Toolkit

    Которые ничего не делают, за исключением вывода сообщений о событиях на экран. И при получении сообщения от клиента, раскодируем его и отправляем его текст, предварительно закодировав, обратно. Архив ws клиента и ws echo сервера, ws клиент не изменился. Можно протестировать ws echo server скачав архив, и разместив его в корневой папке localhost-а Денвера. Подключиться клиентом к адресу ws://127.0.0.1:8889.
    Тонкости связанные с запуском ws сервера в фоне (демон), и запуск на хостинге мы разберем в следующей статье. Буду рад комментариям и отзывам.

    Специально для тех, кто ищет хостинг для запуска своего проекта на веб-сокетах обсуждение по ссылке.

    Создаем первое PHP приложение: Часть №1

    Этот урок ориентирован на тех, кто совсем немного знаком с PHP и Объектно-Ориентированным Программированием (ООП) и хотят создать простое веб приложение.

    Для более удобного восприятия материала урок состоит из 3-х частей.

    Обзор серии уроков

    Нам необходимо изучить очень много материала. Вот план:

    Часть №1 — Создаем проект и создаем первый класс

    — создаем набросок проекта
    — создаем файлы и папки
    — создаем класс для операций с базой данной: DB.class.php

    Часть №2 — Доделываем серверную чаcть

    — Создаем класс для пользователей (User)
    — Создаем класс UserTools
    — Регистрация \ Логин \ Выход

    Часть №3 — Создаем внешний интерфейс

    — Формы
    — Обработка форм
    — Отображение информации сессий

    Начинаем наш проект!

    Создаем план действий

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

    Структура Файлов и Папок

    ООП PHP программирование использует классы и объекты для выполнения необходимых для приложения операций. При планировке Вам необходимо подумать о том, какие классы Вам понадобятся. Для данного проекта мы создадим 3 класса. Первый класс — User (будет содержать информацию о пользователе с функцией простого сохранения save()), второй — UserTools (будет содержать функции, которые необходимы пользователям, такие как login(), logout() и другие. ), третий — класс БД (он будет выполнять роль связующего звена — подсоединение к БД, внесение изменений, вставка новых рядов, и многое другое).

    Кроме классов, мы также будем использовать файл с названием global.inc.php. Этот файл будет вызываться с каждой страницы и выполнять обычные операции, которые нам понадобятся. К примеру, в этом файле мы будем выполнять подключение к БД на каждой странице.

    Другие файлы — это страницы для пользователей: index.php, register.php, login.php, logout.php, settings.php и welcome.php.

    Общая структура у нас будет выглядеть так:

    Создание Базы Данных и таблицы users

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

    Первичным ключом у нас выступает поле “id”, и именно его мы будем использовать для идентификации наших пользователей.

    Уникальным полем у нас также будет “username”. Другие необходимые поля “password”, “email”, и “join_date”.

    Создаем класс DB.class.php

    Цель данного класса очень проста: как можно больше уменьшить использование SQL при обращении к БД, а также организовать данные в удобный для нас формат.

    Ниже приведен код:

    Объяснение кода

    После создания класса Вы видите 4 переменные: $db_name, $db_user, $db_pass, и $db_host. В них необходимо внести данные для подключения к БД. $db_host обычно localhost. Перед этими переменными указано «protected» — это означает, что они будут не доступны вне этого класса. Внутри же класса их можно выводить используя $this->db_name, $this->db_user, и т.д.

    Первая функция называется connect(). Эта функция содержит защищенные значения для соединения с БД. Это соединение будет открыто для использования в любом месте текущей страницы (не только внутри класса).

    Вот пример использования этой функции вне класса:

    Вторая функция называется processRowSet(). Цель данной функции — взять объект результата mysql и конвертировать его в ассоциативный массив, в котором ключами являются название колонок. Функция проходит по каждому ряду и функция mysql_fetch_assoc() преобразовывает каждый ряд в массив. Ряд далее передается массиву и возвращается с помощью функции.

    Существует второй аргумент $singleRow, который содержит значение по умолчанию. Если значение true, выводится только один ряд вместо массива. Это очень полезно, если Вы ожидаете получить один результат (например, при выборе юзера из БД используя уникальный id).

    Последние 3 функции выполняют простые функции MySQL: select, insert, update. Цель данных функций минимизировать количество SQL кода, который необходимо использовать где-либо в другом месте приложения. Каждая функция создает SQL запрос на основе переданного значения и выполняет этот запрос. В случае select(), результаты форматируются и выводятся. В случае update(), выводится true при успешном выполнении. В случае insert(), выводится id нового ряда.

    Вот пример как Вы можете изменить данные пользователя в БД используя функцию update():

    Вот и все на сегодня! До следующих частей!

    Вторая часть урока тут, третья — тут

    Данный урок подготовлен для вас командой сайта ruseller.com
    Источник урока: www.buildinternet.com
    Перевел: Максим Шкурупий
    Урок создан: 14 Декабря 2009
    Просмотров: 185051
    Правила перепечатки

    5 последних уроков рубрики «PHP»

    Фильтрация данных с помощью zend-filter

    Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

    Контекстное экранирование с помощью zend-escaper

    Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

    Подключение Zend модулей к Expressive

    Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

    Совет: отправка информации в Google Analytics через API

    Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

    Подборка PHP песочниц

    Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

    Изучить программирование на PHP. Вводная

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

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

    Поехали дальше.
    Вторая строка:

    Первое слово, которое мы встречаем в этой строке — слово «me», на основании чего делаем вывод, что разговор тут идет о создателе данной программы. Доллар перед словом означает, что данная последовательность символов обретает свой смысл в виде переменной.

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

    Если у нас есть выделенная память, то глупо ее оставлять пустой, верно? Поэтому следующим символом «=» мы говорим компьютеру, что в это место, которое мы только что создали нужно записать данные, фактически присваивая переменной какое-то значение. Поэтому данный символ называется не «равно», как мы привыкли в математике, а «оператор присваивания».

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

    Как вы догадались, речь пойдет о довольно знакомом для слуха слове «оператор». Чаще всего слово «оператор» применяется рядом с названиями техники, требующей определенных знаний и умений для работы с ней. Фактически, оператор — это кто-то, кто выполняет определенные действия, следуя задачам, поставленными начальством. Но в программе нет живых людей, способных выполнить за нас работу, а программист — единственный и бессменный тут начальник. Поэтому, когда мы говорим об «операторах» в программе, мы имеем в виду что-то, что делает для нас определенные действия. Это простейшие приказы или указания, которые компьютер выполнит в точности, как это описано в документации. Ну или не выполнит, если обиделся, устал и хочет мороженку.

    Поэтому, для программистов «+» — это не «плюс», а «оператор сложения», «-» — «оператор вычитания», «*» — «оператор умножения», а «\» — оператор деления. Конечно, этот список операторов далеко не полный, но смысл остается тот же — «оператор» — это что-то, что совершает определенные действия (у программистов называется «совершает операцию») над исходными данными, которые называются операндами.

    Говоря языком программирования —

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

    Если оператор работает не с двумя, а с одним операндом, он называется «унарным» от испанского слова «уно» — один. Старый знакомый из математики минус — пример такого оператора, совершающего операцию отрицания своего операнда. Если $a — положительное, то -$a — отрицательное, по модулю равное $a.

    Подобно математическим уравнениям, мы можем комбинировать операторы вместе.
    Например,

    printReport «, то скорее всего функция печатает отчет, а если написано » eatCat «, то функция отправит вашего кота есть. Или съест вашего кота.

    Возвращаясь к нашему коду —

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

    Что, что простите? Функция не определена. Ой, извините, забыл маленькую деталь.

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

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

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

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

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

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

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

    Технология серверного скриптового языка PHP

    Основы технологии PHP

    Новые технологии PHP

    Новостные протоколы

    Учебно-справочный материал

    Прикладные пакеты для web-разработки

    Что такое PHP?

    В 1995 году датский программист (ныне живущий в Канаде) Расмус Лердорф (Rasmus Lerdorf) создал набор скриптов на основе Perl/CGI для вывода и учёта посетителей его онлайн-резюме, обрабатывающий шаблоны HTML-документов. Лердорф назвал набор Personal Home Page (Личная Домашняя Страница). Вскоре функциональности и быстроты Perl — интерпретатора скриптов — перестало хватать, и в 1996 году Лердорф разработал с использованием языка C новый интерпретатор шаблонов PHP/FI (англ. Personal Home Page / Forms Interpreter — «Личная Домашняя Страница / Интерпретатор форм»). PHP/FI включал базовую функциональность современного PHP: оформление переменных в стиле Perl ($имя_переменной для вывода значения), автоматическую обработку форм и встраиваемость в HTML-текст и многое другое. Новорождённый язык отличался от своего прародителя более простым и ограниченным синтаксисом.

    В 1997 году после длительного бета-тестирования вышла вторая версия обработчика, написанного на языке C — PHP/FI 2.0. Её использовали около 1 % (приблизительно 50 тысяч) всех интернет-доменов мира.

    PHP (рекурсивный акроним для «PHP: Hypertext Preprocessor«) это широко распространённый Открытый ресурс — язык скриптинга (сценариев) общего назначения, который создан специально для Web и который можно внедрять в HTML.

    Простой ответ, но что это означает? Вот пример:

    Пример 1-1. Вводный пример

    Заметьте, как это отличается от скриптов, написанных на языке Perl или языке C — вместо написания программы с большим количеством команд для вывода HTML, вы пишете HTML-разметку с некоторым количеством встроенного кода (скриптами) для выполнения каких-либо действий (в данном случае — для вывода некоторого текста). Код PHP заключён в специальные начальный и конечный тэги, что позволяет вам входить в и выходить из «режима PHP».

    PHP отличается от других подобных языков, типа клиентского JavaScript, тем, что код выполняется на сервере. Если вы имеете скрипт, аналогичный вышеприведённому на сервере, то клиент получит результат работы этого скрипта, не имея возможности определить, каков был исходный код. Вы также можете сконфигурировать ваш web-сервер таким образом, чтобы он обрабатывал все ваши HTML-файлы с помощью PHP, и реально пользователь не будет иметь способа определить, что у вас «в рукаве». Мало того, есть серверная ZIP-программа Zend Guard, которая может скрыть текст РНР-скрипта даже от хакеров, вскрывших сайт и хозяев хостинга, распаковывая зашифрованный скрипт только для передачи РНР-процессору во время выполнения скрипта на сайте.

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

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

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

    Объектное программирование

    Объектно-ориентированное программирование (ООП) на PHP

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

    Обращение из метода к свойствам только через служебное слово $this: $this->name; (обратите внимание на отсутствие знака доллара перед name) Обращение внутри метода к другому методу тоже через $this: $this->foo(); Для доступа к свойствам и методам объекта служит оператор «->»: $this->name; (обратите внимание на отсутствие знака доллара перед name)
    Обращение внутри метода к другому методу тоже через $this: $this->foo(); . Объект создается с помощью оператора new на основании шаблона, называемого классом. Класс определяется ключевым словом class.

    Пример 1

    Модификаторы доступа в ООП:

    • public — позволяет иметь доступ к свойствам и методам из любого места (глобальная область)
    • protected — доступ к родительскому и наследуемому классу (область класса наследника)
    • private — доступ только из класса, в котором объявлен сам элемент (область самого класса)

    Метод по умолчанию — public. У свойств значения модификатора по умолчанию нет.

    Константы класса в ООП

    this и self

    Внутри класса использована специальная переменная this. Это указатель, с помощью которого объект может ссылаться на самого себя.

    Для обращения к статическим методам используется self::

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

    Маша! Привет!

    Миша! Привет!

    Яша! Пока!

    Яша! Привет!

    Конструктор — это метод, который автоматически вызывается при создании нового объекта: public function __construct()<> . При инициализации6 объекта через служебную конструкцию new, PHP ищет __construct и если он есть, то вызывается.

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

    Пример 2

    Кто-то там! Привет!

    Миша! Привет!

    Маша! Привет!

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

    Добавить комментарий