Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ответ 005 на задачу N 13
 
 автор: SoftTime   (21.03.2006 в 18:26)   письмо автору
 
 

Ответ 005 на задачу N 13.
С условиями задачи можно ознакомится по ссылке.

<?php
function RemoteFileSize($url='http://ya.ru/',$size_ext='Kb',$scale=2,$host=80) {
        
$in=0;
        
// обрабатываем путь, на всякий случай.
        
$url trim(htmlspecialchars($url));
        
// получаем www-адрес (имя хоста) из url
        
preg_match("/^(http:\/\/)?([^\/]+)/i"$url$matches);
        
//
        
$host $matches[2];
        
//
        
$file strrchr($url,'/');
        
//
        
$port=80;
        
//
        
$fp fsockopen($host$port$errno$errstr30);
        
//
    
if (!$fp) {
        echo 
"$errstr ($errno)<br />\n";
    } else {
        
//
        
$out "GET  $file HTTP/1.1\r\n";
        
$out .= "Host: $host\r\n";
        
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\r\n";
        
$out .= "Connection: Close\r\n\r\n";
        
//
        
fwrite($fp$out);
        
$i=0;
        
//
        
while ($i<7) {
            
$array_headers[]= fgets($fp128);
            
$i++;
        }
        
fclose($fp);
        
//
        
if(!stristr($array_headers[6],'Content-Length')) exit("HTML File!");
        
//
        
$filesize explode(" ",$array_headers[6]);
        
//
        
        
switch($size_ext) {
            case 
'Kb':
            
$in 1024;
            break;
            case 
'Mb':
            
$in 1048576;
            break;
            case 
'Gb':
            
$in 4096;
            break;
        }
        
$size =  bcdiv(trim($filesize[1]),$in,$scale);
        
// возвращаем размер в мб
        
return($size.' '.$size_ext);
    }
}
echo 
RemoteFileSize("http://www.gg/foto.zip","Kb",2);
?> 


http://www.softtime.ru/info/task.php?id_article=83

   
 
 автор: cheops   (27.03.2006 в 01:12)   письмо автору
 
   для: SoftTime   (21.03.2006 в 18:26)
 

Хм... при запросе
echo RemoteFileSize("http://www.softtime.ru/files/whois.zip","Kb",2); 

Получил ответ "HTML File!" и больше ничего. Кроме того, зря расчитываете, что HTTP-заголовков будет меньше семи (например в случае http://www.softtime.ru/files/whois.zip их девять)
<?php
while ($i<7) {
?>
и Content-Length может в эту семёрку не попасть. Лучше ориентироваться на лишний перевод строки между HTTP-заголовками и телом HTTP-ответа.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования