Изучение языка программирования php с нуля. Изучаем PHP и MySQL правильно. Вставка комментариев в код

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

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

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

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

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

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

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

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

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

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

Назад Вперед

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

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

Что такое PHP?

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

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

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

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

Все действия и команды, которые мы задаем, скажем, на языке 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.

Основы

Для того, чтобы сообщить серверу о том, что надо произвести обработку 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 с нуля. Все это поможет вам быстрее и проще освоить этот мощный язык веб-разработки:

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


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

Используется он для создания веб-проектов. Может использоваться прямо в HTML коде. И хотя результат работы скрипта часто выводится непосредственно в браузере клиента, для работы PHP не достаточно только одного браузера. То-есть вам не получится запустить index.php файл прямо в браузере, как вы уже наверняка делали с файлом index.html. Для работы PHP сценариев и веб-страниц созданных с применением PHP потребуется веб-сервер.

Если у вас еще нет хостинг площадки для вашего сайта, тогда рекомендую поэкспериментировать с PHP сценариями на локальном сервере, предназначенном для тестирования проектов. Для организации локального сервера в операционной системе Windows (WAMP, Windows-Apache-MySQL-PHP) могут быть полезны пакеты: Денвер, XAMPP, AppServ, OpenServer и т.д. После установки этих пакетов, вы получите уже настроенный и готовый к использованию сервер, а управляться он будет через удобное меню самой программы. Также, существуют и отдельные реализации APACHE, MySQL и PHP для операционной системы Windows, но настраивать их придется уже самостоятельно через конфигурационные файлы и не будет никакого меню с галочками. Для запуска, перезапуска и остановки такого сервера можно будет использовать пакетные файлы *.bat или *.cmd (батник) с командами запуска, перезапуска или остановки служб APACHE и MySQL. Третий и самый непростой для новичка вариант — это виртуальная машина с установленной и настроенной операционной системой Linux (LAMP, Linux-Apache-MySQL-PHP). Готовые образы таких «виртуалок» часто встречаются в Интернете, так что вам могут понадобиться только знания настройки программ типа VirtualBox или VMware.

Подготовка к программированию на языке PHP для чайников

  1. PHP код следует помещать в файле index.php, сам файл должен быть размещен в корневом каталоге сайта, расположенного на веб-сервере.

  1. Весь код на языке PHP должен быть заключен между дескрипторами или сокращенный вариант , но веб-сервер может быть не сконфигурирован для использования сокращенного варианта такой записи, поэтому предпочтителен первый вариант.
  2. Вставлен PHP код может быть в любое место HTML кода.
  3. Комментирование в PHP коде осуществляется следующим образом:
// однострочный комментарий # еще один вариант однострочного комментария /* многострочный комментарий */
  1. Для того, чтобы посмотреть ваш код, откройте веб-браузер и в адресной строке введите: http://localhost/www/MyEX/index.php

Вывод данных на экран с помощью языка PHP для чайников

  1. Вывод данных в окно (клиентскую область веб-браузера) с помощью PHP можно выполнить посредством оператора echo. Этот оператор позволяет вывести данные различных типов: числа, символьные строки и т.д.
  2. Синтаксис оператора вывода:
echo элемент1, элемент2, элемент3, ..., элементN
  1. Строковые данные заключаются в двойные или одинарные кавычки. В двойных кавычках код интерпретируется PHP. Все, что заключено в одинарные кавычки выводится без какой бы ни было интерпретации. Пример:
< ?php $x="PHP"; //присвоение значения переменной echo "Привет","всем"; echo " "; echo "

Пример $x кода

Пример $x кода

  1. Для вывода более подробной информации о переменной, которая может понадобиться при отладке программы, служит функция var_dump(). Ее синтаксис:
var_dump(cписок переменных);
  1. В списке переменных указывается одно или несколько имен переменных. Эта функция ничего не возвращает. Пример:
$x=12.56; var_dump($x);
  1. Менее информативной, чем var_dump(), функцией вывода сведений о переменных является:
print_r(список_переменных);
  1. Для переменных типа «массив» эта функция выводит список вида индекс => элемент.

Переменные языка РНР для чайников

  1. Переменные – контейнеры для хранения данных. Данные, сохраняемые в переменной, называют значением этой переменной.
  2. Переменная имеет имя – последовательность букв, цифр и символа подчеркивания без пробелов и знаков препинания, начинающаяся обязательно с символа доллара ($), за которым должна следовать буква или символ подчеркивания.
  3. Правильные имена переменных: $_tel, $tmp, $my_, $address_234_45.
  4. Неправильные имена переменных: $234tel, my address, $tel:234.
  5. РНР является регистро-ависимым языком относительно имен переменных и констант. Однако ключевые слова могут использоваться в любом регистре.

Типы данных языка РНР и преобразование данных для чайников

Тип данных Пример Описание значений
Строковый или символьный (string) «Привет всем»
«123456»
«25 рублей»
Последовательность символов, заключенная в кавычки
Целочисленный, числовой (integer) -234
25
0
Число или последовательность цифр, перед которыми может быть указан знак числа
Числовой с плавающей точкой (float) 5.47
21.4
35E-3
Число с дробной частью (35Е2 означает 3500)
Логический (булевый, boolean) true
false
Этот тип имеет два значения: true (истина, да), false (ложь, нет)
NULL null Этот тип данных имеет одно значение — null
Массив (Array) Этот тип данных имеет одно множество значений, которые могут быть различных типов
Объект (Object) Программный объект, определяемый своими свойствами
  1. Для того, чтобы узнать какой тип переменной, нужно воспользоваться функцией:
gettype(имя_переменной);
  1. Для явного задания типа можно воспользоваться одним из двух способов:
Имя_переменной=(int) 12.45 //результат 12 Settype(имя_переменной, "тип") < ?php $x="PHP"; $s=gettype($x); echo $s, " "; settype($e,"integer"); $s=gettype($e); echo $s, " "; $d=(int)24.4; $s=gettype($d); echo $s, " ", $d; ?>

Константы языка PHP для чайников

  1. Константой называется именованная величина, которая не изменяется в процессе выполнения программы (скрипта).
  2. В отличие от переменных, вы не можете изменять значения констант, которые были им присвоены при их объявлении. Константы удобно использовать для хранения значений, которые не должны изменяться во время работы программы. Константы могут содержать только скалярные данные (логического, целого, плавающего и строкового типов).
  3. В РНР константы определяются функцией define(). Вот ее синтаксис:
define($name, $value, $case_sen);

$name — имя константы.
$value — значение константы.
$case_sen — необязательный параметр логического типа, указывающий, следует ли учитывать регистр букв (true) или нет (false).

Define("pi",3.14,true); echo pi; //Выводит 3.14

  1. Для проверки существования константы можно использовать функцию defined(). Данная функция возвращает true, если константа объявлена. Пример:
//Объявляем константу pi define("pi",3.14,true); if (defined("pi")==true) echo "Константа pi объявлена!"; //Скрипт выведет "Константа pi объявлена!"

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

  1. У констант нет приставки в виде знака доллара ($).
  2. Константы можно определить только с помощью функции define(), а не присваиванием значения.
  3. Константы могут быть определены и доступны в любом месте без учета области видимости.
  4. Константы не могут быть определены или аннулированы после первоначального объявления.
  5. Константы могут иметь только скалярные значения.

Программирование на языке PHP для чайников. Часть 1 was last modified: Март 3rd, 2016 by Admin

1. Подружитесь со справочником по PHP

Если вы новичок в PHP, значит, пришло время познакомиться с внушающим почтение справочником PHP. Справочник по PHP невероятно исчерпывающий и содержит действительно полезные комментарии к каждой статье. Перед тем, как задавать вопросы или пытаться самостоятельно разрешить проблему, сэкономьте время и просто возьмите курс на справочник. Ответы на ваши вопросы уже удобно разместились в полезной статье на сайте PHP.net.
В данном случае мы Вам рекомендуем поискать самостоятельно справочники на русском языке, лучше php для начинающих. Будем рады, если Вы дадите ссылке на полезные справочники в комментариях к статье (Просто учитывайте, что это перевод статьи).

2. Включите отчет об ошибках

6. Делайте отступы и используйте пробелы в коде для читаемости

Если вы не используете отступы и пробелы в коде, то результат выглядит, как картина Джексона Поллака (Jackson Pollack). Обеспечьте читаемость своего кода и нормальный поиск, потому что почти наверняка в будущем вы будете делать в нем изменения. IDE и современные текстовые редакторы могут автоматически делать отступы в коде.

7. Делайте код многоуровневым

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

8. Всегда используйте

Часто программисты пытаются использовать сокращения в операторах PHP. Вот как это обычно делается:

<% echo "Hello world"; %>

echo "Hello world" ;

<% echo "Hello world" ; %>

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

9. Используйте содержательные, последовательные названия

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

10. Комментируйте, комментируйте, комментируйте

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

11. Установите MAMP/WAMP

MySQL — самый популярный вид базы данных, используемый с PHP (хотя и не единственный). Если нужно настроить локальное окружение для разработки и тестирования ваших PHP-приложений на компьютере, предусмотрите установку MAMP (Mac) или WAMP (Windows). Установка MySQL на ваш собственный компьютер может стать утомительным процессом, а оба этих программных пакета содержат MySQL. Ловко и просто.

12. Установите лимиты своим скриптам

Установка лимита времени на PHP-скрипты – очень ответственная вещь. Бывают моменты, когда скрипты выходят из строя, и когда это произойдет, вам придется использовать свойство set_time_limit (установить лимит времени), чтобы избежать бесконечно повторяющихся циклов и истечения таймаутов времени соединения с базой данных. Set_time_limit устанавливает лимит времени на максимальное количество секунд, за которое выполняется скрипт (по умолчанию 30). По истечении этого времени возбуждается неустранимая ошибка.

13. Используйте объекты (или ООП)

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

14. Поймите разницу между одинарными и двойными кавычками

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

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

15. Не ставьте phpinfo() в свой Webroot

Phpinfo – чудесная вещь. Просто создав PHP-файл, в котором есть:

и пристроив его где-нибудь на сервере, вы сможете незамедлительно узнавать все об окружении своего сервера. Тем не менее, множество новичков поместит файл, содержащий phpinfo() в webroot сервера. Это чрезвычайно небезопасная практика, и если чей-то пытливый ум получит доступ, он может потенциально сглазить ваш сервер. Убедитесь, что phpinfo() находится в безопасном месте, а в качестве дополнительной меры удалите его, как только закончите.

16. Никогда, никогда не доверяйте своим пользователям

Если в приложении есть места для входа пользователей, вы всегда должны предполагать, что кто-то попробует ввести сомнительный код. (Мы не подразумеваем, что ваши пользователи — плохие люди. Это просто здравый смысл.) Отличный способ уберечь свой сайт от хакеров – всегда инициализировать свои переменные для защиты сайта от XSS-атак. На PHP.net есть пример должным образом закрытой формы с инициализированными переменными:

if (correct_user ($_POST [ "user" ] , $_POST [ "password" ] ) {

$login = true ;

if ($login ) {

forward_to_secure_environment () ;

17. Храните пароли зашифрованными

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

echo md5("myPassword"); // renders -

echo md5 ("myPassword" ) ; // renders -

Возражение: Тем не менее, помните, что хэши MD5 уже давно скомпрометированы. Безусловно, они скорее безопасны, чем нет, но с помощью гигантской “спектральной таблицы” хакеры могут восстановить ваш хэш. Для обеспечения еще большей безопасности обдумайте возможность добавления «соли» (помех в виде «белого шума»). «Соль» – это обычно дополнительный набор символов, которые вы присоединяете к пользовательской строке.

18. Используйте инструменты визуализации баз данных

Если вам кажется сложным планировать и изменять базы данных для своих PHP-приложений, можно было бы рассмотреть возможность использования инструмента визуализации баз данных. Пользователи MySQL могут работать с DBDesigner и MySQL Workbench для визуального дизайна своих баз данных.

19. Используйте буферизацию вывода

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

Для активирования функции буферизации вывода просто добавьте ob_start() как здесь в начале файла.

Возражение: Хотя это и не требуется, обычно считается хорошей практикой просто взять и прикрепить функцию “ob_end_flush();” к концу документа. P.S. Хотите также сжать HTML? Просто смените “ob_start();”на “ob_start(‘ob_gzhandler’)”;

XHTML

untitled

untitled

20. Оберегайте свой скрипт от атаки SQL-injection

Если вы не отделяете (escape) символы, использующиеся в строках SQL, ваш код уязвим для атаки SQL-injection. Избежать этого можно, используя либо функцию mysql_real_escape_string (прим. перев. для отделения символов), либо подготовленные операторы SQL (prepared statements).

Вот пример mysql_real_escape_string в действии:

$username = mysql_real_escape_string($GET["username"]);

$username = mysql_real_escape_string ($GET [ "username" ] ) ;

И подготовленного оператора:

21. Попробуйте ORM

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

Для PHP есть множество ORM-библиотек, таких как Propel, а также ORM встроен в фреймворки PHP, такие, как CakePHP.

22. Кэшируйте страницы, управляемые базой данных

Кэширование PHP-страниц, управляемых базой данных – отличная идея для улучшения скорости загрузки и производительности своего скрипта. В действительности не так уж трудно создать и извлечь статические файлы содержимого при помощи нашего доброго друга ob_start(). Вот пример, взятый со Snipe.net:

// TOP of your script $cachefile = "cache/".basename($_SERVER["SCRIPT_URI"]); $cachetime = 120 * 60; // 2 hours // Serve from the cache if it is younger than $cachetime if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) { include($cachefile); echo ""; exit; } ob_start(); // start the output buffer // Your normal PHP script and HTML content here // BOTTOM of your script $fp = fopen($cachefile, "w"); // open the cache file for writing fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file fclose($fp); // close the file ob_end_flush(); // Send the output to the browser

// TOP of your script

$cachefile = "cache/" . basename ($_SERVER [ "SCRIPT_URI" ] ) ;

$cachetime = 120 * 60 ; // 2 hours

// Serve from the cache if it is younger than $cachetime

if (file_exists ($cachefile ) && (time () - $cachetime < filemtime ($cachefile ) ) ) {

include ($cachefile ) ;

Интернет в современном мире занимает всё более прочные позиции. Лет 15 назад для доступа к сети было нужно дорогое оборудование и немалые деньги на оплату счетов. Сейчас в Интернет может за копейки попасть любой человек, имеющий хотябы мобильный телефон. Всё больше услуг и сервисов переходят в электронную форму. Из средства общения и обмена информацией Интернет превращается в удобный инструмент для ведения бизнеса и зарабатывания денег.

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

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

Общие принципы

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

Сеть Интернет состоит из огромного количества соединённых между собой компьютеров, маршрутизаторов и прочего железа, нужного для правильной работы. Каждый элемент сети Интернет (узел) обладает уникальным описателем - IP-адресом. Зная IP-адрес узла можно попробовать подключиться к нему, а имея небольшие навыки можно определить кому этот адрес принадлежит и в каком регионе мира находится. IP-адреса принято записывать в виде четырёх групп цифр, разделённых точками, например

192.168.100.003 или 10.10.0.123

Согласитесь, запомнить адреса всех часто посещаемых страниц - задачка не из лёгких. Поэтому в сети Интернет существуют специальные сервера DNS (Domain Name Resolution), на которых хранятся списки сопоставления IP-адресов и символьных имён. Именно благодаря эти серверам пользователь всегда попадает по нужному IP-адресу, набрав в браузере только имя странички.

После того, как мы ввёли в строку браузера имя нужной странички, браузер самостоятельно получает из DNS IP-адрес нужного сервера и посылает по этому адресу специальный запрос на получение странички (HTTP-запрос). Работающая на сервере специализированная программа (т.н. Web-сервер) обрабатывает этот запрос и возвращает в браузер требуемую страницу.

Очевидно, что все действия по отображению страницы можно однозначно разделить на две категории: выполняемые на стороне клиента (клиентский код или front-end ) и выполняемые на стороне сервера (серверный код или back-end ). Причем сервер ничего не знает о текущем состоянии клиента, а клиент - о текущем состоянии сервера. При разработке алгоритмов обмена надо всегда помнить об этом и своевременно передавать нужные данные, описывающие состояние или требуемое действие.

В зависимости от места применения различаются и средства реализации частей. На стороне клиента как правило используется только HTML, JavaScript (AJAX), CSS и Flash. Разработчики серверной части менее стеснены в средствах, т.к. большая часть существующих языков позволяет создавать или описывать HTML-страницы. Наиболее широко распространённы сейчас Java, Perl, PHP, Python, Ruby, C# и VB.NET. Каждый из них имеет свои сильные и слабые стороны, поэтому разработчик должен сделать выбор исходя из стоящих перед ним задач.

Почему именно PHP?

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

  1. Простота. Язык очень легко воспринимается, особенно начинающими программистами.
  2. Скорость разработки. Благодаря простоте и интуитивной понятности, PHP позволяет очень быстро создавать довольно сложные сайты.
  3. Наличие библиотек Существует огромное количество готовых примеров и библиотек классов. Созданы и проверены сотни библиотек, существенно упрощающих жизнь разработчика.
  4. Поддержка Практически любой сервер в Интернете поддерживает PHP
  5. Безопасность PHP позволяет создавать действительно защищённые сайты благодаря встроненной поддержке шифрования данных при хранении и передаче.

Однако за свои преимущества PHP платит некоторыми органичениями. Например, использовать PHP для доступа к системным функциям очень неудобно по сравнению с Perl или Python (поэтому многие сисадмины так любят Perl).Есть ещё несколько ограничений, о которых мы поговорим при изучении соответствующих разделов.

Представляю Вашему вниманию вольный перевод статьи 30+ PHP Best Practices for Beginners

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

1. Подружитесь с руководством по PHP

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

2. Включите вывод ошибок

6. Используйте отступы и пробелы для удобочитаемости

Если вы не используете отступы и пробелы в коде, результат выглядит как искусство Jackson Pollack (американский художник, идеолог и лидер абстрактного экспрессионизма, оказавший значительное влияние на искусство второй половины XX века). Убедитесь, что ваш код читаемый и в нем легко найти нужный кусок кода, потому что скорей всего вам придется его дорабатывать в будущем. IDE и продвинутые текстовые редакторы могут добавлять отступы автоматически.

7. Делайте код "ступенчатым"

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

8. Всегда используйте

Зачастую программисты пытаются использовать сокращенную форму объявления PHP скриптов. Вот несколько примеров:

<% echo "Hello world"; %>

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

9. Используйте осмысленные имена, в соответствии соглашением об именовании

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

10. Комментарии, Комментарии, Комментарии

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

11. Установите MAMP/WAMP

MySQL это самый популярный сервер баз данных, используемый с PHP (если не единственный). Если вы хотите организовать локальную среду разработки для тестирования своих PHP приложение, присмотритесь к MAMP (Mac) или WAMP (Windows). Установка MySQL на ваш компьютер может оказаться довольно утомительным процессом, а оба этих пакета уже содержат MySQL. Чисто и просто.

12. Ограничивайте свои скрипты

Хорошей практикой является установка ограничения времени выполнения ваших PHP скриптов. Бывают случаи когда происходит сбой в работе скрипта, и если это случается, вы, возможно захотите использовать ограничение времени выполнения скрипта , что позволит предотвратить ошибки связанные с бесконечными циклами и таймаутом подключения к базе данных. set_time_limit позволяет установить ограничение на время выполнения скрипта в секундах (по-умолчанию это значение равно 30). После превышения этого времени, генерируется фатальная ошибка.

13. Используйте объекты (или ООП)

14. Различайте двойные и одиночные кавычки

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

Замечание: На самом деле это не совсем так. Тесты показывают, что если строка не содержит переменных, то двойные кавычки дают выигрыш в производительности.

15. Не выкладывайте phpinfo() в вашей корневой директории сервера

(выводит информацию об интерпретаторе PHP) это замечательная штука. Создайте простой PHP файл с таким содержанием

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

16. Никогда не доверяйте пользователям

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

17. Храните пароли в зашифрованном виде

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

Echo md5("myPassword"); // выведет -

Замечание: Имейте ввиду, что MD5 хеши уже научились взламывать. Они добавляют безопасности, однако атакующий может расшифровать хэш с помощью "радужных таблиц". Для повышения безопасности добавляйте "соль" (salt). "Соль" добавляет дополнительные символы к пользовательской строке.

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

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

19. Используйте буферизованный вывод

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

Для включения буферизации вывода просто добавьте ob_start() в начале файла.

Замечание: Считается хорошим тоном добавлять функцию ob_end_flush(); в конец документа. P.S. Хотите сжать HTML? Просто замените ob_start(); на ob_start("ob_gzhandler");

За дополнительной информацией обратитесь сюда

untitled

20. Защищайте скрипты от SQL-инъекций

Если вы не используете экранирование символов в сроках с SQL-запросами, то ваше приложение подвержено SQL-инъекциям. Вы можете избежать этого используя mysql_real_escape_string , или подготовленные (заранее компилированные) запросы.

Пример использования mysql_real_escape_string:

$username = mysql_real_escape_string($GET["username"]);

и подготовленной строки:

$id = $_GET["id"]; $statement = $connection->prepare("SELECT * FROM tbl_members WHERE id = ?"); $statement->bind_param("i", $id); $statement->execute();

Используя подготовленные конструкции мы предотвращаем прямую запись пользовательских данных в запрос. Вместо этого мы используем, метод "bind_param" для связывания значений с переменными в запросе. Более безопасно, быстрее, особенно при выполнении нескольких операторов CRUD (create read update delete - "Создание чтение обновление удаление" - прим.) за раз.

21. Используйте ORM

Если вы пишите объектно-ориентированный код в PHP, можете использовать объектно-реляционное отображение (ORM). ORM позволяет преобразовывать данные между реляционной базой данных и объектно-ориентированным языком программирования. Если коротко: ORM позволяет работать с базой данных так же как и с классами и объектами в PHP.

Одна из многих ORM-библиотек для PHP Propel , а так же ORM присутствует в PHP-фрейворках, например в CakePHP .

22. Кэшируйте страницы, использующие базу данных

Кэширование страниц, использующих базу данных снижает нагрузку и повышает производительность скрипта. Это позволяет создавать и использовать статические файлы с помощью функции ob_start(). Пример с Snipe.net :

// начало скрипта $cachefile = "cache/".basename($_SERVER["SCRIPT_URI"]); $cachetime = 120 * 60; // 2 часа // используем кэш, если значение меньше $cachetime if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) { include($cachefile); echo ""; exit; } ob_start(); // начало буферизованного вывода // ваш скрипт и HTML должен быть здесь // конец скрипта $fp = fopen($cachefile, "w"); // открываем файл кэша для записи fwrite($fp, ob_get_contents()); // сохраняем содержимое буферизованного вывода в файл fclose($fp); // закрываем файл ob_end_flush(); // отправляем данные браузеру

Эта часть кода использует кэшированную версию страницы, если страница не "старше" 2х часов.

23. Используйте системы кэширования

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

  • Netbeans есть возможность профилирования PHP.

    27. Стандарты кодирования

    После того как вы освоитесь в PHP, можно переходить к изучению стандартов кодирования. Существуют различия между стандартами (Zend , Pear), выберите свой и придерживайтесь ему всегда.

    28. Держите функции вне циклов

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

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

    29. Не плодите переменные

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

    $description = strip_tags($_POST["description"]); echo $description;

    Echo strip_tags($_POST["description"]);

    Замечание: Говоря на счет удвоения расхода памяти, на самом деле заблуждение. PHP реализует управление памятью на основе подхода "копирование при записи". Это означает, что вы можете присвоить одно значение нескольким переменным и не беспокоится, что данные будут дублироваться в памяти. Можно поспорить, что "хороший" пример удачный пример хорошего кода, однако он точно не быстрее.

    30. Обновляйтесь до последней версии PHP

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

    31. Уменьшайте количество запросов в базе данных

    Чем меньше запросов к базе данных тем больше производительность PHP-скрипта. Такие утилиты как Stace (Unix) и Process Explorer (Windows) позволят найти избыточные процессы и устранить их.

    32. Не бойтесь спрашивать

    Только люди пытаются скрыть факт своего не знания в определенной области. Никто не хочет показаться глупым! Но как мы можем учиться не спрашивая? Чувствуйте себя свободнее используя форумы и IRC StackOverflow , спрашивайте у бывалых PHP разработчиков. На сайте PHP есть страница