"; echo mysql_error(); exit; } mysql_select_db(DBName); function curl_redir_exec($ch) { static $curl_loops = 0; static $curl_max_loops = 20; if ($curl_loops++ >= $curl_max_loops) { $curl_loops = 0; return FALSE; } curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); list($header, $data) = explode("\n\n", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($http_code == 301 || $http_code == 302) { $matches = array(); preg_match('/Location:(.*?)\n/', $header, $matches); $url = @parse_url(trim(array_pop($matches))); if (!$url) { //couldn't process the url to redirect to $curl_loops = 0; return $data; } $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)); if (!$url['scheme']) $url['scheme'] = $last_url['scheme']; if (!$url['host']) $url['host'] = $last_url['host']; if (!$url['path']) $url['path'] = $last_url['path']; $new_url = $url['scheme'] . '://' . $url['host'] . $url['path'] . ($url['query']?'?'.$url['query']:''); curl_setopt($ch, CURLOPT_URL, $new_url); //debug('Redirecting to', $new_url); return curl_redir_exec($ch); } else { $curl_loops=0; return $data; } } // Создаем подключение if( $curl = curl_init() ){ // Нужно загрузить главную страницу curl_setopt($curl,CURLOPT_URL,'http://profit-partner.ru/'); // Нужно помнить кукисы! curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE); curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile"); // Скачанный код возвращаем в переменную а не в поток curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); // "Следовать туда, куда зовут". Если сервис выдает 302 код, мы следуем по этой ссылке //curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true); // Таймаут, если сервис не отвечает больше 30 секунд, выходим curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30); // Активируем GZIP сжатие трафика curl_setopt($curl,CURLOPT_ENCODING,'gzip,deflate'); // Соврем Профиту, напишем в юзер-агент неправду curl_setopt($curl,CURLOPT_USERAGENT,'Профит рулит'); // Если все ок, в $html вернется html код главной страницы // if( $html = curl_exec($curl) ){ if( $html = curl_redir_exec($curl) ){ // Указываем куда отправлять запрос curl_setopt($curl,CURLOPT_URL,'http://profit-partner.ru/user/auth/'); // Указываем подключению, что слать нужно не GET (по умолчанию), а POST запросы curl_setopt($curl,CURLOPT_POST,TRUE); // Указываем, что именно отправлять в POST данных, на этой стадии происходит ввод логина/пароля curl_setopt($curl,CURLOPT_POSTFIELDS,"login=$login&pwd=$pass&save=0&save=1&enter=Войти"); // Если все ок, в $html вернется html код главной страницы if( $html = curl_redir_exec($curl) ){ //Вытаскиваем нужные данные из страницы preg_match('|Сегодня[\t\n\r]*.*">([^<]*)|i',$html,$res1); preg_match('|Вчера[\t\n\r]*.*">([^<]*)|i',$html,$res2); preg_match('|За 30 дней[\t\n\r]*.*">([^<]*)|i',$html,$res3); preg_match('|Прогноз дохода[\t\n\r]*.*([^<]*)|i',$html,$res4); //Простая функция очистки от мусора function clean_lf($str){ global $round; $str=trim($str); if($round=='yes') $str=substr($str,0,strpos($str,',')); // округление до рублей (отбрасываем копейки) return $str;} //А вот и нужные нам данные статистики за сегодня :) $today=clean_lf($res1[1]); $yesterday=clean_lf($res2[1]); $month=clean_lf($res3[1]); $prognoz=clean_lf($res4[1]); echo "Сегодня: $today
Вчера: $yesterday
30 дней: $month
Прогноз: $prognoz
"; $datetime=time(); mysql_query("insert into `profit` ( `id`, `today`, `yesterday`, `month`, `prognoz`, `datetime` ) values ( Null, '$today', '$yesterday', '$month', '$prognoz', $datetime )"); } } // Закрываем подключение, очищаем память curl_close($curl); } ?>