Модератор форума: JonMagon |
Сообщество uCoz Мастерская uCoz Использование PHP и API на uCoz uAPI Framework |
uAPI Framework |
uAPI Framework — класс для работы с API uCoz'а, позволяющий быстро получать и устанавливать данные посредством cURL'а. Начало использования Для начала скачиваем сам класс api_class.php и кладем в ту же папку, где будет находится будущий PHP скрипт. Создаем новый *.php файл и подключаем api_class.php Код require_once("api_class.php"); Далее создаем новый объект класса и открываем новую сессию. Код $api = new api(); $api -> start_session(); Настройки авторизации Прежде всего устанавливается самый главный параметр — адрес сайта; путем использования метода set_config. Код $api -> set_config('site', 'http://адрес_сайта/'); Если в «Общих настройках» указан API Key, то и тут его также необходимо указать. Код $api -> set_config('apikey', 'API ключ'); Стоит обратить внимание, что некоторые поля (E–mail, IP и т.д.) API не отдает в режиме гостя, поэтому, в случае необходимости получения этих данные, следует также указать настройки авторизации: логин и пароль пользователя, у которого есть права не просмотр этих полей (группа «Администраторы»). Код $api -> set_config('login', 'Логин'); $api -> set_config('password', 'Пароль'); Проверяем правильность кода и вызываем метод авторизации, который войдет на сайт в соответствии с указанными настройками. Код $api -> auth(); Полезно знать Для экономии времени работы скрипта можно авторизоваться лишь однажды, при этом будет создан файл-куки, который будет в дальнейшем использоваться. Однако, стоит помнить, что есть обстоятельства, когда необходима повторная авторизация: ручная авторизация бота на сайте, просрочка срока авторизации. К примеру, можно занести авторизацию под условие необязательного GET-параметра: Код if (isset($_GET['auth'])) $api -> auth(); Использование После выполнения авторизации, в полном объеме можно получать и устанавливать данные модулей сайта. Получение данных get_api('адрес страницы') Формирует ссылку для доступа к API модуля и осуществляет запрос. Возвращает ассоциативный массив. Пример использования: Код $user = $api -> get_api('index/8-1'); echo $user['USER_EMAIL']; get_json('адрес страницы') Предназначен для самописного API. Осуществляет запрос и парсит данные со страницы. Возвращает ассоциативный массив. Пример использования: На странице, куда осуществляется запрос: Код <?if($USERNAME$ == 'Bot')?><?substr($BODY$, 0, 0)?><?substr($ADMIN_BAR$, 0, 0)?>{"email": "$_EMAIL$"}<?else?>... Обычный код страницы ...<?endif?> PHP: Код $user = $api -> get_json('index/8-1'); echo $user['email']; Установка данных send_post('адрес страницы', 'страница–реферал', 'POST запрос'); Устанавливает данные указанного модуля. Пример использования: Код $api -> send_post('/index', null, array('rank' => 3, 'title' => 'тест', 'a' => 41, 's' => 1, 't' => 1, 'ssid' => ($api -> session['ssid']))); Функция auth после выполнения возвращает булевое значение, позволяющее определить успешность авторизации.
Код if ($api -> auth()) echo "Авторизация прошла успешно" else echo "Ошибка авторизации"; Прикрепления:
3105347.php
(3.4 Kb)
Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
Сообщение отредактировал JonMagon - Понедельник, 07 Мар 2016, 17:52:10
|
Содержимое php:
Код # Функция парсера информации о пользователе function API_parser($id,$q=0) { global $config, $tpl; $context = stream_context_create(array('http' => array('method' => "GET", 'header' => "Content-Type: text/xml",'timeout' => 8))); $file = file_get_contents($config['site_url']."/api/index/8-$id", false, $context); if (strpos('200', $http_response_header[0]) || !$file) { return false; } $response = xmlrpc_decode($file, "utf8"); if ($response && xmlrpc_is_fault($response)) { return false; } if ($q == 0) { $tpl->set('{user_name}',$response['USER_USERNAME']); $tpl->set('{user_full_name}',$response['USER_NAME']); if ($response['USER_GENDER'] == 1) { $tpl->set('{user_gender}','М.'); } else if ($response['USER_GENDER'] == 2) { $tpl->set('{user_gender}','Ж.'); } if ($response['USER_AVATAR'] == '...' OR $response['USER_AVATAR'] == '') { $tpl->set('{user_avatar}',$config['no-avatar']); } else { $tpl->set('{user_avatar}',$response['USER_AVATAR']); } $tpl->set('{user_group_id}',$response['USER_GROUPID']); $tpl->set('{user_email}',$response['USER_EMAIL']); $tpl->set('{user_icq}',$response['USER_ICQ']); $tpl->set('{user_aol}',$response['USER_AOL']); $tpl->set('{user_msn}',$response['USER_MSN']); $tpl->set('{user_yahoo}',$response['USER_YAHOO']); $tpl->set('{user_birthdat}',$response['USER_BIRTHDAY']); $tpl->set('{user_zodiac}',$response['USER_ZODIAC']); $tpl->set('{user_group_name}',$response['USER_GROUPNAME']); $tpl->set('{user_reputation}',$response['USER_REPUTATION']); $tpl->set('{user_awards}',$response['USER_AWARDS']); } if ($q != '0') { return $response[''.$q.'']; } } А вот содержимое файла tpl: Код <a href="/index/8-{user_id}"><img alt="" style="border:1px solid #dcdcdc;" width="45" src="{user_avatar}" /></a> {user_id} работает, а аватарка нет. Помогите разобраться. |
Добавил так:
$userd = $api -> get('USERS', 1); $tpl->set('{user_avka}',$user['USER_AVATAR']); Теперь вообще не добавляется отзыв (скрипт отзывы о пользователе). Вот содержимое файла: [code][/code]<?php /*! ########################################################### Модуль: Отзывы для uCoz ----------------------------------------------------------- Автор: syp41k От: uSite.Su ----------------------------------------------------------- Назначение этого файла: Функции ########################################################### */ if(!defined('REVIEWS')) die('Generation page is not available!'); # Функция обработки данных function dataProcessing($value) { if (get_magic_quotes_gpc()) { $value = stripslashes($value); } $value = htmlspecialchars($value); return $value; } # Функция перевода time() в понятную дату function formatDate($time){ return date("j.m.Y H:i:s", $time); } # Функция добавления отзыва function add_review($data,$t='a+') { global $data_base; if ($t == 'w') { $add = $data; } else { $add = var_export($data, true); } $contents = $add; $handler = fopen('data_base.php', $t); if ($t == 'w') { fwrite($handler, "<?php \nif(!defined('REVIEWS')) die('Generation page is not available!');"); } if ($t != 'w') { fwrite($handler, "\n\n\$data_base[] = "); } fwrite($handler, $contents); if ($t != 'w') { fwrite($handler, ";"); } fclose($handler); if ($handler) { return true; } else { return false; } } # Функция парсера информации о пользователе function API_parser($id,$q=0) { global $config, $tpl; $user = $api -> get('USERS', 1); $context = stream_context_create(array('http' => array('method' => "GET", 'header' => "Content-Type: text/xml",'timeout' => 8))); $file = file_get_contents($config['site_url']."/api/index/8-$id", false, $context); if (strpos('200', $http_response_header[0]) || !$file) { return false; } $response = xmlrpc_decode($file, "utf8"); if ($response && xmlrpc_is_fault($response)) { return false; } if ($q == 0) { $tpl->set('{user_avka}',$user['USER_AVATAR']); $tpl->set('{user_name}',$response['USER_USERNAME']); $tpl->set('{user_full_name}',$response['USER_NAME']); if ($response['USER_GENDER'] == 1) { $tpl->set('{user_gender}','М.'); } else if ($response['USER_GENDER'] == 2) { $tpl->set('{user_gender}','Ж.'); } if ($response['USER_AVATAR'] == '...' OR $response['USER_AVATAR'] == '') { $tpl->set('{user_avatar}',$config['no-avatar']); } else { $tpl->set('{user_avatar}',$response['USER_AVATAR']); } $tpl->set('{user_group_id}',$response['USER_GROUPID']); $tpl->set('{user_email}',$response['USER_EMAIL']); $tpl->set('{user_icq}',$response['USER_ICQ']); $tpl->set('{user_aol}',$response['USER_AOL']); $tpl->set('{user_msn}',$response['USER_MSN']); $tpl->set('{user_yahoo}',$response['USER_YAHOO']); $tpl->set('{user_birthdat}',$response['USER_BIRTHDAY']); $tpl->set('{user_zodiac}',$response['USER_ZODIAC']); $tpl->set('{user_group_name}',$response['USER_GROUPNAME']); $tpl->set('{user_reputation}',$response['USER_REPUTATION']); $tpl->set('{user_awards}',$response['USER_AWARDS']); } if ($q != '0') { return $response[''.$q.'']; } } # Копирайт function copyright($t) { if ($t) { return 'Module reviews for uCoz / by syp41k / skype: Joherlol'; } else { return '<!-- Module reviews for uCoz / by syp41k / skype: Joherlol -->'; } } # Генерация уникального ID отзыва function review_id_generete($id) { global $data_base; $id = $id + rand(0,100); foreach ($data_base as $review) { foreach ($review as $key => $value) { if ($value['id_review'] == $id) { $id = review_id_generete($id); } } } return $id; } ?> Добавлено (14 Июл 2013, 15:44:18) |
<?php
require_once("api_class.php"); $api = new api(); $api -> start_session(); $api -> set_config('site', 'http://sitesnews.net/'); $api -> set_config('apikey', 'тут я ключ указал'); $user = $api -> get('USERS', 1); $api -> set_config('login', 'ExeleratioN'); $api -> set_config('password', 'тут пароль указал'); $api -> auth(); echo $user['USER_USERNAME']; ?> Вроде всё правильно, но: выводит так ({"SCRIPTDATA":"ExeleratioN","ERROR":""}) Оно ник выводит, да, но пишет же еще еррор, в чем проблема? |
Supportino, в начало скрипта добавьте
Код $___notjson = 1; Эту часть Код $api -> set_config('login', 'ExeleratioN'); $api -> set_config('password', 'тут пароль указал'); $api -> auth(); Переместите до Код $user = $api -> get('USERS', 1); Либо вообще уберите, т.к. в вашем варианте смысл в ней отсутствует. Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
|
|
JonMagon, Тогда понятно.супер. Буду пробовать. ))
Добавлено (20 Ноя 2013, 03:39:22) Код $api -> send_post('http://site.ru/index/', null, array( 'message' => 'some text', 'a' => '36', 'm' => '3', 'id' => $mID, 'user' => $user, 'ssid' => $session)); И еще не понятно, как работает set('Модуль', ID, 'Тип данных', 'Значения') Пробовал изменить сообщение в материале, но не получилось: Код $api -> set('publ', $mID, 'MESSAGE', array(3, 'Тест')); P.S. что значит тройка в array? Извиняюсь за такое кол-во вопросов, на самом деле интересно. В поисковике информации особой нет. jmDB - Текстовая база данных для uCoz
|
JacksonMihailov, может вы уже достанете руки и посмотрите код класса что бы не задавать таких чрезвычайно глупых вопросов?
Благодарности можно оставить — в репутации.
Помощью в ЛС не занимаюсь, есть форум. Занимаюсь сайтами на платной основе. Шаманю на php и mysql с использованием бубна 80 lvl. |
Данная функция постепенно дописывается, и в ней появляются все новые возможности. По сути, данная функция — оболочка для send_post, способная возвращать true или же false. Пример: Код return (strpos($this -> send_post('/index', null, array('rank' => $value[0], 'title' => $value[1], 'a' => 41, 's' => $id, 't' => 1, 'ssid' => $this -> session['ssid'])), 'Изменения сохранены') === false) ? false : true; Возможность добавления комментариев от имен других пользователей не предусмотрена в системе uCoz. Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
|
SOFTOLAB_COM,
JonMagon, Спасибо. Добавлено (10 Апр 2014, 23:57:33) --------------------------------------------- Добрый день. У send_post(); есть callback? и есть ли возможность передать массив категорий? (Материал входит в несколько категорий) Код 'ocat' => array(1,5,6) - так не получается. Спасибо. jmDB - Текстовая база данных для uCoz
Сообщение отредактировал JacksonMihailov - Пятница, 11 Апр 2014, 00:10:21
|
Нет. и есть ли возможность передать массив категорий? (Материал входит в несколько категорий) Данная возможность не проверялась. По сути, это должно выглядеть так: Код 'ocat' => 1, 'ocat' => 2, 'ocat' => 3 Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
|
| |||