Программирование на PHP


           

Первый сайт на PHP

Когда-то давно, еще в прошлом веке, для того чтобы сделать сайт "на мировом уровне", достаточно было просто уметь делать web-страницы на HTML и обладать художественным вкусом. Спустя некоторое время требования усложнились: использование JavaScript и Dynamic HTML стало рутинным и дизайн сайта, не имеющего подобных "украшений", считался устаревшим. Ещё по прошествии небольшого времени правилом "хорошего тона" для корпоративного сайта стало применение сложных программ на Perl или C++, а создавать такие сайты стало по силам, пожалуй, лишь коллективам дизайнерских студий. Однако простые web-дизайнеры не желали мириться с такой ситуацией, и ответом на их пожелания стало появление РНР - языка программирования, обладающего возможностями сложных скриптовых языков, но в то же время удивительно простого и легкого в изучении и применении. РНР расшифровывается как "PHP: Hypertext Preprocessor" (в названии используется такой прием, как рекурсия: наличествующая в расшифровке аббревиатура "РНР" вновь может быть расшифрована как "РНР: Hypertext Preprocessor" - и так до бесконечности). Этот язык благодаря своей простоте и мощности быстро завоевал огромную популярность среди web-мастеров, и количество сайтов, использующих РНР, увеличивается с каждым днем. Немаловажно и то, что он бесплатен для использования всеми желающими.
Введение

Немного о Web-программировании
Web-программирование - разработка любых программных продуктов, предназначенных для работы на сайтах World Wide Web. Строго говоря, даже разработка web-страниц на чистом HTML является web-программированием, ведь при просмотре страницы браузер фактически исполняет код HTML, форматируя текст согласно инструкциям этого языка. В настоящее время под web-программированием понимают создание CGI-приложений и использование на web-странице технологий JavaScript и VBScript для достижений сложных эффектов.
Web-сервер - программа, запущенная на узле сети Интернет и выдающая посетителям этого узла web-страницы по запросам. Также web-сервером часто называется узел, на котором эта программа запущена, или даже компьютер, являющийся таким узлом.

Несколько терминов
Немного о Web-программировании

История. Места. Источники.
В отличие от многих других языков программирования, РНР был создан не какой-либо корпорацией или гением-программистом, а обычным пользователем, Расмусом Лердорфом, в далеком 1994 году. Цель разработки языка была проста - сделать домашнюю страничку Расмуса более интерактивной, а значит, и более привлекательной для посетителей. Расмус разработал базовый синтаксис и написал первый интерпретатор своего языка, получившего название Personal Home Page Tools - т. е. РНР. Этот интерпретатор мог обрабатывать лишь несколько основных команд, однако начало было положено.

РНР: История. Места. Источники.
C чего начать?
Места
РНР в России

Основы
Команды РНР обязательно разделяются символом точки с запятой - ";" (символ конца абзаца или конца строки не учитывается никак), после последней в программе команды его можно не ставить. Также символ ";'' не ставится после условных операторов (if, switch) и операторов цикла (for, while и других).

РНР: основы
Работа с формами

Выборочная загрузка

В этой главе приведен пример простого PHP-сценария, используемого на реально существующем сайте. Сайт посвящен творчеству певца-барда Александра Харчикова. На сайте должны были быть представлены вышедшие альбомы певца в количестве 15 шт. и записи песен каждого альбома в МРЗ-формате. При создании сайта возникла необходимость обеспечить удобную навигацию. Общепринятый способ - ссылки на страницы с описанием каждого из альбомов и песнями из него - имел тот недостаток, что посетитель, желающий просмотреть не один альбом, а сразу несколько, был бы вынужден постоянно переходить со страницы на страницу, делая лишние усилия.

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

РНР: простейший интернет-магазин
Задачи
Проект
Витрина
Отправка заказа
Калькулятор
Добавление товара
Перспективы

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

Закачка файлов
Обычно в создании сайта ведущая роль принадлежит его web-мастеру. Посетителям остается лишь возможность просматривать сайт (для чего он, собственно, и делается) и присылать его администратору свои пожелания по улучшению. Ну и иногда - свои материалы для размещения на сайте. Однако нередко возникает желание предоставить посетителям больше возможностей - скажем, позволить им помещать свои файлы на сайт. Скажем, вы являетесь администратором сайта "про компьютеры и Интернет" и назначили одного из своих товарищей ведущим того или иного раздела. Так как параметры доступа к аккаунту сайта (логин и пароль) у вас одни (почти все провайдеры хостинга выделяют на это лишь одну пару параметров), то возникает необходимость выбора: либо вы делитесь с товарищем логином и паролем на доступ к аккаунту и тем самым резко снижаете его безопасность (мало ли куда эти данные от товарища могут попасть...), либо берете на себя труд самостоятельно закачивать присылаемые товарищем файлы на сервер.

РНР: закачка файлов
Подготовка
Общие сведения
Форма для пользователя

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

РНР: авторизация доступа
Авторизация средствами web-cepbepa
Авторизация с помощью заголовка
Авторизация с помощью cookies
Авторизация с помощью сессий
Сессии
Сценарий авторизации
Пример сценария

Гостевая книга
Вы наверняка неоднократно встречали в Интернете такой сервис, как гостевые книги, т. е. web-страницы, на которых каждый посетитель может оставить свой отзыв, который будет «виден» другим посетителям, впоследствии зашедшим на страницу. Скорее всего, вы думали, что создание гостевой книги требует долгого и сложного программирования.
Не спорю, сделать крупный Интернет-портал, предоставляющий всем желающим гостевые книги для установки на сайт, довольно трудно. Однако на языке программирования РНР организация простой системы оставления сообщений может быть создана всего несколькими строками кода. Причем нетрудно заставить эти строки обслуживать сразу несколько отдельных гостевых книг, скажем, дать посетителям возможность оставлять свои комментарии и отзывы о различных материалах, размещенных на сайте, на тех же самых страницах, на которых эти материалы размещены. Или, допустим, организовать разные книги для разных категорий посетителей.

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

РНР: система оценки материалов
Файл niz.php
Файл otziv.php
Текст сценария

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

РНР: файловый менеджер
Проектирование
Файл ph11/Index.php
Файл zapros.рнр
Файл do.рнр
Текст сценария

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

РНР: полезные мелочи
Счетчик посещений

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

Краткая справка
Переменные в адресной строке
Cookies
Сессии
Пользовательская форма
Установленные переменные

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

Преврати свой сайт в портал
Мир информеров
С миру по нитке
Рабочий стол современного человека

Используй то, что под рукою - и не ищи всегда другое
Практически всем известны встроенные в Microsoft Word всех версий, начиная с 97-й, конверторы документов в HTML-формат. И уже притчей во языцех стало качество генерируемого ими web-кода, в который все они добавляют множество ненужной информации. В самом деле - html-документ, созданный в Word97, едва ли не затопляется тэгами , a web-страницы, являющиеся произведениями последующих версий Office, в целях достижения возможности сохранения абсолютно всех доступных в Word параметров документа построены на особом языке, отличительной особенностью которого является крайняя громоздкость и трудность редактирования

Используй то, что под рукою
Конвертация текстов
"Вытаскивание рисунков"
Web-графика - быстро и удобно

На сайте - как в Винде

Заключение

Архив рассылки -программирование на PHP

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

Пишем на PHP: Письма с вложенными файлами
Что есть в письмах кроме писем?

PHP/FI Version 2.0

PHP/FI версии 2.0 - полная перезапись двух пакетов, объединенных в одиночную программу. Это теперь развилось по сути в простой язык программирования, внедренный внутрь HTML файлов. Первоначальный акроним, PHP, прижился, правда теперь не соответствует действительности. PHP/FI сегодня используется больше для создания целых web серверов, чем для малых домашних страниц. Модуль устраняет потребность в многочисленных малых cgi программах на Perl, позволяя Вам поместить простые скрипт-программы непосредственно в ваши HTML файлы. Это увеличивает общую производительность ваших web страниц, хотя бы потому что нет непроизводительных затрат на запуск Perl-а. Пакет также упрощает управление большими web серверами, помещая все компоненты web страницы в одиночном файле html. Всторенная поддержка различных баз данных делает тривиальной разработку web страниц с доступом к базам данных. Многие находят, что иметь дело с внедренным в html-документы языком намного проще, чем создавать отдельные HTML и CGI файлы .

Краткая Хронология
Контроль доступа
Регистрация Доступа
Пример 1
Пример 2
Пример 3
Пример 4
Относительный против Абсолютного URL
Пример 1
Пример 2

Руководство по РНР 3.0

PHP был задуман где-то в конце 1994 года Расмусом Ледорфом(Rasmus Lerdorf). Ранние невыпущенные версии использовались на его домашней странице для того, чтобы следить за тем кто просматривал его интерактивное резюме. Первая используемая версия cтала доступна где-то в начале 1995 и была известна как Personal Home Page Tools. Она состояла из очень упрощенного движка синтаксического анализатора, который понимал только несколько специальных макрокоманд и ряд утилит, которые затем были в общем использовании на домашних страницах. Гостевые книги, счетчики и некоторые другие дополнения. Довольно трудно дать какую-либо жесткую статистику, но отмечено, что к 1996 г. PHP/FI был использован по крайней мере на 15,000 веб-сайтах во всем мире. В середине 1997г. эта цифра выросла до более чем 50,000. В середине 1997г. также наблюдалось изменение в разработке PHP. Из частного любимого проекта Расмуса, которому способствовала горстка людей , это превратилось в намного более организованную рабочую группу. Синтаксический анализатор был заново переписан Зевом Сураски(Zeev Suraski) и Анди Гутмансом(Andi Gutmans), и этот новый синтаксический анализатор стал основой для PHP Версии 3.

Что такое PHP3?
Возможно самая сильная и значимая возможность в PHP3 - уровень интеграции с базами данных. Написание веб-страницы работающей с базой данных невероятно проста. В настоящее временя поддерживаются следующие базы данных: Oracle Adabas D Sybase FilePro mSQL Velocis MySQL Informix Solid dBase ODBC Unix dbm PostgreSQL

Что может делать PHP3?
Краткая История PHP
HTTP-аутификация средствами PHP
Пример 2-1. Пример HTTP аутификации
Создание GIF-файлов с помощью PHP
Пример 2-2. Создание GIF-файлов с помощью PHP
Поддержка file upload
Пример 2-3. Форма загрузки файла
Поддержка HTTP cookie
Поддержка баз данных

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

ada_close
Description
ada_commit
Description
ada_connect
Description
ada_exec
Description
ada_fetchrow
Description

Пример. Пример mktime()
Предупреждение:Обратите внимание на необычный порядок аргументов, который отличается от порядка аргументов в вызове функции mktime() из UNIX, и который нехорошо ведет себя при неправильно заданных параметрах (см.ниже). Это очень часто встречающаяся ошибка в скриптах.
Возвращает временную метку Unix согласно данным аргументам. Эта временная метка является целым числом, равным количеству секунд между эпохой Unix (1 Января 1970) и указанным временем.

Пример 1. Пример mktime()
gmmktime
Описание
time
Описание
microtime
Описание
Записи в dBase-формате (dbf) базы данных.
dbase_create
Описание

Ftell ftell -- текущая позиция указателя
Для файла fp устанавливает указатель в потоке файла на смещение в offset байт. Эквивалентно вызову в Си fseek( fp, offset, SEEK_SET ). При удачном выполнении возвращает 0, в противном слчае возврщается -1. ЗАметим, что поиск после EOF не рассматривается как ошибка.

Описание
ftell
Описание
fwrite
Описание
is_dir
Описание
is_executable
Описание
is_file

Содержание GetImageSize
Описание - int hw_unlock(int connection, int objectID); Разблокирует документ для доступа другим пользователям. Смотри также hw_GetAndLock().

Описание
hw_Username
Описание
Содержание GetImageSize
GetImageSize
Описание
Пример 1. GetImageSize
Пример 2. GetImageSize возвращает IPTC
ImageArc
Описание

Пример. error_log()
Описание - string imap_clearflag_full(int stream, string sequence, string flag, string options); Эта функция заставляет удалить флаги из набора флагов сообщения в указанной последовательности. options - это битовая маска из ST_UID Аргументы последовательности содержат UIDы вместо номеров

Описание
imap_sort
Описание
imap_fetchheader
Описание
imap_uid
Описание
error_log
Описание
Таблица 1. error_log() лог типы

Введение в LDAP
LDAP (Lightweight Directory Access Protocol) - Протокол Доступа к Директориям (каталогам), является протоколом, используемым для доступа к "Серверам Каталогов". Директория является специальной разновидностью базы данных, которая хранит информацию используя древовидную структуру. Эта концепция аналогична структуре каталога на вашем жестком диске, за исключением того что в данном контексте корневой каталог рассматривается как "весь мир" а подкаталоги первого уровня как "страны". Более низкие уровни структуры директории содержат входы для компаний, организаций или мест, на уровне еще ниже находятся входы каталога для людей, и возможно для оборудования или документов.

Использование PHP LDAP вызовов
Дополнительная информация
ldap_add
Описание
Полный прример с идентифицируемой связью
ldap_bind
Описание
ldap_close
Описание
ldap_connect

Пример. Распаковываем строку
Распаковывает данные из двоичной строки в массив согласно формату. Возвращает массив, содержащий распакованные элементы. Unpack работает не так как в Perl поскольку распакованные данные сохранены в ассоциативном массиве. Чтобы сделать это, Вы должны установить различные коды формата, и отделить их наклонной чертой вправо /.

unserialize
Описание
Пример 1. unserialize
uniqid
Описание
usleep
Описание
msql
Описание
msql_affected_rows

Пример. mysql_tablename() example
Эта функция возвращает TRUE или FALSE чтобы показать успешность выполнения запросов UPDATE, INSERT, и DELETE. При запросе SELECT она возвращает новый идентификатор результата. Ресурсы, использованные запросом затем могут быть освобождены вызовом функции mysql_free_result().

sybase_affected_rows
Описание
sybase_close
Описание
sybase_connect
Описание
sybase_data_seek
Описание
sybase_fetch_array
Описание

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

PDF_set_info_creator
Описание
PDF_set_info_title
Описание
PDF_set_info_subject
Описание
PDF_set_info_keywords
Описание
PDF_set_info_author
Описание

Описание int pg_getlastoid(int result_id)
Описание - int pg_fieldtype(int result_id, int field_number); pg_FieldType() возвращает строку, содержащую имя типа указанного поля в указанном идентификаторе результата PosgreSQL. Нумерация полей начинается с 0.

pg_FreeResult
Описание
pg_GetLastOid
Описание
pg_Host
Описание
pg_loclose
Описание
pg_locreate
Описание

Пример. rawurlencode()
Если locale является пустой строкой "", то локальные имена будут установлены из значений переменных окружения с теми же именами, как у вышеописанных категорий, или из "LANG".
Если locale равна нулю или "0", то местные установки не изменяются, возвращаются текущие установки.
Setlocale возвращает новое текущее locale, или false, если locale функционально не поддерживается текущей платформой, указанный locale не существует или категории неверное. Неверное имя категории также вызывает предупреждающее сообщение.

setlocale
Описание
soundex
Описание
Пример 1. Soundex
sprintf
Описание
Примеры
sprintf: форматирование денежной еденицы
strchr

Изменение: старые открывающий и закрывающий тэги
Пример 0-1. Изменение: старые открывающий и закрывающий тэги: ? echo "This is PHP/FI 2.0 code.\n"; Начиная с версии 2.0, PHP/FI поддерживает также следующий формат

Старые открывающий и закрывающий тэги:
Новые открывающий и закрывающий тэги
Новые тэги начала и конца 2 вариант:
Новые тэги начала и конца 3 вариант:
Синтаксис операторов if..endif
Изменение: старый синтаксис if..endif:
Изменение: новый синтаксис if..endif:
Синтаксис while
Изменения: старый, while..endwhile синтаксис:
Изменения: новый синтаксис while..endwhile:

PHP 4 на практике

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

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

Краткая история
Характеристики РНР
Традиционность
Простота
Эффективность
Безопасность
Гибкость
Бесплатное распространение
Рекомендации пользователей
Вводный пример

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

Целые числа
Восьмеричная и шестнадцатеричная запись
Вещественные числа
Стандартная запись
Научная запись
Строковые значения
Строковое присваивание
Синтаксис встроенной документации
Обращение к отдельным символам строк
Массивы

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

Выражения
Операнды
Операторы
Управляющие конструкции
Проверка условий
Альтернативное ограничение блоков
while
do. .while
for
foreach

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

Что такое функция?
Определение и вызов функций
Вложенные функции
Возврат значений из функции
Рекурсивные функции
Функции-переменные

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

Создание массивов
Многомерные массивы
Ссылки на многомерные массивы
Поиск элементов массива
Добавление и удаление элементов
Перебор элементов
Размер массива
Сортировка массивов
Другие полезные функции
Итоги

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

РНР и ООП
Классы, объекты и объявления методов
Создание объектов и работа с ними
Нарушение инкапсуляции
Конструкторы
Деструкторы
Простое и иерархическое наследование
Абстрактные классы
Перегрузка методов
Функции для работы с классами и объектами

Файловый ввод/вывод и файловая система
Данная глава посвящена одному из важнейших аспектов РНР — средствам файлового ввода/вывода. Как нетрудно предположить, входные и выходные потоки данных интенсивно используются при разработке web-приложений. Не ограничиваясь простым чтением/записью файлов, РНР предоставляет в распоряжение программиста средства просмотра и модификации серверной информации, а также запуска внешних программ. Этим средствам и посвящена настоящая глава.

Проверка существования и размера файла
Открытие и закрытие файлов
Запись в файл
Чтение из файла
Чтение файла в массив
Перенаправление файла в выходной поток
Открытие файлового манипулятора процесса
Открытие соединения через сокет
Запуск внешних программ
Обратные апострофы

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

Регулярные выражения
Синтаксис регулярных выражений (POSIX)
РНР для регулярных выражений
Синтаксис регулярных выражений в стиле Perl
Метасимволы
Модификаторы
Функции РНР Perl-совместимые
Другие строковые функции
Дополнение и сжатие строк
Определение длины строки

PHP и динамическое создание страниц
Многие читатели в любой книге о компьютерах пролистывают все, что не представляет непосредственного интереса, и переходят к тому, что они действительно хотят знать. Лично я поступаю именно так. Впрочем, в этом нет ничего страшного — редко встречаются технические книги, которые необходимо читать от корки до корки. А может, вы именно так и поступили — пропустили восемь начальных глав и взялись за эту главу, потому что у нее было самое интересное название? Да и кому захочется тратить время на подробности, когда на работе «горит» очередной проект?

Простые ссылки
Файловые компоненты (шаблоны)
include( ) и require( )
Функции
Построение компонентов
Заголовок
Колонтитул
Основная часть
Заголовок, колонтитул и основная часть
Оптимизация шаблонов

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

Общие сведения о формах
Элементы форм для ввода с клавиатуры
Элементы форм для ввода с мыши
Все вместе: пример формы
Формы и РНР
Вводные примеры
Проверка ошибок
Динамическое конструирование форм
Проект: гостевая книга
Итоги

Базы данных
Средства эффективного хранения и выборки больших объемов информации внесли огромный вклад в успешное развитие Интернета. Обычно для хранения информации используются базы данных. Работа таких известных сайтов, как Yahoo, Amazon и Ebay, в значительной степени зависит от надежности баз данных, хранящих громадные объемы информации. Конечно, поддержка баз данных ориентирована не только на интересы гигантских корпораций — в распоряжении web-программистов имеется несколько мощных реализаций баз данных, распространяемых по относительно низкой цене (а то и бесплатно).

Что такое SQL?
Поддержка баз данных в РНР
MySQL
Установка
Настройка MySQL
Стандартные функции РНР для работы с MySQL
Простейшая поисковая система
Сортировка таблиц
ODBC
Поддержка ODBC в РНР

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

О чем говорилось выше
Нетривиальная система шаблонов
Регистрация файлов
Регистрация переменных
Обработка файла
Вывод файла
Расширения класса template
Недостатки системы шаблонов
Надежды на «идеальное решение»
Снижение быстродействия

Cookie и отслеживание сеанса
Отслеживание пользователей и персональная настройка сайта относятся к числу самых популярных и вместе с тем неоднозначно воспринимаемых возможностей web-сайтов. Преимущества очевидны — вы можете предлагать пользователям именно ту информацию, которая их интересует. С другой стороны, возникает немало вопросов, связанных с конфиденциальностью, поскольку появляется возможность «следить» за тем, как пользователь перемещается от страницы к странице и даже от сайта к сайту.

Что такое cookie?
Компоненты cookie
Cookie и РНР
Уникальные идентификаторы
Отслеживание сеанса
Функции для хранения сеансовых данных
Проект: журнал посещений сайта
Итоги

PHP и XML
Бесспорно, развитие World Wide Web оказало заметное влияние на способы обмена информацией. Вследствие огромных размеров этой электронной сети соблюдение стандартов превратилось из простого удобства в обязательное требование — конечно, если ваша организация собирается в полной мере использовать потенциал Web. Одним из таких стандартов является язык XML (extensible Markup Language) — удобное средство обмена данными между организациями и приложениями.

Разметка текста
Язык SGML
Пришествие HTML
XML как свидетельство эволюции
Знакомство с синтаксисом XML
Определение типа документа (DTD)
РНР и ХМL
Подключение функций к обработке XML
Функции обработки кода XML
Другие полезные функции

JavaScript и COM
Как неоднократно упоминалось в книге, одной из самых замечательных особенностей РНР является простота его интеграции с другими технологиями. Примеры такой интеграции уже встречались при описании работы с базами данных, ODBC и XML. В этой главе будет показано, как просто организуется работа РНР в комбинации с JavaScript и приложениями на базе СОМ. Ниже приводятся общие сведения о JavaScript и СОМ, подкрепленные примерами их использования в РНР. К концу главы вы узнаете немало полезного об этих замечательных технологиях и о том, как они применяются в РНР.

JavaScript
Проверка поддержки JavaScript
Динамическое создание временных окон
СОМ
Поддержка СОМ в РНР
Запись информации в документ Microsoft Word
Дополнительная информация
Итоги

Безопасность
Конечно, читатель недоумевает — какое отношение древнеримский поэт Гораций имеет к сетевой безопасности? Безопасность — одна из тем, порождающих нескончаемый поток информации и вечно меняющихся в соответствии с новыми технологическими веяниями. Короче говоря, она в любой момент «не такая, какой была раньше». Вы никогда не можете полагаться на свои познания в этой области, поскольку в момент выхода на широкий рынок любая технология либо устаревает, либо обречена на устаревание в ближайшем будущем.

Проблемы конфигурации
safe_mode
safe_mode_exec_dir
disable_functions
doc_root
max_execution_time
memory_limit
sql.safe_mode
user_dir
Работа РНР в режиме модуля Apache

Учебник по основам PHP

Изначально аббревиатура РПР означала Preprocessor of Home Pages — препроцессор домашних страниц. Это язык внедряемых в HTML-страницы сценариев, исполняемых на сервере. По большей части его синтаксис заимствован из таких языков, как С, Perl, Java, и при этом добавлена масса возможностей, которых этим языкам недостает. Проще говоря, синтаксис РНР — это разумная альтернатива и строгости С, и «беспредельности» Perl.
РНР наделен практически полным набором функциональности, о которой (до появления РНР) мог только мечтать web-программист. Его цель — позволить максимально быстро создавать динамически генерируемые web-страницы. С полным основанием можно заявить, что изучение и использование РНР будет выгодно как начинающим, так и профессиональным программистам.
Основными конкурентами РНР являются технологии JSP (Java Server Pages и Java Scriptlets), ASP (Active Server Pages), Perl, SSI (Server Side Includes), Cold Fusion Server Pages. Рассмотрим те недостатки, которые присущи указанным технологиям. JSP — достаточно сложный для изучения и использования язык. ASP, основанный на синтаксисе VBScript (Visual Basic), имеет всего несколько десятков собственных функций и поэтому вынужден использовать СОМ-объекты; кроме того, он ориентирован исключительно на работу под Windows. Perl — язык головоломный, и его вольности затрудняют его понимание. SSI позволяет всего лишь компоновать HTML-страницу из нескольких файлов. CF — коммерческий продукт, что является его основным недостатком.

Основные сведения
РНР наделен практически полным набором функциональности, о которой (до появления РНР) мог только мечтать web-программист. Его цель — позволить максимально быстро создавать динамически генерируемые web-страницы. С полным основанием можно заявить, что изучение и использование РНР будет выгодно как начинающим, так и профессиональным программистам.

Структура раздела
Установка и компиляция РНР
Установка РНР в Windows
Компиляция для Windows

Функции работы с данными
Пары Index = value разделяются запятыми, они определяют индекс и значение. Индекс может быть строковым или числовым (но в ассоциированных массивах ведет себя как строковый). Если индекс не указывается, подразумевается по умолчанию подставляемое числовое значение автоинкремента (начиная с 0). Если указываются два элемента с одинаковыми индексами, последний заменяет первый. < /FONT >

Переменные
Массивы
Функции
Объекты и классы
Математические функции
Функции повышенной точности BCMath
Математические функции GMP
Дата и время
Строковые функции
Синтаксис регулярных выражений (PCRE )

Управляющие функции
В комплекте поставки этот файл называется php.ini-dist, при ручной установке его необходимо переименовать в php.ini и разместить в каталоге но умолчанию. Обычно РНР ищет этот файл в текущем каталоге (например, там, где находится сам интерпретатор). Также этот файл может распо.чагаться в системном каталоге (это свойственно Windows). При запуске интерпретатора из командной строки с параметром -с можно указать иной путь. Кроме того, путь можно задать и переменной окружения PHPRC.

int dl (string library)
Для сокращения объема выводимой...
void set_time_limit (int seconds)
РНР - типы ошибок и предупреждений
В примере выше вывод командой
Эти функции позволяют отсылать
В сценарии используются две основные
PHP способен осуществлять загрузку
Добавление кавычек в аргументы ОС
Эти функции доступны только для

Графика, Flash, pdf
РНР позволяет выводить не только HTML-текст, но и создавать (и отсылать браузеру) графические данные в различных форматах (gif, png, jpg, wbmp, xpm). Для того чтобы РНР мог работать с графикой, требуется библиотека GD. Вероятно, также потребуются дополнительные библиотеки для поддержки особенных форматов. Начиная с версии 1.6, GD не поддерживает работу с форматом GIF; вместо него используется формат png.

Графика, Flash, pdf
Shockwave Flash
Ming является библиотекой с открытым
С pdflib поставляется хорошая
При необходимости воспользуйтесь
int fdf_open (string filename)

Комплексная обработка данных
Данная группа функций позволяет работать с данными в формате WDDX. WDDX (Web Distributed Data Exchange) — это технология для «Распределенного обмена данными в web». Этот формат (производный от XML) предназначен для переноса данных из одной системы в другую (например, обмена данными между ASP, Perl, ColdFusion и PHP). Он позволяет сохранять не только значения, но и типы, и структуру сложных данных.

WDDX
DOM XML
XML-интерпретация
XSLT

PHP - статьи

Если Вы планируете создавать свой динамический сайт на платформе Windows, то у Вас скорее всего возникнет задача выбора СУБД для хранения информации (с языком, на котором Вы будете его программировать, судя по всему, вопросов не возникает). Одним из вариантов её решения, может оказаться использование MS Access в качестве SQL-сервера. Далее будет описано, как в скрипте, написанном на PHP, обратиться к базе данных MS Access.
К сожалению, в PHP нет встроенных средств для работы с этой СУБД, что, однако не исключает совместной их работы - для подключения к базе мы будем использовать ODBC.

Работа с MS Access в PHP
Если Вы планируете создавать свой динамический сайт на платформе Windows, то у Вас скорее всего возникнет задача выбора СУБД для хранения информации (с языком, на котором Вы будете его программировать, судя по всему, вопросов не возникает). Одним из вариантов её решения, может оказаться использование MS Access в качестве SQL-сервера. Далее будет описано, как в скрипте, написанном на PHP, обратиться к базе данных MS Access.

Работа с MS Access в PHP
Работа с MS Access в PHP - 2

Аспектно-ориентированная веб-разработка и PHP
Данная статья знакомит читателя с популярной парадигмой аспектно-ориентированной разработки программного обеспечения (AOSD). Статья содержит множество практических примеров, призванных конкретизировать столь абстрактную область как AOSD и помочь быстрее понять и оценить преимущества данного подхода. Статья рассчитана в первую очередь на программистов PHP. Цель ее в том, что бы показать, как можно использовать AOSD в PHP проектах уже сегодня

Аспектно-ориентированная веб-разработка и PHP
Что такое AOSD?
Что такое AOSD? - 2
Основы аспектно-ориентированного подхода
Основы аспектно-ориентированного подхода - 2
Основы аспектно-ориентированного подхода - 3
Основы аспектно-ориентированного подхода - 4
Аспектно-Ориентированная Разработка
Аспектно-Ориентированная Разработка - 2
Заключение

If-Modified-Since, если PHP не установлен как модуль Apache
Наверное, каждый веб-программист, интересующийся кешированием веб-страниц на стороне клиента, знает о таких заголовках HTTP, как If-Modified-Since и If-None-Match. Данные заголовки отправляются браузером при обращении к странице, которая имеется в его кеше. Для правильной организации кеширования на стороне клиента, серверному приложению необходимо отправлять заголовок "HTTP/1.0 304 Not Modified"и прекращать передачу данных в случае, если содержимое запрашиваемой страницы не изменилось с того момента времени, которое указано в присланном заголовке "If-Modified-Since".

If-Modified-Since, если PHP не установлен
If-Modified-Since, если PHP не установлен - 2

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

Применение классов для списков в PHP
Применение классов для списков в PHP - 2
Применение классов для списков в PHP - 3
Применение классов для вывода в PHP - 4
Применение классов для вывода в PHP - 5
Применение классов для вывода в PHP - 6

Register_globals=On? Вы в опасности!
Что представляет собой register_globals? Это опция в php.ini, которая указывает на необходимость регистрации переменных, полученных методом POST или GET в глобальный массив $GLOBALS.

Register_globals=On? Вы в опасности!
Register_globals=On? Вы в опасности! - 2

Сбор статистики на PHP
Статистические сведения о посетителях сайта приносят не мало пользы. По статистике можно подогнать дизайн сайта в соответствии с разрешением большинства посетителей, подогнать дизайн к браузеру, на котором приходят большая часть посетителей да и просто интересно, кто заглядывает к вам на сайт, из под какой OC, а может это поисковый робот яндекса или гугла? Хотя некоторые системы слежения за посетителями бывают черезвычайно сложными, но с помощью довольно простой системы можно получить любопытные сведения о посетителях сайта. Я покажу как сделать с виду простой журнал посещений сайта с помощью PHP и cookies (MySQL не требуется). К тому же мой пример можно легко расширить.

Сбор статистики на PHP
Сбор статистики на PHP - 2

PHP - авторизация доступа

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

Авторизация средствами web-сервера
Авторизация средствами web-сервера - 2
Авторизация с помощью заголовка
Авторизация с помощью заголовка - 2
Авторизация с помощью заголовка - 3
Авторизация с помощью заголовка - 4
Авторизация с помощью заголовка - 5
Авторизация с помощью заголовка - 6
Авторизация с помощью заголовка - 7
Авторизация с помощью заголовка - 8

Корпоративный сайт. Эффективный инструмент бизнеса

В 1969 году в один из самых "пиковых" моментов международных отношений для того, чтобы решить проблему обмена информацией между научно-исследовательскими институтами и NASA необходимо было создать единую сеть, требования к которой кроме высокой надежности (в случае ядерного удара) учитывали необходимость "связать" различные ЭВМ.
Созданное решение — сеть Arpanet оказалось очень надежным и удобным. Вскоре последовали попытки использовать сеть не только в "милитаристских" целях. Число компьютеров (а это были не привычные теперь всем устройства) росло. Сети и ЭВМ, не входящие в Arpanet, "испытывали неудобства" в связи с тем, что их "желание" войти в единую сеть реализовано не было.
К 1973 году возникла необходимость сформулировать концепцию единой глобальной сети, что было сделано впервые Витоном Серфом и Робертом Каном
Настоящий расцвет Интернет начался в 1992 году, когда была изобретена новая служба, получившая странное название "Всемирная паутина" (World Wide Web или WWW). Появление этой службы привлекло в ряды пользователей Сети сотни миллионов людей.

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

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

Маркетинг
Маркетинг - 2
Продвижение решений. Привлечение клиентов
Привлечение инвестиций
Поиск партнеров и дилеров
Поддержка клиентов, дилеров и партнеров
Поддержка клиентов, дилеров и партнеров - 2
Поддержка клиентов, дилеров и партнеров - 3
Многоязыковая поддержка
Прочие функции сайта

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

Требования к дизайну
Требования к автоматизации процессов
Задачи маркетинга
Задачи поиска информации
Поддержка клиентов, партнеров, дилеров
Системы оплат
Согласование и контроль за действиями
Согласование и контроль за действиями - 2
Регистрация в Интернет — каталогах
Ссылки, баннеры, баннерные сети

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

Некоторые технические аспекты
Некоторые технические аспекты - 2
Некоторые технические аспекты - 3
Создание бизнес-приложений
Создание бизнес-приложений - 2
Создание бизнес-приложений - 3
JavaScript
Java — апплеты
Активные формы
Активные формы - 2

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

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

Техническое задание
Техническое задание - 2
Техническое задание - 3
Техническое задание - 4

Turbo Pascal для начинающих

Учебник состоит из трех частей и приложения.
В первой части собраны задачи. Они сгруппированы по темам и относятся практически ко всем разделам программирования: от объявления переменных и программ с линейной структурой до работы с графикой и файлами.
Во второй части приведены решения, представленные в виде хорошо документированных текстов программ, изучение которых поможет начинающему программисту даже в том случае, если задача решена им самостоятельно.
Третья часть представляет собой справочник по языку программирования Turbo Pascal, содержащий описание большинства процедур и функций.
Если вы имеете компьютер с процессором типа Pentium (Celeron), то используйте Turbo Pascal версии 7.1. Программы, созданные при помощи Turbo Pascal 7.0 и использующие библиотеку ctr, на компьютерах с процессором типа Pentium (Celeron) не работают, при их запуске возникает ошибка "деление на ноль". Еще раз хочется повторить, что научиться программировать можно только программируя, т. е. решая конкретные задачи.


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

Задачи
Приступая к решению задач этого раздела, следует помнить, что:
каждая переменная программы должна быть объявлена; объявления переменных помещают в раздел, который начинается словом var; инструкция объявления переменной выглядит так:
ИмяПеременной:Тип;
в имени переменной можно использовать буквы латинского алфавита и цифры (первым символом должна быть буква); основными числовыми типами языка Turbo Pascal являются:
integer (целый), real (дробный); после инструкции объявления переменной рекомендуется указывать назначение переменной.

Объявление переменных
While
Символы и строки
Массивы
Факультатив
Функции
Факультатив
Процедуры
Факультатив
Графика

Решения

Справочник
Программа на языке Pascal состоит из разделов: раздел объявления меток; раздел объявления констант; раздел объявления типов; раздел объявления переменных; раздел объявления процедур и функций; раздел инструкций программы.

Структура программы
Инструкция FOR
Инструкция REPEAT
Инструкция WHILE
Безусловный переход
Объявление функции
Объявление процедуры
Встроенные функции и процедуры
Зарезервированные слова и директивы
Процедуры и функции

Приложение
В языке Turbo Pascal нет стандартной процедуры, которая обеспечивала бы вывод на экран картинки, находящейся в файле. Программист сам может разработать такую процедуру. Однако эта задача является довольно сложной. Поэтому ниже приведен текст разработанной автором функции Draw, которая выводит на экран 16-цветную картинку, созданную в среде Windows, например, при помощи графического редактора Paint.

Вывод иллюстраций
Таблица кодировки символов
Десятичные, двоичные числа
Память компьютера

История экономических учений - перейти
История экономических учений - перейти
История экономических теорий - перейти
Познание экономической практики - перейти
История экономических учений в системе наук - перейти
Денежное обращение и регулирование - перейти
Денежное обращение - перейти
Валютное международное право - перейти
Иллюстрации из раскрашенной бумаги - перейти
Подкрашенные фотографии - перейти
Пользовательские рамки - перейти
Перспективные сетки в программе Illustrator - перейти
Клавишные комбинации быстрого вызова - перейти
Преобразование файлов Photoshop и Illustrator - перейти
Секреты спецэффектов Photoshop 4 - перейти





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