Помогите, пожалуйста, переделать этот скрипт, который показывает размер файла на удаленном сервере. Файл под который надо переделать: http://s1.mptri.pp.ua/2012-31-07/320/kristina_si-nachinayu_ ... mix-mp.mp3 Я просто не понимаю принцип работы, если дадите какие-то полезные ссылки буду рад. Код (Text): <? function getRemoteFileSize($url){ $parse = parse_url($url); $host = $parse['host']; $fp = @fsockopen ($host, 80, $errno, $errstr, 20); if(!$fp){ $ret = 0; }else{ $host = $parse['host']; fputs($fp, "HEAD ".$url." HTTP/1.1\r\n"); fputs($fp, "HOST: ".$host."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); $headers = ""; while (!feof($fp)){ $headers .= fgets ($fp, 128); } fclose ($fp); $headers = strtolower($headers); $array = preg_split("|[\s,]+|",$headers); $key = array_search('content-length:',$array); $ret = $array[$key+1]; } if($array[1]==200) return $ret; else return -1*$array[1]; } $url = 'http://www.softtime.ru/files/whois.zip'; $size = getRemoteFileSize($url); if($size==0) echo "Не могу соединиться"; elseif($size<0) echo "Ошибка. Код ответа HTTP: ".(-1*$size); else echo "Размер удалённого файла (bytes): ".$size; ?>
Нужно добавить заголовок User-Agent: Код (PHP): <?php function getRemoteFileSize($url) { $parse = parse_url($url); $host = $parse['host']; $fp = @fsockopen($host, 80, $errno, $errstr, 20); if(!$fp) { $ret = 0; } else { $host = $parse['host']; fputs($fp, "HEAD " . $url . " HTTP/1.1\r\n"); fputs($fp, "HOST: " . $host . "\r\n"); fputs($fp, "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1\r\n"); fputs($fp, "Connection: close\r\n\r\n"); $headers = ""; while(!feof($fp)) { $headers .= fgets($fp, 128); } fclose($fp); $headers = strtolower($headers); $array = preg_split("|[\s,]+|",$headers); $key = array_search('content-length:', $array); $ret = $array[$key + 1]; } if($array[1] == 200) return $ret; else return -1 * $array[1]; } $url = 'http://s1.mptri.pp.ua/2012-31-07/320/kristina_si-nachinayu_zabyvat_unorthodoxx_remix-mp.mp3'; $size = getRemoteFileSize($url); if($size == 0) echo "Не могу соединиться"; elseif($size < 0) echo "Ошибка. Код ответа HTTP: " . (-1 * $size); else echo "Размер удалённого файла (bytes): " . $size; ?> Просто сайт не пускает без юзер-агента запросы, говорит forbidden. Добавлено спустя 1 минуту: Или это была реклама сайта s1.mptri.pp.ua ?
Спасибо большое! У вас есть сайты? Я мог бы там покликать по рекламам и друзей попросить) А это идея...