1. PHP / Говнокод #19267

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 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

    Пишем API на PHP

    Запостил: d_fomenok, 29 Декабря 2015

    Комментарии (1) RSS

    Добавить комментарий