k0stix · 01-Янв-11 00:00(14 лет 6 месяцев назад, ред. 31-Янв-11 14:21)
PHP - заметки на полях. Полезные приемы в работе с PHPГод выпуска: 2010 - 2011 Производитель: jolly-wind Сайт производителя: http://jolly-wind.ru Автор: k0stix aka jolly-wind (он же Константин) Продолжительность: 9:10:09 Тип раздаваемого материала: Видеоурок Язык: Русский Ссылка на предыдущий курс: PHP: объектно-ориентированный подход Описание: Этот курс не является продолжением курса PHP ООП, он абсолютно обособлен. В нем рассматриваются некоторые техники, приемы и аспекты применения языка PHP, которые могут быть сподручными для начинающих веб-программистов или просто любителей поковырять языки программирования не только вширь, но и вглубь. Для просмотра курса необходимы базовые знания языка PHP (в среднем базы, данной в курсах Попова по PHP, будет достаточно).
Я пытался сделать все заметки независимыми друг от друга, но все же случаются пересечения тематик, это будет помечено отдельно в содержании. Там, где не отмечено пересечение тематик, уроки можно смотреть в произвольном порядке, где помечено, скорее всего техники демонстрируются с применением приемов из указанных заметок. Но на всякий случай не помешает просматривать в той последовательности, как указано в содержании, мало ли.
Некоторый материал не столь уж часто встречается даже в книгах, несмотря на то, что часто требуется в практике реальной разработки.
Также рассматриваются некоторые нововведения в php5, которые, по непонятным мне причинам, тоже не всегда входят в некоторые самоучители по php и видеокурсы.
Не смотря на то, что я пытался записывать этот курс полностью самодостаточным, все же он записан в рамках двух других курсов по php, как вспомогательный, поэтому, возможно изредка я буду ссылаться на материалы, которых нет в других заметках. То, что курс является "вспомогательным", думаю, не умаляет его полезности, но об этом судить вам. Техники описываются преимущественно в теоретическом разрезе. Некоторые примеры приводятся в отрыве от реального применения с дырами в безопасности. Затыканию этих дыр будет посвещена отдельная серия заметок (см. содержание курса). Заметки будут выходить хаотично, всем заинтересованным рекомендую следить за обновлением темы. Каждая новая заметка будет сопровождаться описанием (см. спойлер Поурочное описание и скриншоты) и записью в Истории изменений / добавлений
Поурочное описание и скриншоты:
Заметки, где на спойлерах не указана дата добавления, были залиты вместе 01.01.2011, остальные - в соответствующие даты на спойлере
В обучающей литературе редко уделяют внимание среде разработки (IDE). Некоторые "зубры" призывают пользоваться notepad-ом, что лично я считаю прогрессирующим маразмом, есть большая разница, между умением писать код в экстремально неудобных условиях и необходимостью это делать.
В данной заметке рассмотрим несколько удобных фич, предоставляемых средой разработки NetBeans. Это не попытка приобщить вас к какому-то определенному редактору кода, просто пример того, что можно ожидать и требовать от редактора. Разумеется, это только основы, NetBeans - очень мощная среда и имеет гораздо больше средств. Будут рассмотрены кодовые шаблоны, комментарии FIXME и подобные и групповое переименование.
Выбор пал именно на NetBeans по причине его бесплатности и личных предпочтений автора. Также очень неплохим редактором является eclipse-pdt и имеет определенное кол-во фанатов Aptana. Главный минус у всех троих один - приличная нагрузка на железо, в особенности при работе над крупными проектами (Aptana в этом вопросе - чемпион, на моей не столь уж дохлой машине она валит все).
Данная заметка посвещена установке и настройке сборки xampp на замену Denwer-у. Я записал эту заметку, потому что сам постепенно пришел к тому, что денвер меня перестал устраивать. Это, без сомнения, отличныая сборка, но вечные обрезанности и время от времени всплывающие баги иногда приходятся не к месту.
xampp в свою очередь представляет куда более полноценную сборку, с приличным количеством встроенных модулей. Единственное неудобство - это нельзя, как в денвере, создать в папке сервера папку - и чтоб после перезапуска она стала сразу очередным доменом для работы. В заметке показывается, как можно это настроить самому, быстро и легко.
Для удобства работы рекомендую также скачать и установить любой файловый менеджер, где можно занести каталоги в избранное. Из бесплатных это могут быть:
Все они полностью бесплатны (некоторые даже опенсорцны) и, если память не изменяет, у них имеется избранное для каталогов.
Я буду показывать на примере коммерческой версии Total Commander и это не в коей мере не призыв к вам использовать этот же программный продукт.
В данной заметке рассмотрены базовые понятия сессий и куков, примеры применения и т.п.
Скриншоты (fastpic.ru):
Скриншоты (ImageBam.com):
Скриншоты (radikal.ru):
mn-002-sessions-without-cookies [Продолжительность: 14:50] (необходимо понимание работы кук и сессий, см. заметку mn-001-cookies-and-sessions)
Обычно для работы с сессиями необходимы включенные на стороне пользователя куки. У некоторых неадекватов они могут быть выключены. В данной заметке поясняется как подобную ситуацию можно обойти. Разумеется, в целях безопасности это не применимо для хранения сессий с секретными данными.
Скриншоты (fastpic.ru):
Скриншоты (ImageBam.com):
Скриншоты (radikal.ru):
mn-003-redirects [Продолжительность: 16:04]
Очень простая техника и скорее всего не будет ни для кого новостью, но все же. 2 основных вида редиректов: с задержкой и без.
Скриншоты (fastpic.ru):
Скриншоты (ImageBam.com):
Скриншоты (radikal.ru):
mn-004-processing-forms [Продолжительность: 17:38] (необходимо понимание сессий и редиректов mn-001-php-session-cookies и mn-004-redirects)
Форма - основной вид общения посетителей сайта с самим сайтом (если не учитывать адресную строку). У начинающих программистов часто возникает проблема повторной отправки данных после обновления страницы. В данной заметке мы решим эту проблему и позаботимся о выводе данных на той же странице, с которой отправили.
Скриншоты (fastpic.ru):
Скриншоты (ImageBam.com):
Скриншоты (radikal.ru):
mn-005-text-files-&-text-editor [Продолжительность: 1:41:50] (необходимо понимание редиректов, сессий и работы с формами см. mn-001-cookies-and-sessions, mn-003-redirects, mn-004-processing-forms)
В данной заметке приведен пример работы с текстовыми файлами, объяснение перетекает в реализацию операций CRUD (create, read, update, delete), только вместо таблиц БД используются текстовые файлы.
Обычно мы рассматриваем php как язык для написания сайтов, оригинально он для этого и разрабатывался, пишется сайт заливается на сервер - все счастливы. Но также его можно применять и для написания скриптов, автоматизирующих некоторые процессы на пользовательском компьютере, он может послужить альтернативой виндовым bat-файлам или никсовому башу и многим другим скриптовым языкам.
PS: собственно, сейчас на PHP можно писать даже приложения с графическим интерфейсом и "компилировать" в исполняемые экзешники. Но это отдельный вопрос и, по моему мнению, использование PHP для этих целий нецелессобразно.
Скриншоты (fastpic.ru):
Скриншоты (ImageBam.com):
Скриншоты (radikal.ru):
mn-007-include_path [Продолжительность: 23:03]
Порой бывает удобно создать директорию, где мы будем держать наши библиотеки. Но потом придется каждый раз подключая библиотеки при помощи include или require прописывать полный путь к этой директории. Не то, чтобы это была сильная головная боль, но иногда может оказаться сподручным воспользоваться опытом операционных систем и прописать часто используемые пути в path. Но применять надо с осторожностью (если в двух разных директорий будут файлы с одинаковыми названиями, то подключается тот, который стоит первым в путях)
Скриншоты (fastpic.ru):
Скриншоты (ImageBam.com):
Скриншоты (radikal.ru):
mn-008-autoload [Продолжительность: 08:01]
В данном уроке будет продемонстрированно как можно подключить файл с классом без помощи include или require инструкций, тем самым экономя себе время и несколько строчек кода
php.ini-файл - файл настроек интерпретатора PHP. Часто бывает полезно поменять какие-то его настройки на лету, или просто убедиться, что интерпретатор настроен так, как нам надо. В данной заметке мы узнаем как это делается, какие настройки можно менять и какие нельзя и как это может быть нам полезно.
Скриншоты (fastpic.ru):
Скриншоты (ImageBam.com):
Скриншоты (radikal.ru):
mn-010-filter_input [Продолжительность: 22:26 + 13:35 = 36:01] (необходимо понимание сессий и редиректов mn-001-php-session-cookies и mn-004-redirects)
Валидация входных и внутренних данных - важный вопрос безопасности и стабильности работы сайта. В PHP5.2 для этой цели была введена очень удобная ф-ция, и на момент написания этих строк до сих пор не вошла в русские переводы документации PHP (за исключением перевода на офсайте PHP, который почему-то уже убрали). В данном уроке мы провентилируем вопрос использования этой фичи.
Вам когда-нибудь хотелось задекларировать переменную в css-файле? Или добавить немного динамики в статичные css-файлы, например, менять цвет background фона в зависимости от времени суток? Обычно подобный вопрос решается созданием отдельного css-класса и далее решение переходит в вид, а для использования переменных используются JS-библиотеки. Но JS может быть отключен на стороне пользователя, тогда дизайн поедет в неизвестном направлении, а если писать по классу для каждого времени суток, то это немало строчек займет. В любом случае в данной заметке предлагается более простое решение при помощи PHP. Данная техника позволяет сделать из css-файла полноценно обрабатываемый php-скрипт, можно будет как использовать переменные, так и создавать целые классы в стилевых таблицах (последнее - полный маразм, конечно же, но возможность имеется).
NB: лично я никогда не применяю эту технику в том виде, как описано в заметке, меня вообще не колышит, что делает в css верстальщик и какие у него там возникают проблемы. Но при определенной структуре сайта этот прием в сочетании с некоторыми колбэками может иметь и другие применения. А если вы одновременно являетесь и программистом и верстальщиком, то тем более вам может понравиться подобный прием.
Пользователь - наш лучший друг. Для него мы должны добавлять как можно больше фич на наш сайт, чтобы он чувствовал себя наиболее комфортно. Пользователь - наш злейший враг, ибо по глупости, злому умыслу или смеха ради может нашему сайту навредить. Эта серия заметок будет посвящена безопасности сайта, защите от злостных хацкеров.
Полагаю, все слышали о mysql-инъекциях. Полагаю, что вы думаете, что знаете, как от них защититься. Но среди начинающих я несколько раз встречал защиту от одного типа mysql-инъекций и пробои против второго. Если вы не уверены на 100%, что знаете, чем отличается инъекция для строковых параметров от внедрения в целочисленные, то рекомендую не брезговать этой заметкой.
И двум пока что безымянным героям, которые любезно согласились протестировать мой последний курс.
Отдельная благодарность ssergo, который своей мимолетной фразой подстрекнул меня записать заметку по написанию cli-приложений. И rusiamen2 за постер для курса. Доп. инфо: уроки поставляются as is, за пагубное влияние на вашу психику аффтар и студия jolly-wind productions ответственности не несут Аффтар не возражает против распространения данных видеоуроков и прилагаемых листингов (а также картинок, каталоговой структуры, цитат и т.д.) на другие трекеры, варизники и т.п., перекодирования видео и аудио и прочих измывательств над данным материалом. Каждый, кто скачал данный материал волен распоряжаться им как угодно, за исключением коммерческого распространения и нанесения физического вреда азиатским речным бобрам.Группа aka tRuAVC и я поздравляем всех с наступившим Новым Кодом!!!
Поменьше вам багов и ошибок в новом коду и побольше креатива!
И по жизни тоже счастья и успехов!Исходник: захват с экрана Качество: соответствующее Файлы примеров: присутствуют Формат видео: MKV Видео: MPEG4 Video (H264) 1024x576 ~80kb/s 15.00fps Аудио: AAC 48000Hz mono ~40kb/s
Зеракло постера курса (на случай безвременной кончины на radikal.ru, imagebam.com):
Внимание! Если у вас что-то не проигрывается, не гудит, не свистит: большая просьба ознакомиться с содержимым составленного для вашего удобства FAQ. Вопросы, ответы на которые есть в FAQ, будут игнорироваться.
Спасибы и пожалуйсты - это прекрасные слова, но если вам реально хочется меня отблагодарить, оставайтесь на раздаче как можно дольше, и тогда наша благодарность будет обоюднойОбсуждение релизов в AVC формате / Свежие AVC рипы
k0stix Спасибо за подарок! Так ну что - отрезвляемся, закрываем страницу с вашей социалкой, качаем уроки Костикса и двигаемся в правильном направлении.
firafira uberDD
С Новым, мужики! Не, сохнуть еще рано (если не сказать преступно) Лучше числа 3-4-го потихоньку начинать. Спешить некуда, год только начался
А я вот вообще не пью, так что могу обучаться со спокойной душой =)
Забыл упомянуть в описании маленькую деталь. Техники описываются преимущественно в теоретическом разрезе. Примеры приводятся порой с довольно серьезными дырами в безопасности (на случай, если кто-то сразу же понесется применять, не подумав :)). Напримре, в заметке php-in-css, кто найдет, молоток
Возможно попозже сделаю заметку по безопасности, хоть тема и обширная, но в сути своей довольно простая. Усе, новогодняя ночью подходит к финалу, когда проснемся, будет, посленовогодний день, тазик, аспиринчик. Всем приятного бодуна, господа Кроме тех, кто не пьет
Спасибо Константин. Не мог оторваться от твоего курса по OOP. Сидел 31 декабря, чуть Новый год не пропустил. Благо, что родные уехали праздновать. Масса вопросов и непоняток, но очень интересно и захватывает. С интересом огромным интересом посмотрю твое новое шедевральное творение.
Костя! Большущее спасибо за курсы (ооп, кейк, мини, и другие)! Твои идеи и мысли заложенные в курсах, а также полученные в форуме и в личной переписке помогли мне по настоящему раскрыть мощь и красоту великого и могучего пыхпыха! Сподвигнули на расширение кругозора в области фреймворков(вне зависимости от языка на котором они реализованы), а также .... в общем, громадное тебе СПАСИБО!
Ёмаё,вот это подарочек на новый год,надо брать :).Огромное спасибо тебе за труды.Знакомство с PHP начал именно с твоего курса по ООП - он просто супер.Рекомендую всем даже не посмотрев,уверен что курс стоящий
народ может можете подсказать где можно найтй какуйу статейку на; как сделать поддержку по межднародным языкам из серий www.mysite.com/lv/article1 www.mysite.com/ru/article1 и второе как сделать корзину типа e-shopa... может сам можешь помочь на чтото по этой теме написать?
А как узнать, могут ли мои действия в долгосрочной перспективе нанести вред азиатским бобрам? Я требую, чтобы автор написал "и нанесения ПРЕДНАМЕРЕННОГО физического вреда азиатским речным бобрам."
С новым годом, друзья!
Константин, благодарю за старания! И ещё спасибо кстати за пережатую версию Ajax туториалов Ещё хотелось бы узнать каково твоё мнение об IDE Eclipse (а всё я уже в содержании заметил несколько слов о ней)
Всем хорошим и адекватным людям счастья и здоровья в новом году!
Xvid4PSP, когда последний раз его пробовал, декодировал видео через DirectShowSource, который не айс в принципе. Вроде пилил там что-то один товарищ mihanja80 по этому поводу, но мне было проще свою консольную утилитку накатать со встроенным презетом. См. mn-006-php-cli/mn-006-php-cli-4-using.mkv, там как раз сэмпл. Спасибо всем за поздравления, в особенности в личку, отвечу всем позже. Надо выпить ванну, принять чашечку кофа и гнать на очередную пирушку, итак начало проспал =)
Изучаю пхп по книгам... но если что-то непонятно - смотрю, что говорит Костикс в своих тварениях В целом помогает... но многочисленные "лирические" отступления порой напрягают... вот эти вот 5-ти минутные обьяснения о том, что произойдёт после того, как автар нажмёт на клавишу стоп просто вымараживают... просто жми стоп и всё... кашли.. клюпанье чаем тоже бесит... ещё напрягает, когда автар встревает на каком-то моменте и пытается решить проблему на ходу, не останавливая запись... это ваще что-то... когда начинаешь изучать что-либо, пространные речи и лирические отступления сбивают столку просто... забываешь о сути... призываю автара более серьёзно отнестись к видеокасту... в остальном всё круто :))) желаю удачи в новом году! ЗЫ: Костикс - маньяк :)) 9к сообщений... жееесть
Как лучше выучить английский язык именно для просмотра видеокурсов и чтения книг???
Вы слыхали про йогу для похудения (похудания?) или йогу для молодости? То, что сейчас в фитнесах называют йогой - это шейпинг в медленном темпе. Есть комплекс йога и он работает комплексно, нет йоги для чего-то С английским точно также, нет английского для книжек по программированию. Можно выучить ключевые термины и пробовать разобраться в документациях, но все равно многое при этом будет проскакивать мимо. Лучше начинать с начала и переводить со словарем. Курс от -> Pimsleur <- мне кажется наиболее простым и эффективным. Всем пожалуйста.
'del'
Только сейчас? Странно Багов там, полагаю, эксаватором греби. Я движок писал года 2 назад, только вообще начинал веб-кодить, переделать никак руки не доходят...
Пойду закрою его нафиг пожалуй, оставлю только форум, пора уже браться за глобальную реконструкцию и приведение в божеский вид, да и дизин мне обещали приличный помочь набросать.
'del'
Я в целом говорю только сейчас Сайт-то уже давно висит, много народу там прогуливается.
Ссыль можно было на место повидней бросить, а то не все увидели ПС: а вообще символично ошибка найдена, я как раз собирался сегодня-завтра записывать заметку по мускул-инъекциям
'del'
Багов там, полагаю, эксаватором греби. Я движок писал года 2 назад, только вообще начинал веб-кодить, переделать никак руки не доходят...
Пойду закрою его нафиг пожалуй, оставлю только форум, пора уже браться за глобальную реконструкцию и приведение в божеский вид, да и дизин мне обещали приличный помочь набросать.
Не одобряю
k0stix писал(а):
Пойду закрою его нафиг пожалуй, оставлю только форум, пора уже браться за глобальную реконструкцию и приведение в божеский вид, да и дизин мне обещали приличный помочь набросать.
Торрент обновлен, добавлена заметка по include-уязвимостям.
'del' писал(а):
убрать баги и поставить снова.
Там не баги убирать надо, а весь двиг с нуля катать.. Найти б еще пару дней, чтоб этим заняться и гудящую голову продуть =)
В любом случае спасибо за намек, без этого б я и не начал чесаться