Шестеренка
(27)В сообществе «Шестеренка» предлагаю публиковать свои шестеренки. Как готовые варианты, так и Alfa, Beta версии.
Приветствую!
Пока делал шестеренку Sypex Dumper 2, паралельно задумалась идея об API. Ну подобие API что-ли. В общем у нее возможности могут разными. Пока что для примера сделал данные о пользователе (публичные и приватные) и настроек (info).
Установка проста:
— Скачать архив — Распакавать в каталог шестеренок
— Войти в админапанель, создать приватный Api-key полного доступа
Теперь вам доступна возможность получать данные (в формате JSON) для сторонних скриптов, особенно если они расположены на другом сайте(сервере).
Для примера данные о пользователе можно получить так:
_http://cogear/cgapi/user/API-KEY/admin
вместо API-KEY указав ключ можем получить следующие данные:
0 — публичные данные (имя, последнее посещение, рейтинг) — _http://cogear/cgapi/user/0/admin
Api-key полного доступа — приватные данные (email, дата регистрации, заряд, ip, аватар) — _http://cogear/cgapi/user/82a564470224c4662431bcb8f31830bd/admin
Что еще можно получить?
Можно получить рейтинг топика, комментария, можно организовать удаленную авторизацию для своих отдельных скриптов, получая данные подтверждения и т.д и т.п.
Для примера скрипт который покажет как обработать данные:
Это мы получили данные базы данных, ну мало ли в каком скрипте они были нужны.
Теперь можем обработать данные JSON, разобрав их по отдельности.
получаем отдельно строку: mysqli:\/\/root:123321@localhost\/cogear
Разбираем на части:
Вообще честно признать, очень специфичная шестеренка, поэтому не выкладываю в каталог, так как я не могу привести примеров где она может часто пригодится. Для меня это был просто — интерес.
p.s. Кстати, о той же шестеренке sypex dumper, для того что-бы выудить данные базы данных я воспользовался другим способом, приведу код — вам будет все понятно:
Пока делал шестеренку Sypex Dumper 2, паралельно задумалась идея об API. Ну подобие API что-ли. В общем у нее возможности могут разными. Пока что для примера сделал данные о пользователе (публичные и приватные) и настроек (info).
— Скачать архив — Распакавать в каталог шестеренок
— Войти в админапанель, создать приватный Api-key полного доступа
Теперь вам доступна возможность получать данные (в формате JSON) для сторонних скриптов, особенно если они расположены на другом сайте(сервере).
Для примера данные о пользователе можно получить так:
_http://cogear/cgapi/user/API-KEY/admin
вместо API-KEY указав ключ можем получить следующие данные:
0 — публичные данные (имя, последнее посещение, рейтинг) — _http://cogear/cgapi/user/0/admin
{"success":true,"mode":"public","name":"admin","last_visit":"2010-03-14 16:01:47","points":"0","points_counter":"0"}
Api-key полного доступа — приватные данные (email, дата регистрации, заряд, ip, аватар) — _http://cogear/cgapi/user/82a564470224c4662431bcb8f31830bd/admin
{"mode":"private","id":"1","email":"xxxxxx@gmail.com","url_name":"admin","reg_date":"2007-03-14 23:10:48","user_group":"1","charge":"8","last_charge_bonus":"2010-02-13 16:08:13","allow_mail":"true","is_validated":"true","ip":"127.0.0.1","avatar":{"24x24":"Z:\/home\/cogear\/www\/uploads\/avatars\/1\/24x24\/20986.jpg","64x64":"Z:\/home\/cogear\/www\/uploads\/avatars\/1\/64x64\/20986.jpg","128x128":"Z:\/home\/cogear\/www\/uploads\/avatars\/1\/128x128\/20986.jpg","original":"Z:\/home\/cogear\/www\/uploads\/avatars\/1\/20986.jpg"}}
Что еще можно получить?
Можно получить рейтинг топика, комментария, можно организовать удаленную авторизацию для своих отдельных скриптов, получая данные подтверждения и т.д и т.п.
Для примера скрипт который покажет как обработать данные:
$json = file_get_contents('http://cogear/cgapi/config/82a564470224c4662431bcb8f31830bd/global/database')
Получим в ответ: {«success»:true,«message»:«mysqli:\/\/root:123321@localhost\/cogear»}
Это мы получили данные базы данных, ну мало ли в каком скрипте они были нужны.
Теперь можем обработать данные JSON, разобрав их по отдельности.
$json = json_decode($json);
print $json->{'message'};
получаем отдельно строку: mysqli:\/\/root:123321@localhost\/cogear
Разбираем на части:
$database = preg_split("(://|@|/)", $json['database']);
$tmp = explode(":", $database[1]); // user:password, иногда ведь бывает и без пароля:)
$database[1] = $tmp[0];
$database[4] = $tmp[1];
print_r($database);
Итог:Array
(
[0] => mysqli
[1] => root
[2] => localhost
[3] => dbname
[4] => 123321
)
Вообще честно признать, очень специфичная шестеренка, поэтому не выкладываю в каталог, так как я не могу привести примеров где она может часто пригодится. Для меня это был просто — интерес.
p.s. Кстати, о той же шестеренке sypex dumper, для того что-бы выудить данные базы данных я воспользовался другим способом, приведу код — вам будет все понятно:
$global_info = parse_ini_file("../../../global/global.info");
if(!empty($_COOKIE['s']) && preg_match('/^[\da-f]{32}$/', $_COOKIE['s'])) {
# 0-mysqli, 1-user, 2-host, 3-dbname, 4-password
$global_info['database'] = preg_split("(://|@|/)", $global_info['database']);
$tmp = explode(":", $global_info['database'][1]); // user:password
$global_info['database'][1] = $tmp[0];
$global_info['database'][4] = $tmp[1];
$this->CFG['my_db'] = $global_info['database'][3];
$uid = $_COOKIE['id'];
$sid = $_COOKIE['s'];
if ($this->connect($global_info['database'][2], '', $global_info['database'][1], $global_info['database'][4])) {
mysql_selectdb($global_info['database'][3]);
if($query = mysql_query('SELECT * FROM `users` WHERE id='.$uid.' and is_validated=TRUE')){
$user = mysql_fetch_assoc($query);
if (($user['user_group'] == 1) && (md5(sha1($user['name'].$user['password']).date("Y-m")) === $sid)) {
$auth = 1;
}
}
}
} 

Продублируйте файл, плиз.
Я просто хотел посмотреть, как устроен механизм который выводит данные в формате JSON.
Хотел поучиться на чужом опыте. :-)
function index($param = FALSE){ $arr = array( 'val1' => 123, 'val2' => 'abc' ); $json_data = json_encode($arr); if ($param =- 'json') { ajax(TRUE, $json_data); } }Как начну делать, сразу же обращусь к вашей подсказке.