Нужна помощь по fsockopen

DrCodd

Guest
Нужна помощь по fsockopen

Приветствую!

Срочно нужна помощь в написании скрипта.
Суть скрипта следующая: необходимо чтобы скрипт подключался к удаленному серверу, причем через прокси-сервер (это важно), и загружал оттуда нужный файл(выводил в браузер и сохранял на сервере). В приницпе все. Ничего лишнего не надо, ни формы для указания парметров доступа, ни чего-либо другого. Нужны только комментарии в скрипте.
Т.е. просто
PHP:
<?
$url="site.com"; // адрес удаленного сервера
$proxy="1.2.3.4"; // прокси-сервер
$port="8080";	// порт прокси
$path="/img/img.gif"; // путь к нужному файлу

fsockopen(...)  // подключаемся и т.д.
?>
И чтобы без использования curl.

Помогите, кто чем может!
Если что-то не понятно, спрашивайте.
ICQ для связи 174017400, email drcodd[delete]@mail.ru
 

.des.

Поставил пиво кому надо ;-)
Вы ошиблись форумом.
Объявление подобного рода следует помещать в форуме "Работа", и важным фактором, способствующем тому что на него обратят внимание будет указание суммы.
 

DrCodd

Guest
Ну а так, "за спасибо" никто не поможет? Тут делов то на 5 минут, для знающего человека.
 

IntenT

SkyDiver
разница между знающим человеком и незнающим состоит в том, что знающий потратил время=деньги на то, чтобы узнать.
 

Lav

Guest
Тогда [m]sockets[/m]. И RFC 2616.

Не знаю насчёт curl - ни разу с ним не работал, ибо всегда предпочитал сокеты. :)
 

Dmitry22

Guest
либо стилусом обойтись
Sherif Gayed
30-Jan-2003 06:00
Here is how to connect to the web from behind a proxy server:
/*************start code**************/
/*your proxy server address*/
$proxy = "192.168.10.1";
/*your proxy server port*/
$port = 8080;
/*the url you want to connect to*/
$url = "http://www.php.net/";
$fp = fsockopen($proxy, $port);
fputs($fp, "GET $url HTTP/1.0\r\nHost: $proxy\r\n\r\n");
while(!feof($fp)){
$line = fgets($fp, 4000);
print($line);
}
fclose($fp);
/*************end code**************/
 

DrCodd

Guest
Автор оригинала: Dmitry22
Ты откуда эти данные взял? Вернее какие используешь?
Эти так для примера указал, а использую разные, реально рабочие, прокси сервера. Такчто вроде не в этом дело.
 

DrCodd

Guest
Я читал, и не раз, просто на практике все время были какие-то ошибки. Но сейчас вроде все получилось, осталось только заголовки от самого файла отделить.
Может подскажете как это сделать? Я понимаю что после заголовков идет пустая строка, а потом начинается сам файл. Но как проверить наличие этой строки. Пробовал так:
PHP:
$start=0;
while (!feof($fp)) {
      $line= fgets ($fp,5000);
                 if($line==" "):
		 $start=1;
	 endif;
if($start==1):
		 echo $line;
endif;
}
и пробовал вот так:

PHP:
$start=0;
while (!feof($fp)) {
      $line= fgets ($fp,5000);
                 if($line=="\r\n\r\n"):
		 $start=1;
	 endif;
if($start==1):
		 echo $line;
endif;
}
Но ни то, ни другое не помогает. Вообще ничего не выводит.

Подскажите, какое условие использовать? С чем сравнивать?
 

Frol

Новичок
PHP:
$headers = array();
while ($header = trim(fgets($fp, 5000))) {
  $headers[] = $header;
}
// дальше читаем сам файл
 

DrCodd

Guest
но мне же нужно удалить заголовки, а trim вроде как пробелы удаляет!?
 

Frol

Новичок
DrCodd
логику понимать?

этим мы пропускаем все заголовки и записываем их в $headers
если не нужно -- не сохраняй их
 

DrCodd

Guest
Понятно, но снова у меня появилась проблема: заголовки отделил, сам файл записываю в временный файл созданный tmpfile(). И после этого пытаюсь его прочитать (fpassthru), но вместо ожидаемой картинки jpg - формата, получаю текст типа:

яШяаJFIFHHяЫC

и т.д.

Как же из этого "собрать" требуемую картинку?

p.s. пытался добавить заголовок:
PHP:
Header("Content-type: image/jpeg");
не помогает.
 

SiMM

Новичок
Автор оригинала: DrCodd
вместо ожидаемой картинки jpg - формата, получаю текст типа:
яШяаJFIFHHяЫC
Сервер явно не выдаёт нужного заголовка.
пытался добавить заголовок:
PHP:
Header("Content-type: image/jpeg");
не помогает.
Так не бывает - значит, пытался неправильно. Попробуй вначале посмотреть, что же тебе приходит от сервера на самом деле - очень даже вероятно, что никакого Content-type: image/jpeg ты в заголовках не увидишь.
 
Сверху