You are on page 1of 6

Различие версий PHP (особенности версии 5.

3)
3.0 - расширение ядра доп. модулями
4.0 - новый движок zend engine,улучшилось производительность, поддержка сессий, буферизация вывода, более
безопасная обработка вводимой юзером данных
5.0 - обновилось zend engine 2. Увеличился производительность, язык разметки xml, переработана ооп.
5.3.x помечены как более не используемые (deprecated) следующие функции:
call_user_method() - используйте вместо нее функцию call_user_func()
call_user_method_array() - используйте вместо нее функцию call_user_func_array()
define_syslog_variables()
dl()
Все, что связанно с регулярными выражениями с использованием функций ereg() разработчики
посчитали устаревшим функционалом, и к тому же данные функции работают очень медленно, поэтому вместо
них предлагается использовать аналогичные фукнции preg(). Соответственно следующие функции более не
используются:
o ereg() - впредь используйте preg_match()
o ereg_replace() - впредь используйте preg_replace()
o eregi() - впредь используйте preg_match() с модификатором 'i'
o eregi_replace() - впредь используйте preg_replace() с модификатором 'i'
o split() - впредь используйте preg_split()
o spliti() - впредь используйте preg_split() с модификатором 'i'
* set_magic_quotes_runtime() и ее синоним magic_quotes_runtime()
* session_register() - используйте суперглобальный массив $_SESSION
* session_unregister() - используйте суперглобальный массив $_SESSION
* session_is_registered() - используйте суперглобальный массив $_SESSION
* set_socket_blocking() - впредь используйте stream_set_blocking()
* sql_regcase()
* mysql_db_query() - впредь используйте mysql_select_db() и mysql_query()
* mysql_escape_string() - впредь используйте mysql_real_escape_string()
* Так же больше не используются следующие возможности:
o Передача в переменную параметра по ссылке в new
o Вызов call-time (функцииб методы классов) по ссылке
o Использование {} для указания смещения внутри строки. Обращайтесь к строке как к массиву,
используя []

Разобраться с phpDoc (http://en.wikipedia.org/wiki/PHPDoc)


PHPDoc — это адаптация популярного генератора документации Javadoc для использования с PHP. Имеет
формальный стандарт для комментирования PHP кода.
PHPDoc поддерживает как объектно-ориентированный, так и процедурный код в документах.
Достоинства :
1)пишется как простой комментарий, который обычно игнорируется компилятором.
2)позволяет PHPDocumentor у создавать и отформатировать и легкий для понимания документации по
API.
3)позволяет некоторым IDES таких как Zend Studio, NetBeans и Aptana Studio интерпретировать
переменную типа и другие неясности в слабо типизированных языках.

phpDocumentor - это система документирования исходных текстов на PHP.


Имеет встроенную поддержку генерации документации в формате HTML,man, RTF и XML. Также вывод может
быть легко сконвертирован в CHM, PostScript, PDF
Вот список тегов, поддерживаемых PHPDocumentor:
* <b> - Подчеркнуть / полужирным шрифтом
* <code> - Используйте это для окружающих PHP-код, некоторые преобразователей позволит выделить го
* <br> - Жесткий разрыва строки, могут быть проигнорированы некоторые преобразователи
* <i> - Курсивом / пометить как важные
* <kbd> - Обозначить ввод с клавиатуры / экрана
* <li> - Элемент списка
* <ol> - Упорядоченный список
* <p> - Если их использовать для приложить все пункты, в противном случае она будет рассматриваться текста
* <pre> - Сохранить строк и интервал, а также взять на себя все теги текста (например, XML's CDATA)
* <samp> - Обозначить образца или примера (не PHP)
* <ul> - Неупорядоченный список
* <var> - Обозначить имя переменной

Разобраться с XSS и PHP Including


PHP-инъекция — один из способов взлома веб-сайтов, работающих на PHP, заключающийся в выполнении
постороннего кода на серверной стороне.
Потенциально опасными функциями являются:
* eval(),
* preg_replace() (с модификатором «e»),
* require_once(), require(),
* include_once(), include(),
* create_function()
Способ защиты:
1) basename() - получить имя файла без директорий и расширения
2) проверка значения названия модуля и функции на наличие.

XSS — тип уязвимости интерактивных информационных систем в вебе. XSS возникает, когда в генерируемые
сервером страницы по какой-то причине
попадают пользовательские скрипты.
Условно XSS можно разделить на активные и пассивные:
Пассивные XSS подразумевают, что скрипт не хранится на сервере уязвимого сайта, либо он не может
автоматически выполниться в браузере жертвы.
Например: провоцируем пользователя запустить URL http://example.com/search.php?q=porn%3Cscript
%3EDoSomething();%3C%2Fscript%3E.
Будет исполнен скрипт <script>DoSomething();</script> — если, конечно, сервер не принял никаких мер по его
экранированию.

При активных XSS вредоносный скрипт хранится на сервере, и срабатывает в браузере жертвы при открытии
какой-либо страницы заражённого сайта.
Их также называют вторым типом XSS.
Активному скриптингу подвержены сайты так называемого «веб 2.0» — форумы, блоги, гостевые книги и
социальные сети.
Скриптинг через DOM
Отсутствие фильтрации HTML-тегов в сообщениях пользователей
если, например в комментариях, разрешается использовать нтмл теги и они не фильтруются
Отсутствие фильтрации атрибутов и их значений разрешённых тегов
если не фильтруются атрибуты для тегов. Например используем не url адрес для <img crc=''/> а
"url onclick='' onmouseout=''" и т.д.

Способ защиты:
1) использовать html_entities() или html_special_chars

Различие версий MySQL (особенности версии 5)


MySQL 4.0
* межплатформенная совместимость;
* независимые типы таблиц (MyISAM для быстрого чтения, InnoDB для транзакций и ссылочной целостности);
* транзакции;
* поддержка SSL;
* кэширование запросов;
* репликация: один головной сервер на одного подчинённого, много подчинённых на одного головного;
* полнотекстовая индексация и поиск с использованием типа таблиц MyISAM;
* внедрённая библиотека базы данных;
* поддержка Юникода (UTF-8);
* встроенный сервер, позволяющий включать MySQL в автономные приложения.

MySQL 4.1 нововведения:


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

MySQL 5.0 В этой версии значительно расширена функциональность, которая ставит MySQL в один ряд с
коммерческими СУБД.
* хранимые процедуры и функции;
* обработчики ошибок;
* курсоры;
* триггеры;
* представления;
* информационная схема (так называемый системный словарь, содержащий метаданные).

MySQL 5.1
* Сегментирование — возможность разбить одну большую таблицу на несколько частей.
* Изменено поведение ряда операторов, для обеспечения большей совместимости со стандартом SQL2003.
* Встроенный планировщик периодически запускаемых работ. По синтаксису добавление задачи похоже на
добавление триггера к таблице, по идеологии — на crontab.
* Дополнительный набор функций для обработки XML, реализация поддержки XPath.
* Новые средства диагностики проблем и утилиты для анализа производительности. Расширены возможности
по управлению содержимым лог-файлов.
* Для упрощения операции обновления подготовлена утилита mysql_upgrade, которая выполнит проверку всех
существующих таблиц на предмет совместимости с новой версией, и при необходимости выполнит надлежащие
корректировки.
* MySQL Cluster отныне выпущен как отдельный продукт, базирующийся на MySQL 5.1 и хранилище
NDBCLUSTER.
* Значительные изменения в работе MySQL Cluster, такие, как, например, возможность хранения табличных
анных на диске.
* Возврат к использованию встроенной библиотеки libmysqld, отсутствовавшей в MySQL 5.0.
* API для плагинов, которое позволяет загружать сторонние модули, расширяющие функциональность
(например, полнотекстовый поиск), без перезапуска сервера.
* Реализация парсера полнотекстового поиска в виде plug-in.
* Новый тип таблиц Maria (устойчивый к сбоям клон MyISAM).

Разобраться с SQL Injection


a)нужно использовать одинарные кавычки в выборках
b)если мы знаем, что по get, post должны отправляться целочисленные данные, то применять функцию
intval(т.е попытаться перевести в целое) или (int)
c)нужно заслешивать строковые данные, которые не используются в like и regexp
d)можно также выявить длину передаваемых данных, если мы точно знаем что длина не превышает 5
символов, то сделать необходимую проверку

Различие между типами баз данных MyISAM и InnoDB


MyISAM - быстро
InnoDB - надежно
Формат данных InnoDB обеспечивает надежное хранение данных за счет транзакционности и
блокирование данных на уровне СТРОКИ, т.е таблицы не блокируются целиком. Из -за использование внешних
ключей можно настраивать в БД UN_UPDATE и ON_DELETE
-no action
-retrict
-cascade
-set null
минусы - увеличение размера таблиц, обычно более медленная запись, более медленная обработка
BLOB'ов, проблемы с работой с очень большим количеством таблиц,
медленная загрузка данных и ALTER TABLE,низкая производительность COUNT(*) без WHERE

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

Разобраться с транзакциями, триггерами, хранимыми процедурами


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

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

Триггер — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно,
а исполнение которой обусловлено наступлением определенного события (действием) — по сути добавлением
INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в
определенном столбце заданной таблицы реляционной базы данных. Момент запуска триггера определяется с
помощью ключевых слов BEFORE или AFTER (после события).

Разобраться с моделью MVC


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

Разобраться с SVN
Subversion — свободная централизованная система управления версиями, Данные хранятся в едином
хранилище.
Хранилище может располагаться на локальном диске или на сетевом сервере.
Клиенты копируют файлы из хранилища, создавая локальные рабочие копии, затем вносят изменения в рабочие
копии и фиксируют эти изменения в хранилище. Несколько клиентов могут одновременно обращаться к
хранилищу.

Для совместной работы над файлами в Subversion преимущественно используется модель Копирование —
Изменение — Слияние.
Кроме того, для файлов, не допускающих слияние (различные бинарные форматы файлов), можно использовать
модель Блокирование — Изменение — Разблокирование.
В svn используются транзакции. Т.е при конфликтных ситуациях(когда один файл меняют несколько клиенты и
при этом происходит конфликты) транзакции не выполняются.

Возможности

• Отслеживается история файлов, директорий и метаданных файлов и директорий, в


том числе при переименовании и копировании.
• Атомарная фиксация изменений.
• Возможность установки автономного сервера Subversion с доступом по собственному
протоколу.
• «Дешёвые» операции создания ветвей и меток (требуется небольшое фиксированное
количество временных и дисковых ресурсов).
• Многоуровневая архитектура библиотек, изначально рассчитанная на клиент-
серверную модель.
• Клиент-серверный протокол разработан для пересылки по сети только разницы между
объектами, когда это возможно.
• Затраты ресурсов пропорциональны размеру изменений, а не размеру данных, которые
затронуты изменениями.
• Два возможных внутренних формата хранилища (англ. repository): база данных или
набор обычных файлов.
• Версионированные символьные ссылки (только в рабочих копиях под UNIX-
системами).
• Одинаково эффективная работа и с текстовыми, и с двоичными файлами.
• Вывод клиента командной строки одинаково удобен и для чтения, и для разбора
программами.
• Интернационализированные сообщения программы (используются настройки
локали).
• Библиотеки для языков PHP, Python, Perl, Java позволяют встроить функциональность
клиента Subversion в программы, написанные на этих языках.
• Возможность зеркалирования хранилища.

Операции над файловой системой

• Добавление (A). Добавление объекта в файловую систему. Добавленный объект не имеет истории
ревизий.

• Модификация (M). Модификация объекта, например, изменение содержимого файла или изменение
свойств файла или директории.

• Удаление (D). Удаление файла из головной и последующих ревизий. При этом файл остаётся в
предыдущих ревизиях.

• Добавление с историей (A+). Представляет собой копирование объекта внутри файловой системы
хранилища, то есть объект имя_источника@ревизия_источника копируется в имя_копии@HEAD.
Скопированный объект наследует от источника историю ревизий до момента копирования
(наследование истории показано на рисунке пунктирными связями).

• Замена (R+). Имеет место в случае, когда в одной ревизии произведено и удаление объекта (D), и
добавление с историей (A+) объекта с тем же самым именем. Хотя имя при операции замены остаётся
неизменным, Subversion рассматривает объект до и после замены как два различных объекта с
различными историями ревизий (история старого заканчивается в точке замены, история нового
наследуется от источника копирования и продолжается далее).

Разобраться в протоколе http


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

Всё программное обеспечение для работы с протоколом HTTP разделяется на три больших категории:
* Серверы как основные поставщики услуг хранения и обработки информации (обработка запросов).
* Клиенты — конечные потребители услуг сервера (отправка запроса).
* Прокси для выполнения транспортных служб.

пример http запроса:


GET /wiki/страница HTTP/1.1 (метод урл версия) — строка состояния
Host: ru.wikipedia.org - заголовки
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5)
Gecko/2008050509 Firefox/3.0b5
Accept: text/html
пример ответа
HTTP/1.0 200 OK (версия код_ответа необъязательное_описание_кода)
Date: Wed, 11 Feb 2009 11:20:59 GMT - заголовки
Server: Apache
Content-Type: text/html; charset=utf-8
Content-Length: 1234
- объязательно пустая строка
- тело

Базовые операции работы в nix системах (консоль)


d /home перейти в домашний каталог
cd ../.. перейти на 2 уровня выше
cd перейти в домашний каталог
cd – перейти в предыдущий каталог
pwd показать путь к текущей директории
ls показать файлы и директории
ls -F показать файлы и директории
ls -l показать подробности о файлах и директориях
ls -a показать скрытые файлы
mkdir dir1 создать директорию с именем dir1
mkdir dir1 dir2 создать директории dir1 и dir2
mkdir -p /tmp/dir1/dir2 создать директорию в указанном месте
rm -f file1 vудалить файл с именем file1
rmdir dir1 удалить директорию с именем dir1
rm -rf dir1 удалит директорию dir1 и всё её содержимое
rm -rf dir1 dir2 удалить директории dir1 и dir2 со всем содержимым
mv dir1 new_dir переименовать / переместить директорию
cp [что копировать] [куда копировать]
ln -s cоздать символическую ссылку. [На что сделать ссылку] [имя ссылки]

Изменение прав доступа


cmod
600 Файл недоступен
644 Доступ всем для чтения (например, документы HTML)
666 Файл может прочитан и модифицирован (для файлов HTML, изменяемых посредством скриптов)
755 Файл может быть прочитан и запущен кем угодно (например, скрипты)
777 Доступен для записи и запуска кому угодно (не рекомендуется)

Перезагрузка и выключение
shutdown -h now выключить систему
init 0 выключить систему
shutdown -r now перезагрузить систему
reboot перезагрузить систему
logout завершить сессию

Мониторинг за системными процессами


top Отобразит постоянно обновляющийся список работающих процессов.
ps aux Отобразит список работающих в системе процессов и из владельцев.
pstree Отобразит иерархический список запущенных процессов.
free Отобразит информацию об использовании памяти.
free -m Отобразит информацию об использовании памяти в мегабайтах.
kill номер_процесса. Убить процесс