Эта тема на forum.dklab.ru


zaartix_guest: работа через прокси
Пример:
<?
function proxy_url($proxy_url)
{
global $proxy_name, $proxy_port;
$proxy_cont = '';

$proxy_fp = fsockopen($proxy_name, $proxy_port);
if (!$proxy_fp) {return false;}
fputs($proxy_fp, "GET $proxy_url HTTP/1.0\r\nHost: $proxy_name\r\n\r\n");
while(!feof($proxy_fp)) {$proxy_cont .= fread($proxy_fp,4096);}
fclose($proxy_fp);
$proxy_cont = substr($proxy_cont, strpos($proxy_cont,"\r\n\r\n")+4);
return $proxy_cont;
}
?>

Тут я думаю все понятно, вопрос теперь такой:
Как можно забрать бинарный файл через прокс? к примеру картинку
Насколько известо появляются некоторые служебные символы которые надо
выдирать из содержимого файла, прежде, чем сохранять как картинку. К примеру
формат jpg.
Дмитрий Котеров:
А в чем проблема-то? Точно так же все.
Только Вы забыли вывести заголовок "Connection: close" - без него очень долго можно ждать отсоединения.
zaartix_guest:
проблема в том, что когда я сохраняю картинку - она получается битой. Я не знакю какие символы надо удалять из содержимого картинки.
Константин Жинько [tIT]:
Я не знакю какие символы надо удалять из содержимого картинки.
Заголовки-то автоматически чистятся в ПХП?
Попробуйте гиф файл забрать -- если первые символы в файле GIF89 и файл передается полностью, значит все работает... Если не работает с другими типами, значит возможно картинки изначально битые.
Дмитрий Котеров:
она получается битой
Открывайте файлы не в режиме "r" или "w", а в режиме "rb" иди "wb" соответственно.
zaartix_guest:
дык понимаю, что такой режим нужен, но как его задействовать через прокс?

<?
function proxy_url($proxy_url)
{
global $proxy_name, $proxy_port;
$proxy_cont = '';

$proxy_fp = fsockopen($proxy_name, $proxy_port);
if (!$proxy_fp) {return false;}
fputs($proxy_fp, "GET $proxy_url HTTP/1.0\r\nHost: $proxy_name\r\n\r\n");
while(!feof($proxy_fp)) {$proxy_cont .= fread($proxy_fp,4096);}
fclose($proxy_fp);
$proxy_cont = substr($proxy_cont, strpos($proxy_cont,"\r\n\r\n")+4);
return $proxy_cont;
}
?>

На этом примере можно показать как вклчить такой режим? Тут нету fopen, чтоб задать такой режим чтения.
Как мне переделать эту функцию, чтоб я ей отдавал урл картинки, а она возвращала бы мне содержимое этой картинки (готовое для сохранения).
Дмитрий Котеров:
В этом примере такой режим и не нужен - он автоматом включен.
Вы когда файл на диск записываете, он бьется, неужели не понятно?

И вы Connection: close будете писать, или это Пушкина обязанность?
zaartix_guest:
буду, виноват :)

Эта тема на forum.dklab.ru