14:32

Ээээ..

alhames.ru
У мну еще вопрос (че-то только я и спрашиваю)..

Требуется загрузить html-содержимое странички с удаленного сервера и присвоить как строку.
Т.е. например, существует php-файл, доступный по некому адресу (например, tra-ta-ta.com), необходимо присвоить переменной $ruweb весь html-код странички, генерируемой по запросу "diary.ru/~ruweb/" -как это сделать?

Комментарии
14.12.2007 в 15:30

Всё будет Кока-Кола.
Тут надо работать с сокетами.... где-то я ещ1 читал про стандартное открытие страницы как файл, но сесссиям доверяю больше. Сейчас под рукой нету функции. Как сяду за большую машину кину...
14.12.2007 в 15:55

Крайне злопамятное хамло ;)
$ruweb = file_get_contents("diary.ru/~ruweb/");

Или я не понял суть?))
14.12.2007 в 16:06

~Co0L~ мммм, а создать соккет-соединение, оправить пакет запроса?
14.12.2007 в 16:07

Крайне злопамятное хамло ;)
Gelmir А зачем?))
14.12.2007 в 16:10

так а как сервак сообразит, что diary.ru/~ruweb/ это в инете?
14.12.2007 в 16:11

Крайне злопамятное хамло ;)
Gelmir по приписке "http://" :-D
Сколько парсеров уже написал и никогда сокет-соединения не делал)
14.12.2007 в 16:24

а я, так же как Волчонок Джей больше доверяю сокетам: хотя открытие как файл быстрее оно несёт меньше функциональности и гибкости

код:
$ruweb = "";
// инициализируем переменную, чтобы было хорошо

$packet = "GET /~ruweb/ HTTP/1.0\r\n
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n
Accept-Language: ru\r\n
User-Agent: User-Agent: Mozila 4.0\r\n
Host: pay.diary.ru\r\n
Proxy-Connection: Keep-Alive\r\n";
// создадим отправляемый пакет чтобы дайри знали что нам нужно

$sock = fsockopen("pay.diary.ru", 80, $errno, $errstr, 10);
// откроем сокет на дайри.ру по 80(хттп) порту
if(!$sock)
{
$send = "Невозможно подключиться к серверу!";
// известим себя об ожибках, если ткие случились
} else {
fwrite($sock, $packet);
while (!feof($sock)){
$ruweb .= fgets($sock,1024);
// вкушаем сообщество ~ruweb небольшими порциями по 1 кб
}
fclose($sock);
// закроем соккет, чтобы не висел зазря
}

// теперь в переменной $ruweb лежит главная страничка сообщества ~ruweb
// делайте с ней что хотите ЗЫ но в данном случае, имхо, лучше подошёл
// бы iframe

14.12.2007 в 17:16

Всё будет Кока-Кола.
~Co0L~ сокеты надежнее и функциональнее. Можно например запросы посылать.
Вот например функция для получения содержимого страницы с отправкой ГЕТ запроса. Возвращает не только саму страницу, но и хеды.


function socket_get($host,$sсriрt,$query='')
{
global $settings;
$query_string='';
foreach ($query as $key => $value)
{
$query_string.="&$key=".rawurlencode($value);
}
$query_string=substr($query_string,1,strlen($query_string)-1);
$fs=@fsockopen($host,80);

if(!$fs) return false; else {
fwrite($fs, "GET /$sсriрt?$query_string HTTP/1.0
");
fwrite($fs, "Referer: ".$settings['url']."
");
fwrite($fs, "Host: $host
");
fwrite($fs, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)


");
$data='';
while(!feof($fs))
{
$data.=fread($fs,256);
}

fclose($fs);
}
return $data;
}

Вызывается вот так:
$query['name']='Wolfy';
$query['last_name']='J D';
echo socket_get('www.somewhere.ru/','userlist.php',$query);
15.12.2007 в 03:54

alhames.ru
Оки, сейчас буду разбираться..
С сокетами мне еще работать не приходилось, так что придется в мануале рыться..

P.S. Когда код публикуете, если не трудно, обрабатывайте его сначала здесь - Подсветка PHP кода (ссылку можно найти в навигационном меню в самом низу)

Ах да, и еще хотел спросить.. Как дайры обрабатывают запрос типа "diary.ru/~ruweb"?

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail