Изучаем PHP и MySQL правильно. С чего начать изучение PHP


Для тех, кто хочет изучать PHP, можно посоветовать великолепный "Самоучитель PHP " с сайта PHP5.RU
Курс находится в процессе написания, но уже сейчас ссылки на отдельные уроки из него стоят в различных разделах этого FAQ. И, поверьте - оно стоит того.
Не могу не порекомендовать замечательный материал Вадима Ткаченко АКА Bizon-а "Вступление в PHP и MySQL" . Он даже издавался отдельной книгой, а сейчас - исправленный и дополненный - размещается на сайте
"PHP в деталях ". Этот ресурс стоит особняком. В отличие от предыдущих, рекомендовать прочесть его целиком может только садист - там слишком много информации. но в этом и его прелесть. Это неисчерпаемый ресурс информации по PHP. Единственное замечание - обращайте внимание на дату написания статьи. Не стоит особо доверять тем, что написаны до 2003 года.
Ну, и, конечно же - этот сайт,
Если вы еще не прочли его целиком - обязательно сделайте это. Здесь перечислены проблемы, с которыми рано или поздно столкнется КАЖДЫЙ, кто пишет на PHP.

Программное обеспечение.
Для работы с РНР под Windows, надо установить следующие программы:
- web-сервер Apache (5Mb)
- сам PHP (10Mb)
- по желанию - MySQL (23Mb).
Настройка очень простая. Апач устанавливается программой установки. Там, где он запрашивает имя вашего сервера и емейл администратора, надо 2 раза написать localhost и свой e-mail.
PHP распаковывается из зипа в любой каталог по желанию (стандартно - C:\PHP) и настраивается обязательно как модуль Апача. Для этого надо выполнить три действия:
- переписать файл php5ts.dll в каталог WINDOWS
- в файл httpd.conf (C:\Program Files\Apache Group\Apache\conf\httpd.conf), в самом низу, добавить две строчки
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-httpd-php .php .phtml
- перезапустить Апач (с помощью утилиты Apache monitor в трее)
Выполнив все эти действия, можно положить тестовый php скрипт (допустим, он называется test.php и состоит из строчки

в каталог, который является корневым для веб-сервера (по умолчанию это C:\Program Files\Apache Group\Apache\htdocs\) и обратиться к нему, написав в браузере адрес
%20" target="_blank">http://127.0.0.1/test.php

При установке MySQL выбрать Standard configuration, на следующем экране нажать Next, на следующем - задать пароль или снять галочку "Modify security settings", если хотите оставить его пустым.
Для проверки запустите консоль Mysql: Пуск - Выполнить и в появившуюся строку скопировать
"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe"
или
"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe" -uroot -pPASSWORD
если консоль запустилась - все работает. Наберите exit для выхода и приступайте к конфигурированию поддержки mysql в PHP.
Для этого, если вы не сделали этого раньше, возьмите файл c:\php\php.ini-development и скопируйте под именем php.ini в каталог windows. Затем отредактируйте его, убрав точку с запятой в начале строки
;extension=php_mysql.dll
и отредактировав параметр extension_dir:
extension_dir = "c:\php\ext\"
заодно можно сразу исправить
short_open_tag = On
чтобы работали старые скрипты и удобные шаблоны
и не забудьте после этого перезапустить Апач, как это было описано выше.
Теперь вы можете использовать mysql в своих php-скриптах.

Те, для кого эта инструкция слишком сложна, могут попробовать установить готовый комплект Денвер-2 .
В него входит сразу все, что нужно, и еще много ненужного. А главное - работает все само.
Еще одно достоинство Денвера в том, что объем базового комплекта в 10 раз меньше полных версий - всего 4 мегабайта. А так же то, что его автор пишет интересные книжки по PHP.

Так же, всем любознательным рекомендуется ВЕСЬМА толковая статья Установка и настройка Apache+PHP
с сайта PHP5.RU. И, конечно же - разделы официальной документации, посвященные установке соответствующих программ.

Форумы.
При изучении любого дела обязательно появятся вопросы.
Вопросы удобно задавать на форумах.
http://phpclub.ru/talk/forumdisplay.php?s=&forumid=12
Форум PHPклуба. Самый посещаемый и известный. К сожалению, известность служит ему дурную службу. Очень часто на вопрос новичка отвечает еще более зеленый новичок, давая совершенно неправильный ответ. Однако профессионалов там тоже предостаточно, готовых объяснить ошибки и первому и второму.

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

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

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

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

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

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

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

Назад Вперед

20 способов изучить PHP и спасти котят

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

Окей, пусть в шутку, но давайте это будет то, от чего мы отталкиваемся.

Начало работы с PHP может быть непростым опытом. Учитывая это, 20 хороших советов научат вас тому, как следовать лучшим практикам и сохранять жизни... жизни котят.


0. Пишите код так часто, как только можете.

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

Много ли знаний, полученных в то время, вы действительно используете?

"Частое программирование с конкретной целью приведет к прочному усвоению знаний".

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

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

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

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

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


1. Ознакомьтесь с документацией по PHP

Каждый список полезных советов почему-то содержит этот пункт. И точно не зря.

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

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

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

Возможно, одно из полезных знаний о руководстве - это то, что большинство функций можно найти, используя шаблон http://php.net/function-name в адресной строке. Например, для поиска функции strpos() используйте адрес http://php.net/strpos , а для array_key_exists() - http://php.net/array-key-exists . Обратите внимание на отсутствие скобок в адресе и изменение нижнего подчеркивания на символ дефиса.


1а. Читайте комментарии!

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

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


2. Воспользуйтесь преимуществами огромного сообщества PHP

В дополнение к руководству PHP, есть еще много замечательных сообществ разработчиков по всему интернету. Среди моих любимых: StackOverflow.com и форум W3Schools.com .

Кроме того, Twitter является на удивление отличным местом для размещения вопросов о PHP. Если вы проставляете для твита тэг "PHP", то, скорее всего, кто-то в сообществе заметит это и протянет вам руку помощи.

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


3. Не откладывайте хорошие практики на потом

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

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

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

Время, которое вы потратите на изучение mysql_query() сопоставимо со временем на изучение PDO или MySQLi . Поэтому, если вы начнете сразу со второго варианта, то можете быть уверены, что вы начинаете с фундаментальных основ работы с базой данных и, в конечном счете, тратите на это меньше усилий и времени.


4. Не откладывайте хорошие практики на потом!

Я просто хотел убедиться, что вы обратили на это внимание.

"Серьезно, ребят. Не откладывайте в долгий ящик. Каждый раз, когда вы нарушаете лучшие практики из-за того, что они кажутся "слишком сложными", компания BP топит в сырой нефти очередного пушистого котенка."

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


5. Сделайте код самодокументируемым

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

"Если вы хотите выжить из имен переменных все символы для сокращения общего времени работы скрипта на 0.2 мс., то, скорее всего, столкнетесь с большими проблемами."

Каково бы ни было искушение, нужно устоять любой ценой.

Рассмотрим следующий фрагмент кода:

Вы понимаете сходу, что здесь происходит?

Конечно, вы разберетесь с тем, как это работает, но зачем заставлять других людей, изучающих ваш код, тратить лишнюю минуту на то, чтобы понять, что же содержит в себе переменная с "говорящим" именем "c"?

Давайте возьмем этот код и сделаем его самодокументируемым:

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

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


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

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

Если ваш код самодокументируемый, то вам не понадобится много комментариев. Однако, какими бы очевидными и понятными ни были имена ваших функций и переменных, всегда найдутся некоторые "белые пятна", когда совершенное действие на совсем очевидно.

"Комментарии - это признак компетентного веб-программиста."

Когда это происходит, комментируйте код. "Будущий Вы" скажем "Нынешнему Вам" огромное спасибо, когда придет время модифицировать скрипт.

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

Давайте посмотрим:

$pieces = explode(".", $image_name); $extension = array_pop($pieces);

Что здесь происходит? Вам пришлось остановиться и подумать над кодом? Вы все еще не уверены относительно того, что находится в переменной $extension ?

Посмотрите на сниппет ниже снова, всего лишь с одним кратким комментарием:

// Получаем расширения файлов изображений $pieces = explode(".", $image_name); $extension = array_pop($pieces);

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

Как и всегда, ключевым моментом является умеренность.

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

"Умеренность - ключ ко всему."

Слишком большой объем комментариев - и ваш код становится трудно "просканировать", что тоже очень мешает работе.


7. Изучите Docblock и используйте его

Docblock - это стандарт комментирования (подробнее ).

У меня есть несколько доводов в пользу применения этого стандарта:

1. Он заставляет нас думать о том, "что" и "почему" для каждого файла, функции, метода, и т.д.

2. Он дает ясные описания ожидаемых параметров и возвращаемых значений для функций / методов.

3. Он дает краткое описание того, что делает тот или иной код.

4. В сочетании со средой разработки (IDE), поддерживающей Dockblock, мы имеем подсказки для кода (которые позволяют нам видеть описания, ожидаемые параметры и возвращаемые значения для функций и методов, которые мы используем).

Этот момент можно назвать ограничением для "новичков высокого уровня", но я отношу его к лучшим практикам, которые нужно освоить как можно скорее.

Не стесняйтесь пропустить этот этап, но помните о котятах.

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

/** * Простой класс для подсчета суммы или разности переменной $_foo и некоторого значения * * @author Jason Lengstorf * @copyright 2011 Copter Labs * @license http://www.opensource.org/licenses/mit-license.html */ class CopterLabs_Test { /** * Значение, используемое для сложения и вычитания * @var int */ private $_foo = 0; /** * Прибавляет значение к $_foo и возвращает сумму * @param int $add_me Значение, прибавляемое к $_foo * @return int Сумма $_foo и $add_me */ public function add_to_foo($add_me=0) { return $this->_foo += $add_me; } /** * Вычитает значение из $_foo и возвращаеть разность * @param int $subtract_me Значение, вычитаемое из $_foo * @return int Разность $_foo и $subtract_me */ public function subtract_from_foo($subtract_me=0) { return $this->_foo -= $subtract_me; } }

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

Вышеприведенный Docblock при использовании в Netbeans даст нам такие подсказки для кода:


8. Не будьте настолько суровым кодером, чтобы отказываться от IDE

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

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

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

Не будьте "Странным парнем".

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

Насколько мощную IDE использовать - полностью зависит от вас. Лично мне очень нравится Netbeans . Я слышал тонны похвал в адрес Coda для Mac (хотя это не совсем IDE), а сам ранее использовал Eclipse (до переезда на Netbeans).

Независимо от того, какую IDE вы используете, вы увидите увеличение скорости работы и снижение количества мелких ошибок. Позже, когда ваши библиотеки кода пополнятся, вы будете иметь подсказки по коду для всех своих приложений (потому что вы используете Docblock, верно? Верно?!)

Не думайте, что IDE - это не круто - неважно, что вам говорит "Странный парень".


9. Группируйте повторяющийся код в функции

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

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

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

Рассмотрим следующий пример:

$unclean1 = "Click Me!"; $detagged1 = strip_tags($unclean1); $deslashed1 = stripslashes($detagged1); $clean1 = htmlentities($deslashed1, ENT_QUOTES, "UTF-8"); $unclean2 = "Let"s call Bjorn!"; $detagged2 = strip_tags($unclean2); $deslashed2 = stripslashes($detagged2); $clean2 = htmlentities($deslashed2, ENT_QUOTES, "UTF-8"); echo $clean1, "
", $clean2;

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

Это тот случай, когда использование фукнции гораздо желательнее:

$unclean1 = "Click Me!"; $unclean2 = "Let"s call Bjorn!"; $clean1 = sanitize_input($unclean1); $clean2 = sanitize_input($unclean2); echo $clean1, "
", $clean2; function sanitize_input($input) { $detagged = strip_tags($input); $deslashed = stripslashes($detagged); return htmlentities($deslashed, ENT_QUOTES, "UTF-8"); }

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


10. Группируйте сходные фукнции в классы

Знакомство с ООП (объектно-ориентированное программирование) - еще один момент, который можно отнести к категории "освоить как можно раньше".

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

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


11. Используйте константы, а не глобальные переменные.

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

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

Потом я осознал, что PHP позволяет определять константы, используя функцию define() .

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

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


12. Не бойтесь использовать Includes

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

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

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

Например, на сайте с множеством страниц, типичный шаблон может иметь вид, вроде:


13. Не сходите с ума из-за производительности

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

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

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

Никто не сможет заметить разницы при загрузке страницы за 25 или за 40 мс. Убедитесь, что это не 700 мс. и занимайтесь более важными вещами.


14. Не "жените" HTML на своих скриптах.

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

Рассмотрим следующий пример:

Echo "

Здесь идет контент.

";

Действительно ли необходимо оборачивать параграф тэгом div ? Можно ли изменить код так, чтобы он включал в себя только тэги параграфов для содержания текста? Давайте посмотрим на альтернативный вариант:

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

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


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

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

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

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


16. Не будьте слишком горды для того, чтобы меняться

Вы будете неправы. Причем часто. Но это не так уж плохо.

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

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

"Никогда не позволяйте себе думать, что непрофессиональное решением является приемлемым, поскольку оно ваше. Это высокомерие (которое, как правило не приводит ни к чему хорошему)."


17. Проводите валидацию

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

Помните: Валидация (validation) - это совсем не то же самое, что очистка (sanitization).

"Валидация входящих данных - это проверка факта соответствия этих данных определенному формату, вроде проверки того, является ли введенное значение корректным email-адесом, либо содержит ли поле для ввода логина от 8 до 20 символов латинского алфавита или цифр."

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


18. Что не запрещено - разрешено?

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

Типичным решением является создание так называемого "блэклиста": подборки запрещенных тэгов, символов и т.д.

"Если вы постоянно не пополняете и не мониторите свой черный список, то это чревато возникновением уязвимостей."

Это, однако, создает дополнительные трудности. Вам нужно быть умнее тех, кто хочет сделать что-то "противозаконное". К примеру, для отключения JavaScript в комментариях, вы могли бы запретить использование события OnClick и ему подобные, но что делать, если вы что-то упустили? Что делать, если какие-то новые события будут добавлены в спецификацию в будущем?

Если вы постоянно не пополняете и не мониторите свой черный список, то это чревато возникновением уязвимостей.

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

Например, в функции strip_tags() , вы можете явно указать, какие теги разрешены в строках:

Strip_tags($string, "");

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

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


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


Подводя итог

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

Не пугайтесь, если все, что здесь написано для вас в диковинку: просто делайте за один раз один шаг (см. пункт 15).

От автора: во всемирной паутине физическая сила ничего не значит! Вы можете с любой силой жать на клавиши, но результат от этого не изменится. В интернете считается сильнее тот, у которого больше опыта и знаний. Хотя мой знакомый так «накачал» железо своего ПК, что стал бояться его! Но это со всем из «железной» оперы. А мы сегодня выясним в PHP с чего начать обучение, чтобы стать сильным программистом.

«Чайная» болезнь

Конечно, пардон, но вы «чайник». Как я догадался? Ну, потому что только новички ставят перед собой такие вопросы. И в этом «звании» нет ничего оскорбительного, потому что у вас наблюдается столько желания к обучению, что можете «закипеть». А это уже признак того, что все удастся!

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

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

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

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

Тесная взаимосвязь с – если собираетесь «штурмовать» сайтостроение, то придется выучить и указанную СУБД. Мы в этом вам поможем .

Где начало?

Если собрались изучать программирование на PHP, а с чего начать – не знаете, тогда этот раздел для вас. Начинать следует с основ: с особенностей синтаксиса языка, типов данных, переменных, их инициализации, циклов, объявления функций и т.д. Даже если все это вы изучали в других программных дисциплинах, то придется ознакомиться заново, поскольку PHP имеет ряд особенностей.

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

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

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

Немного личного

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

На следующий семестр я перевелся в параллельную группу, состоявшую из таких же «чайников». Для них преподы все «раскусывали» и «разжевывали», тщательно поясняли. Здесь дела пошли «на поправку», и я снова стал одним из лучших студентов.

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

Что нужно для начала разработки

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

Интерпретатор PHP.

Локальный сервер.

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

Я рекомендую использовать Open Server . Он включает в себя все, что необходимо чтоб начать работать с PHP без особого «головняка». Процесс установки происходит автоматически (легко и быстро). Как раз то, что нужно для настоящих «чайников» .

Надеюсь, мне удалось развеять все сомнения и вопросы, «преследующие» новичков. Чувствуете, как стали сильнее? Это вы только начали заниматься PHP. Уже скоро вы будете настоящими «силачами» в программных науках. До новых «тренировок»!

Привет! Прежде, чем начать изучение , необходимо установить с php. Если вы пользуйтесь windows, то вам нужно будет установить , или LAMP, если у вас linux. Если веб сервер установлен, можно приступать к написанию первого php скрипта.

Но сначала, лирическое отступление, полезное для новичков: для того, чтобы php скрипт заработал, он должен лежать в определенной папке на веб-сервере. Вообще, при старте изучения php — первая ошибка новичков — открывать php файлы напрямую через . Я встречал много вопросов типа: «я пытаюсь открыть php файл просто щелкнув по нему два раза, и открываю его в браузере, а браузер выводит его как текст, а сам скрипт ничего не делает». Да. Потому что браузер не умеет запускать php скрипты. Браузер может только прочитать содержимое файла, но не выполнить его, исключение — javascript. Все остальные файлы, не javascript, браузер будет просто отображать. Что же делать, спросите вы? Как запустить скрипт? Для этого нам понадобится web-сервер с php, при помощи которого мы и будем запускать наши php скрипты. Но, как связаны веб-сервер, и браузер, спросите вы? И как через браузер запустить php скрипт? Смотрите, когда вы заходите на какой нибудь сайт, перед тем как загрузить страницу, браузер посылает запрос к , где находится сайт. Web-сервер запускает нужный php скрипт на основе полученных данных от браузера — адреса web страницы и , и отдает информацию, полученную в ходе выполнения php скрипта обратно браузеру. То есть, php скрипты браузер сам не выполняет, они выполняются на сервере, а браузер только отображает информацию, которая пришла от сервера.

На первый вопрос я ответил, теперь разберем второй: как через браузер запустить php скрипт? Частично я уже ответил на этот вопрос выше, все, что нам нужно, это ввести в браузере правильный URL адрес до скрипта, который находится на web-сервере. Для этого, как я уже говорил, локальный адрес на компьютере типа c:\program\script.php не подойдет, нужен именно URL адрес, в котором будет указано имя сервера ( , или ). Если у вас зарегистрирован хостинг, можно запускать php скрипты оттуда. Но, все же, я рекомендую установить локальный веб-сервер, поверьте, для он вам еще не раз пригодится.

Итак, вы установили веб-сервер, например Open Server, что дальше? Дальше необходимо создать папку, где будут расположены ваши php скрипты. В open server php скрипты выполняются в директориях, находящихся в папке domains. В каталоге domains после установки есть папка localhost. Вы можете создать свой первый php скрипт в папке путь_до_open_server\domains\localhost. Зайдите в эту папку и создайте php скрипт test.php. Откройте его в текстовом редакторе, или notepad++, и напишите там следующий код:

Этот php скрипт всего лишь будет выводить на экран строку «Мой первый php скрипт!» с помощью оператора вывода «echo». Оператор «echo» отправляет текстовую информацию в браузер для отображения. Теперь давайте запустим наш первый скрипт, для этого убедитесь, что веб-сервер запущен. Откройте браузер, и наберите в адресной строке http://localhost/test.php. Если вы увидите заветную строку «Мой первый php скрипт!», значит скрипт сработал. На сегодня все, спасибо за внимание.

На первые несколько пунктов попробую написать рекомендации в свободной форме.

Первое и самое главное - чтобы хорошо изучить программирование на РНР, надо хорошо изучить программирование. Это очень важная вещь. Большая часть людей, пишущих на РНР, не имеют ни малейшего представления о программировании. Даже о таких базовых вещах, как форматирование кода, отладка, профайлинг, обработка ошибок, файловые операции. Можно заметить, что я не говорю об ООП. Это совсем отдельная тема, ООП надо учить специально. К сожалению, из 100 человек, которые говорят, что знают ООП, 90 являются банальными копипастерами, выучившими синтаксис, но не понимающими смысла объектов. Но чтобы играть в шахматы, недостаточно знать, как ходят фигуры.

Ещё неплохо бы ответить себе на вопрос - для чего ты хочешь выучить программирование на РНР? Вопрос совсем не праздный. Многие люди смешивают в нем кучу разных понятий. К примеру, здесь уже упоминали CMS. и действительно, если речь идёт о зарабатывании денег, то кастомизация Джюмлы и написание к ней говномодулей в финансовом плане куда более выгодны, чем умение писать что-либо с нуля. Для фриланса, во всяком случае.

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

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

Вариантов масса! поэтому нужно определиться сначала, чего хочется.

Там выше говорили про JS+CSS - не надо слушать, это полная ерунда. Фронтенд программирование - совсем отдельная вещь, куда больше визуальная, чем абстрактная. И, слава богу, все больше работодателей начинают понимать это. Хотя опять же - если фрилансишь и на все руки мастер - то без этого никуда.

Но если работать хардкорным серверным программистом в команде, то об HTML/JS/CSS нужно иметь только общее представление (поскольку тексты на этих языках являются, вообще-то, практически единственным результатом работы РНР).

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

Теперь по остальным

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

Фреймворки - обязательно. Тут, правда, стоит проблема выбора, но принципиальной разницы между ними нет. Yii - неплохой выбор.

Гитхаб тебе не нужен, знать его не обязательно. Знать надо git.
А вот что является обязательным для веб-программиста - это умение пользоваться гуглем. Хотя бы на уровне умения скопипастить в поисковую форму сообщение об ошибке или написать вопрос «Что такое git» ;-)

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

Программы