- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
$DB_Connect = new DB_Connect(); // Подключаем класс базы данных
$acces = 1; // 1 - Включено API, 0 - Отключено API
if($acces == 1) { // Проверяем чтобы API было включено
$DB_Connect->connect(); // Подключаемся к базе данных
mysql_set_charset( 'utf8' ); // Изменяем кодировку базы данных
if($_GET['api_id']) $gameid = sText($_GET['api_id']); // Получаем API_ID
else $gameid = sText($_POST['api_id']);
$game = mysql_fetch_array(mysql_query("SELECT id FROM `vii_apps` WHERE id='".$gameid."'")); // Запрашиваем ID с полученным API_ID
$row_sql = mysql_fetch_array(mysql_query("SELECT count(*) as cnt FROM `vii_api` WHERE `IP`='".$_SERVER["REMOTE_ADDR"]."' AND `data`>(".time()."-1)"));
// Запрашиваем количество запросов в секунду от этого человека
if($row_sql['cnt']<3) { // Проверяем частоту запросов от этого человека
if(!$game) json_error(2); // Проверяем существование этого приложения
else {
if($_GET['method']) $method = $_GET['method']; // Получаем METHOD
else $method = $_POST['method'];
if($_GET['sig']) $sig = sText($_GET['sig']); // Получаем SIG
else $sig = sText($_POST['sig']);
if($method=="users.get") { // Если это метод users.get
if($_GET['uids']) $uids = sText($_GET['uids']); // Получаем UIDS
else $uids = sText($_POST['uids']);
$uids_explode = explode(",", $uids);
if($_GET['fields']) $fields = sText($_GET['fields']); // Получаем FIELDS
else $fields = sText($_POST['fields']);
$fields_explode = explode(",", $fields);
$row = mysql_fetch_array(mysql_query("SELECT `user_id` FROM `vii_users` WHERE `IP`='".$_SERVER["REMOTE_ADDR"]."' ORDER by `user_lastdate` DESC LIMIT 1"));
// Получаем ID пользователя который делает запрос к API
$viewer_id = $row['user_id'];
$row_ = mysql_fetch_array(mysql_query("SELECT secret FROM `vii_apps_auth` WHERE user_id='".$viewer_id."' and app_id = '".$gameid."'"));
// Получаем личный SECRET пользователя который делает запрос к API
$secret = $row_['secret'];
$api = new fbapi($gameid, $secret, $viewer_id); // Подключаем класс проверки SIG
$sig_data = $api->api('users.get',array('uids'=>$uids,'fields'=>$fields)); // Формируем запрос на получение SIG
if($sig == $sig_data) { // Проверяем правильность SIG
mysql_query("INSERT INTO `vii_api` (method,ip,data) VALUES('".$method."','".$_SERVER["REMOTE_ADDR"]."','".time()."')");
// Записываем выполнение API метода
$vars = array(); // Формируем начало ответа
$vars['response'] = array(); // Формируем переменную RESPONSE
foreach($uids_explode as $uid) { // Перебираем все полученные UIDS
$row = mysql_fetch_array(mysql_query("SELECT user_id,user_name,user_lastname FROM `vii_users` WHERE user_id='".$uid."'"));
$rd = array('uid'=>$row['user_id'],'first_name'=>$row['user_name'],'last_name'=>$row['user_lastname']);
// Формируем массив для вставки его в ответ
if(count($fields_explode)!=0 and $fields_explode[0]!=null) { // Проверяем дополнительные поля
foreach($fields_explode as $field) { // Перебираем дополнительные поля
$rows = mysql_fetch_array(mysql_query("SELECT ".$field." FROM `vii_users` WHERE user_id='".$uid."'"));
if($field == "user_photo") {
if($rows[$fields]) $rd[$field] = "http://lineage18.ru/uploads/users/".$uid."/".$rows[$field];
else $rd[$field] = "http://lineage18.ru/templates/Default/images/100_no_ava.png";
} else $rd[$field] = $rows[$field]; // Добавляем в массив дополнительные поля
}
}
array_push($vars['response'],$rd); // Вставляем сформированный массив $rd в общий ответ
}
echo json_encode_cyr($vars); // Преобразуем нашу строку в JSON формат
} else json_error(3); // Ошибка не правильной SIG
} else if($method=="secure.withdrawVotes") { // Новый метод secure.withdrawVotes
doommer 29.12.2015 18:53 # +1