На счет ip вы правы. Но мне интересен сам принцип и хочется все сделать самому. Если взять любой другой mp3-шник то функция выдаёт кокозябры а не файл
http://cs521200.userapi.com/u119594733/audios/51140a391cce.mp3 -вот не 404 но результата нет
function curl_download($url, $file){ // открываем файл, на сервере, на запись $dest_file = @fopen($file, "w"); // открываем cURL-сессию $resource = curl_init(); // устанавливаем опцию удаленного файла curl_setopt($resource, CURLOPT_URL, $url); // устанавливаем место на сервере, куда будет скопирован удаленной файл curl_setopt($resource, CURLOPT_FILE, $dest_file); // заголовки нам не нужны curl_setopt($resource, CURLOPT_HEADER, 0); // выполняем операцию curl_exec($resource); // закрываем cURL-сессию curl_close($resource); // закрываем файл fclose($dest_file);}curl_download("http://cs521200.userapi.com/u119594733/audios/80c166d0ea10.mp3", "music/1.mp3");?>
нашёл функцию которая прекрасно скачивает html но mp3 не для неё
Короче удалось получить все ссылки со страницы (на mp3 файлы) теперь следующая задача как их оттуда скачать? Нужен какой-то (желательно jquery AJAX) скрипт который бы скачивал бы файлы с сервера.
<?php//header('Content-type: text/html; charset=utf-8');//error_reporting(55);$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' . 'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';$cookie = '';$login = '***';$password = '******';// Функция, которая позволяет нам переходить по редиректам с включенной опцией open_basedirfunction curl_redirect_exec($ch, $redirects = 0, $curlopt_returntransfer = true, $curlopt_maxredirs = 10, $curlopt_header = false) { curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $exceeded_max_redirects = $curlopt_maxredirs > $redirects; $exist_more_redirects = false; if ($http_code == 301 || $http_code == 302) { if ($exceeded_max_redirects) { list($header) = explode("\r\n\r\n", $data, 2); $matches = array(); preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); $url = trim(array_pop($matches)); $url_parsed = parse_url($url); if (isset($url_parsed)) { curl_setopt($ch, CURLOPT_URL, $url); $redirects++; return curl_redirect_exec($ch, $redirects, $curlopt_returntransfer, $curlopt_maxredirs, $curlopt_header); } } else { $exist_more_redirects = true; } } if ($data !== false) { if (!$curlopt_header) list(,$data) = explode("\r\n\r\n", $data, 2); if ($exist_more_redirects) return false; if ($curlopt_returntransfer) { return $data; } else { echo $data; if (curl_errno($ch) === 0) return true; else return false; } } else { return false; }}$ch = curl_init();// чтобы сайт думал, что мы - браузер:curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);// ответ сервера будем записывать в переменнуюcurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_TIMEOUT, 10);//curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch,CURLOPT_REFERER,'http://vk.com/login?fast=1&hash=&s=0&to='); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');curl_setopt($ch, CURLOPT_POST, false);curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_URL, 'https://login.vk.com/?act=login&from_host=m.vk.com&from_protocol=http&ip_h=&pda=1');$answer = curl_redirect_exec($ch);//формируем запрос$post = array( 'email' => $login, 'pass' => $password );curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));// собственно этот ответ сервера уже доказывает что мы авторизировались$answer = curl_redirect_exec($ch);curl_setopt($ch, CURLOPT_POST, false);// укажем страницу, с которой мы получим данные для проверки. она может быть как с мобильного так и с основного сайтаcurl_setopt($ch, CURLOPT_URL, 'http://vk.com/audio');$answer = curl_redirect_exec($ch);//echo $answer; //переменна с кодом$source = $answer;preg_match('/\<input type="hidden" id="????????????" value="(.*)"\>/', $source, $out);foreach($out as $a){ echo $a;}curl_close($ch);?>
Вопрос что поставить в регулярке вместо id="????????????"
Если код ответа от сервера примерно такой
<input type="hidden" id="audio_info90554618_176051316" ....
vdk, да :) В simple_html_dom нипонимаю почти ничего. Подскажите как правильно это записать.
ivan-lev, что мне нужно сделать что-бы информация постоянно обновлялась, не по клику а просто так по задержке в 1 секунду
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script> <script> function changetext () { $('#data').fadeOut('fast', function() { $.get("http://bigseotools/cit/page.php", function( data ){ $('#data').html(data).fadeIn('fast'); }); }); } $(document).ready(function() { setInterval(1000, changetext ()); }); </script> <div id="data" style="width: 150px; height: 150px;"> </div>
так не работает, как надо??
Ни как не могу найти это самое НУЖНОЕ место
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script> <script> function changetext () { $('#data').fadeOut('fast', function() { $.get("http://bigseotools/cit/page.php", function( data ){ $('#data').html(data).fadeIn('fast'); }); }); } $(document).ready(function() { changetext (); }); </script> <div id="data" style="width: 150px; height: 150px;" onClick=" changetext ()"> </div>
Вот так, теперь все происходит по клику, а хотелось бы что бы просто так менялось, не подскажите как это сделать?