Forum Webscript.Ru

Программирование => PHP => Тема начата: от 17 Июля 2002, 12:39:09

Название: Закачка файла через сокет
Отправлено: от 17 Июля 2002, 12:39:09
Такая вот проблемка возникла у меня:
По одному урлу нужно файл скачать через другой прокси (т.е. не через proxy.aaaa.aaa, a через proxy1.aaaa.aaa)
Организовано все так:
   $fp=fsockopen($ip, $port) or die(\'Can"t establish connection\');
   if ($fp){
    $query = "GET ".$file." HTTP/1.0\\r\\n\\r\\n";
    fputs($fp, $query);
    $i=0;
    while (!feof($fp)){
     $page[$i]=fgets($fp, 1000);
     $i++;
    }
    fclose($fp);
   }
Все замечательно скачало, но файл был "покоцанный",т.е. часть нужной информации отсутсвовала
Тогда перед всем этим добавил
         header ("HTTP_USER_AGENT: \'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)\'");
         header (\'REMOTE_ADDR: 000.00.000.000); //свой адр.
Содержимое файла было таким же
Но проверенно, что файл  через proxy даже без отправки заголовка возвращается целый
Плз. не проходите мимо
Название: Закачка файла через сокет
Отправлено: Redjin от 17 Июля 2002, 14:02:40
Это мое сообщение
Название: Закачка файла через сокет
Отправлено: GotZfild от 17 Июля 2002, 14:06:21
Не забывай, что кроме самого файла, ты еще читаешь и заголовки, которые выдает сервер.
Название: Закачка файла через сокет
Отправлено: от 17 Июля 2002, 14:51:23
(Сообщение Redjin)Да, конечно, но как это влияет?
Забыл пароль и теперь он не изменяется :(
Название: Закачка файла через сокет
Отправлено: Redjin от 17 Июля 2002, 16:16:17
Заголовки получаемого файла никак не должны менять содержимое файла, или что ты имел ввиду?
Название: Закачка файла через сокет
Отправлено: Макс от 17 Июля 2002, 17:46:32
Файл бинарный? Тогда может fread() вместо fgets()
Название: Закачка файла через сокет
Отправлено: Redjin от 17 Июля 2002, 18:30:52
Нет он htm
Название: Закачка файла через сокет
Отправлено: Макс от 17 Июля 2002, 19:37:11
во-первых заголовки типа header() никак не влияют (и не должны влиять) на покоцанность файла. Их нужно через fputs() посылать.
Во-вторых все же попробуй
while (!feof($fp)) {
    $str.= fread ($fp,128);
}
Название: Закачка файла через сокет
Отправлено: Redjin от 18 Июля 2002, 11:27:24
Цитировать
во-первых заголовки типа header() никак не влияют (и не должны влиять) на покоцанность файла. Их нужно через fputs() посылать.


Да, действительно с ними я облажался....:((((
Название: Закачка файла через сокет
Отправлено: Redjin от 18 Июля 2002, 11:58:07
fread()  действительно помог
Дело оказалось в том, что передаваемый файл (как я понимаю) был сгенерирован, т.е. не там был конец строки
До этого я читал file() и проблем не было
Большое тебе спасибо :)
Все было элементарно