У
нас произошло одно из самых ожидаемых обновлений системы - теперь в
uCoz возможно использование языка программирования PHP и функционала
API.
PHP - это платная услуга, она доступна как в рамках пакетов (начиная с
пакета "Расширенный 2”), так и как отдельная услуга ($1.99 в месяц). Цены на все пакеты, в которых вводится данная услуга, остаются на прежнем уровне и не повышаются.
АPI - это бесплатная возможность, её нужно просто активировать в Основных настройках сайта:
Что теперь можно сделать?
PHP вводится для того, чтобы наши пользователи могли расширить и
кастомизировать свои сайты. Добавить им гибкости и разнообразных
полезных функций. С помощью нового функционала возможно реализовать
различные фичи на сайте, использовать скрипты для взаимодействия с
модулями системы и вывода данных в необходимом виде и месте, их
преобразование. Открываются возможности к реализации необычных сервисов
на своих сайтах.
Для чего данное решение не предназначено?
Данное решение не подходит для установки портальных систем,
монстрообразных движков форумов, и прочих высоконагрузочных скриптов с
неоптимальным исходным кодом, дающих высокие необоснованные нагрузки на
сервер. Собственно, подобные ограничения в реальности есть у любых
виртуальных хостингов. К тому же, в ряде случаев это будет дублировать
функционал uCoz, и врядли будет иметь целесообразность.
Примеры того, что можно реализовать при помощи PHP
Мы подготовили несколько примеров того, как можно использовать вводимое
решение. Все эти примеры с кодами и описаниями доступны на http://phpexample.ucoz.net
Мы также надеемся, что коллекции готовых скриптов и решений будут
постоянно пополняться не только усилиями наших разработчиков, но и
пользователями системы!
Чтобы поставить уже готовый и отлаженный скрипт - совсем не обязательно
быть программистом - при наличии четкой пошаговой инструкции это под
силу каждому.
Данная функция станет доступна в панели управления как виджет и ей
сможет воспользоваться любой сайт, который считает, что ему данный
функционал необходим. К сожалению, по некоторым причинам мы не приводим
исходный код данного решения, но при этом для его реализации был
использован стандартный функционал API и подобный виджет может теперь
создать любой желающий.
Посмотреть на другие примеры и получить код для вышеперечисленных можно на сайте http://phpexample.ucoz.net
Вы можете писать свои PHP скрипты и предлагать их к размещению в общий
каталог скриптов. В будущем будут проводиться конкурсы, связанные с
разработкой PHP скриптов для системы uCoz.
В каком формате мы внедряем эту функцию?
Это именно возможность использовать язык PHP. Под запретом функции
работы с памятью, системные вызовы и низкоуровневые функции по работе с
файловой системой.
Да, быть может вы уверенны в своих познаниях PHP и готовы поставить на
кон голову, что именно ваши скрипты не положат сервер. Но представьте,
что будет, если владелец соседнего сайта, того, что расположен на одном с
вами сервере, начнет экспериментировать и результат работы его
пытливого мозга и шаловливых рук уронит не только его сайт, но и все 100
тысяч, которым не посчастливилось хоститься рядом. Именно поэтому
подобные функции есть и будут оставаться под запретом.
Все остальные же функции языка использовать можно.
Можно работать с POST и GET запросами.
Как это работает?
Для вашего аккаунта при активации функции создается отдельная учетная запись на отдельном сервере, папка scripts, где будут храниться все файлы с расширением *.php. Только
файлы с таким расширением будет можно вызывать непосредственно в
редакторе шаблонов путем специального обращения. Все остальные файлы (их
содержимое) можно получать только посредством самих php-скриптов (т.е.
нельзя напрямую из шаблона обратиться к картинке в папке /scripts/
или файлу с базой данных, но можно вызвать их через скрипт, а сам
скрипт уже вызвать в шаблоне). Сама папка хранится на отдельном сервере,
на котором и происходит исполнение всех скриптов. Доступ к ней
осуществляется через FTP.
Для того, чтобы запустить скрипт на исполнение, его нужно вызвать в
любом нужном вам месте шаблона или материала (или даже напрямую, ссылкой
в браузере) в текущем домене через проксирование, используя вот такой синтаксис:
В шаблонах для вызова php-скрипта можно использовать функцию PHPCODE следующим образом:
$PHPCODE$("http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA¶m1=valueB...¶mN=valueM")?>
где
SITE_ADDRESS - адрес сайта пользователя, на котором выполняется скрипт.
SCRIPT_NAME - путь (относительно папки scripts) и имя скрипта, который выполняется.
?param0=valueA¶m1=valueB...¶mN=valueM - параметры для скрипта, которые могут как быть, так и не быть.
$PHPCODE$()?> - синтаксис вызова php функции в шаблоне системы uCoz.
Данная функция выполняет GET-запрос на указанный скрипт. Ответ для нее должен быть возвращен только в формате json.
Реализовать использование POST-запросов можно через формы, iframe, другие скрипты этого домена и т.д.
Как это выглядит на практике?
Рассмотрим на примере скрипта, который хранит какую-либо дополнительную информацию о пользователе. Скрипт создает на странице форму с дополнительными полями для текущего пользователя, которые он заполняет и нажимает кнопку "Обновить".
В шаблоне страницы добавляется код обращения к скрипту:
А в корень папки помещается файл example001.php с содержимым:
Подробнее о тонкостях работы функций можно почитать в инструкции.
API
Помимо внутреннего внедрения языка PHP мы запустили в работу функционал API.
API - на данный момент существует для всех контент-модулей, кроме
форума, интернет-магазина. Импорт данных для обработки осуществляется в
формате XML-RPC.
С его помощью возможен импорт данных со страниц этих модулей. Это
работает как в рамках юкозовских сайтов, так и для любых других
ресурсов.
Например, можно сделать кросспостинг последней статьи из блога на любой
сторонний сайт. Или, на основе анализа возраста посетителей, скрывать от
них материалы:
например, показывать картинки только, если залогиненный посетитель старше 18-ти лет:
Далее мы планируем развивать API, добавляя его в оставшиеся модули.
Через некоторое время добавится возможность API для редактирования и
постинга с oauth-авторизацией.
Без развития не останутся и возможности использования PHP: исходя из
реальных потребностей будут меняться установленные лимиты, добавляться
необходимые функции.
Вместо заключения
К внедрению PHP мы шли несколько лет не самыми простыми путями. Самые
старые наши пользователи могут еще помнить, что на вопрос, когда у нас
появится эта функция, отвечалось, что "никогда”. Но времена меняются, и
мы не только развиваемся, но и пересматриваем как стратегию нашего
развития, так и признаем недочеты в планах.
На сегодняшний день мы являемся первопроходцами в данном направлении и
единственной (в своем классе) системой в мире, которая предоставляет
такую услугу.