Всем привет! Есть функция PHP: function getPoselenie($townid, $id) { global $curl, $cookie_filename, $token, $nlreq, $timef; //Проверка возможности фарма $farminfo = 'http://ru1.grepolis.com/game/farm_town_info?action=claim_info&town_id='.$townid.'&h='.$token[1].'&json={"id":"'.$id.'","town_id":'.$townid.',"nlreq_id":'.$nlreq[1].'}&_='.$timef; curl_setopt($curl, CURLOPT_URL, $farminfo); curl_setopt($curl, CURLOPT_REFERER, 'http://ru1.grepolis.com/game/index?login=1'); curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest')); $html = curl_exec($curl); //echo ($html); preg_match ('#farm_next_claim_time\\\">(.*?)<\\\/span>#', $html, $ready); print_r ($ready); if ($ready[1] == "\u0433\u043e\u0442\u043e\u0432\u043e") { // Фарм поселений //$id - ое поселение $farm01 = 'http://ru1.grepolis.com/game/farm_town_info?action=claim_load&town_id='.$townid.'&h=' .$token[1]; $post = 'json={"target_id":"' . $id . '","claim_type":"normal","time":300,"town_id":"'.$townid.'","nlreq_id":0}'; curl_setopt($curl, CURLOPT_URL, $farm01 ); curl_setopt($curl, CURLOPT_REFERER, 'http://ru11.grepolis.com/game/index?login=1'); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest')); curl_setopt($curl, CURLOPT_POSTFIELDS, $post); $html = curl_exec($curl); return $html; continue; } } и есть цикл PHP: foreach ($posel as $posel1) { if (isset ($posel1['name'])) getPoselenie ($city[0]['id'], $posel1['id']); } В общем мне нужно перебрать массив $posel (там id нескольких поселений), вызывая функцию getPoselenie для каждого поселения... Но также мне нужно выполнить условие (парсится страница и проверяется возможность фарма)... По идее мне нужно выполнять сначала проверку возможности фарма и вывести print_r ($ready)... А на деле получается наоборот, он сначала отправляет post а потом проверяет и выводит print_r ($ready); или ... не пойму что происходит... Что не так??? Вот что я получаю после первого запуска скрипта: Array ( [0] => farm_next_claim_time\">\u0433\u043e\u0442\u043e\u0432\u043e<\/span> [1] => \u0433\u043e\u0442\u043e\u0432\u043e ) Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 [Денвер: показать возможную причину ошибки]Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Вот что после второго: Array ( [0] => farm_next_claim_time\">0:03:16<\/span> [1] => 0:03:16 ) Array ( [0] => farm_next_claim_time\">\u0433\u043e\u0442\u043e\u0432\u043e<\/span> [1] => \u0433\u043e\u0442\u043e\u0432\u043e ) Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 [Денвер: показать возможную причину ошибки]Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Array ( ) Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96 Т.е. с каждым запуском скрипта, он на одну позицию продвигает цикл...
Вся проблема видимо в $ready[1] При первом проходе цикла нормально парсится, а далее возвращается пустой массив... В чем может быть причина? Может есть какая то особенность отправки get и получения ответа через цикл?
Проблема заключается в том, что на втором проходе цикла, скрипт вместо Get делает post запрос, при том, что в первый раз все отправляется правильно... Проблема здесь: $farminfo = 'http://ru1.grepolis.com/game/farm_town_info?action=claim_info&town_id='.$townid.'&h='.$token[1].'&json={"id":"'.$id.'","town_id":'.$townid.',"nlreq_id":'.$nlreq[1].'}&_='.$timef; curl_setopt($curl, CURLOPT_URL, $farminfo); curl_setopt($curl, CURLOPT_REFERER, 'http://ru1.grepolis.com/game/index?login=1'); curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest')); $html = curl_exec($curl); Не могу понять как исправить...
смею предположить, что после первого прохода опция CURLOPT_POST остается True, из-за чего при следующих итерациях отправляется именно POST запрос. потому для того чтобы избежать этого, явно указывай при отправке GET запроса, что это GET: Code: //Проверка возможности фарма $farminfo = 'http://ru1.grepolis.com/game/farm_town_info?action=claim_info&town_id='.$townid.'&h='.$token[1].'&json={"id":"'.$id.'","town_id":'.$townid.',"nlreq_id":'.$nlreq[1].'}&_='.$timef; curl_setopt($curl, CURLOPT_URL, $farminfo); curl_setopt($curl, CURLOPT_REFERER, 'http://ru1.grepolis.com/game/index?login=1'); curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest')); [COLOR=Red]curl_setopt($curl, CURLOPT_POST, false);[/COLOR] $html = curl_exec($curl);
ОФ. Сега вас накрыла эта онлайн игрушка. Есть впечатление что рисуете гейм-бота, или какой-то мега чит. Что это, реальный биз?