Показать сообщение отдельно

  #66  
Старый 11.04.2007, 02:11
mR_LiNK[deface_0nl
Участник форума
Регистрация: 12.12.2006
Сообщений: 158
С нами: 10217736

Репутация: 114
По умолчанию

Классический пример получения док-а по httP


Скрипт, который по httP протоколу получает документ с сервера::

PHP код:
<?
$fp 
fsockopen("www.host.ru"80, &$errno, &errstr30);

//посылаем GET-форму в виде "URL+хост"
fputs($fp"GET /files/doc.zip HTTP/1.0\nHOST: www.host.ru \n\n");

//ситаем все до начала следующего док-а
while(fgets($fp2048) !="\n\n" && !feof($fp));

//копируем то, что прочитали в переменную $buff
uset($buff);
while(!
feof($fp)) $buff.=fread($fp2048);

//закрывается сокет
fclose($fp);

echo 
'Файл загружен, размер файла: ' .strlen($buff). 'bytes.';
flush();

//далее записываем загруженный файл в другой, 
//к примеру, dload.out. Если мы скачали zip файл, то,
// переименовав dload.out в dload.zip, можно дальше 
//работать с этим файлом как с обычным zip архивом.
$f=fopen('dload.out''wb+');
fwrite($f$buffstrlen($buff));
fclose($f);
?>
ЗЫ::Ответ сервера состоит из заголовка и тела документа. Интересует же только тело документа.
Поэтому, все что идет до документа мы пропускаем, зная, что заголовок от тела документа отделяется строкой "\r\n". Заголовок читается функцией 'fgets', а бинарные данные 'fread'


ЗЫЫ:: кстати не так давно, не помню кто, спрашивали о генераторе паролей..простейший вариант:

PHP код:
<?
$pass 
md5(uniqid(rand), true);
//возвращается 128-битный хеш
...
?>

Последний раз редактировалось mR_LiNK[deface_0nl; 11.04.2007 в 02:24..
 
Ответить с цитированием