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

Форум PHP

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

 

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

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

тема: Загрузка рисунков через сокеты
 
 автор: Alex14   (09.02.2008 в 11:32)   письмо автору
 
 

При соединении с удалённым сервером через сокет
<?php
$fp 
fsockopen("localhost"80);
$query ="GET http://site HTTP/1.0
Content-Type: application/x-www-form-urlencoded
User-Agent: Opera/9.23 (Windows NT 5.1; U; ru)
Referer: 
Accept: image/gif, image/jpeg, */*
Accept-Charset: windows-1251
Cache-Control: no-cache
Connection: keep-alive

"
;
fwrite($fp$query); // отправление запроса
$res stream_get_contents($fp); // запись ответа в строку $res
fclose($fp); // закрытие соединения
$res preg_replace("/^.+?\r\n\r\n/s"""$res); // удаление заголовка ответа
echo $res// отображение в браузер
?>

возвращается HTML-код страницы, без рисунков. Каким образом получить всё содержимое страницы?

   
 
 автор: rusty_angel   (09.02.2008 в 13:48)
 
   для: Alex14   (09.02.2008 в 11:32)
 

Так же, как это делают броузеры: парсить html, находить ссылки на изображения, скрипты, css, embed'ы, и т.д. и отправлять веб-серверу(ам) соответствующие запросы.

   
 
 автор: Alex14   (09.02.2008 в 16:16)   письмо автору
 
   для: rusty_angel   (09.02.2008 в 13:48)
 

Так значит за одно соединение нельзя сразу весь контент забрать? Вместо того, чтобы парсить HTML, лучше наверное изменять соответствующие объекты JavaScript. Т.е. поменяли все адреса картинок и css-файлов (чтобы они грузились через вышеприведённый php-скрипт), и перезагрузили. Но как сделать перезагрузку? В смысле, не всего документа сразу (это опять приведёт в выводу голого html-кода), а отдельных объектов - рисунков, css-файлов и т.п. В JavaScript я не силён, может кто подскажет?

   
 
 автор: Trianon   (09.02.2008 в 16:50)   письмо автору
 
   для: Alex14   (09.02.2008 в 16:16)
 

>Так значит за одно соединение нельзя сразу весь контент забрать?
За один http-запрос - нельзя.
Вы не сможете и за одно соединение.

>(чтобы они грузились через вышеприведённый php-скрипт)

И что Вы намерены получить в качестве результата? архив с контентом?

   
 
 автор: Alex14   (09.02.2008 в 16:59)   письмо автору
 
   для: Trianon   (09.02.2008 в 16:50)
 

Да, правильней было написать "запрос". В интернет через местный прокси-сервер хожу, ставят ли на них ограничение на количество одновременно открытых соединений?

   
 
 автор: Alex14   (09.02.2008 в 17:01)   письмо автору
 
   для: Alex14   (09.02.2008 в 16:59)
 

Цель - получить полноценную страницу в браузере. Но запросы-ответы сервера и клиента осуществляются через php-скрипт. Он нужен для возможности размещения прокси-скриптов на удалённых серверах.

   
 
 автор: Trianon   (09.02.2008 в 18:34)   письмо автору
 
   для: Alex14   (09.02.2008 в 17:01)
 

браузер сам формирует нужный поток с запросами каждого из документов.

   
 
 автор: Alex14   (09.02.2008 в 18:43)   письмо автору
 
   для: Trianon   (09.02.2008 в 18:34)
 

Ну и как же поток из браузера в скрипт направить?

   
 
 автор: rusty_angel   (10.02.2008 в 04:04)
 
   для: Trianon   (09.02.2008 в 16:50)
 

> За один http-запрос - нельзя.
> Вы не сможете и за одно соединение.
Вообще-то есть Connection: Keep-Alive

   
 
 автор: Trianon   (10.02.2008 в 11:43)   письмо автору
 
   для: rusty_angel   (10.02.2008 в 04:04)
 

>> За один http-запрос - нельзя.
>> Вы не сможете и за одно соединение.
>Вообще-то есть Connection: Keep-Alive

Конечно. но:
a) в версии протокола 1.1 , а не 1.0
б) клиент может лишь запросить такое поведение, сервер же может и отклонить.
в) для реализации нужно знать протокол 1.1 (который сложнее 1.0 на два порядка) , а у автора темы даже базовых знаний не хватает.
C тем, что у Вас может получиться, я спорить не буду.

   
 
 автор: Alex14   (10.02.2008 в 20:36)   письмо автору
 
   для: Alex14   (09.02.2008 в 11:32)
 

Существует ли функция, работающая так, чтобы поток от сервера исполнялся браузером. Т.е. чтобы не только html-код отображался, но ещё и заголовки ответа обрабатывались - например, куки устанавливались. В том способе, который я привёл в первом сообщении темы, заголовки просто уничтожаются, иначе они просто выведутся в браузер.

   
 
 автор: Trianon   (11.02.2008 в 00:49)   письмо автору
 
   для: Alex14   (10.02.2008 в 20:36)
 

Вы же даже в коментарии написали "удаление заголовка ответа".
Удаление! А не разбор, интерпретация и исполнение!
Чему же Вы удивляетесь?
Браузер здесь не при чем.
Роль клиента исполняет ваш скрипт.

   
 
 автор: exp   (11.02.2008 в 01:47)   письмо автору
 
   для: Trianon   (11.02.2008 в 00:49)
 

если всё-равно для браузера делаете , создайте второй скрипт, который будет ходить за картинками.
и замените в коде страницы адреса картинок на "./второйСкрипт?img=adres"

   
Rambler's Top100
вверх

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