|
|
|
| Беру через сокеты содержимое файла.
Вот скрипт:
$path= "http://www.roszdravnadzor.ru/medcontrol/estimate/ind?year=2007";
$arr = parse_url($path);
$host = $arr[host];
$page = $arr[path];
$query = $arr[query];
if($query!=''){$page.='?'.$query;}
if($page==''){$page='/';}
$fp = @fsockopen($host, 80, &$errno, &$errstr, 30);
if(!$fp){ return implode('',@file($path)); }
$request = "GET $page HTTP/1.0\r\n";
$request .= "Host: $host\r\n";
$request .= "Accept: text/html, application/xml;q=0.9, */*;q=0.1\r\n";
$request .= "Accept-Charset: windows-1251, utf-8;q=0.6, *;q=0.1\r\n";
$request .= "Accept-Encoding: deflate, gzip, identity, *;q=0\r\n";
$request .= "Accept-Language: ru\r\n";
$request .= "Connection: close\r\n";
$request .= "Keep-Alive: 300\r\n";
$request .= "Expires: Thu, 01 Jan 1970 00:00:01 GMT\r\n";
$request .= "Cache-Control: no-store, no-cache, must-revalidate\r\n";
$request .= "Pragma: no-cache\r\n";
$request .= "Cookie: income=1\r\n";
$request .= "Referer: http://$host/\r\n";
$request .= "User-Agent: Mozilla/5.0 (compatible; MSIE 6.0; Windows 98)\r\n";
$request .= "\r\n";
fwrite ($fp,$request);
while ($line = fgets($fp, 1024)){
if (preg_match("~^\r{0,1}\n$~i",$line)){$fest='yes';}
elseif($fest=='yes'){$out .= $line;}
}
echo $out;
В ответ файл выводит что-то вроде ќl§ЫлБC°Ёе+ЂтM;ВЛ:ќo .ѓЧ~;zнЭОюAыpxGышш µлд "оtаЎ=ё юrЉXчv ( только длиннее). А так хотелось бы по русски...
$tt=iconv('utf-8', 'windows-1251', $text); echo $tt; - не помогает.
$text = convert_cyr_string($out, 'w','k'); -тоже не помогает.
Кто-нибудь знает как с этим бороться? | |
|
|
|
|
|
|
|
для: webpics
(26.05.2007 в 20:13)
| | Уберите строку
$request .= "Accept-Encoding: deflate, gzip, identity, *;q=0\r\n";
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(26.05.2007 в 20:22)
| | что-то не помогает.
Везде это работает , а на сайте http://www.roszdravnadzor.ru/medcontrol/estimate/ind?year=2007 какой-то барабашка. | |
|
|
|
|
|
|
|
для: webpics
(26.05.2007 в 20:13)
| | А заголовок как выглядит? | |
|
|
|
|
|
|
|
для: Trianon
(26.05.2007 в 22:11)
| | Date: Sat, 26 May 2007 18:51:12 GMT Server: Apache/1.3.33 (Debian GNU/Linux) mod_ssl/2.8.22 OpenSSL/0.9.7e mod_perl/1.29 PHP/4.3.10-18 Last-Modified: Sat, 26 May 2007 18:51:12 GMT Cache-Control: max-age=0 X-Powered-By: Zanas/6.09.22 Content-Length: 100612 Content-Type: text/html; charset=windows-1251 X-Cache: MISS from www.roszdravnadzor.ru Connection: close | |
|
|
|
|
|
|
|
для: webpics
(26.05.2007 в 22:51)
| | Это наверное после того, как Вы убрали строку.. Если убрали, то кодировку менять уже не надо, текст приходит в windows-1251.
А если строку не убрали, текст придет запакованный gzip. Который нужно распаковать (кодировка тут тоже не причем) | |
|
|
|
|
|
|
|
для: kasmanaft
(27.05.2007 в 08:06)
| | Заголовок всяко передается несжатым. | |
|
|
|
|
|
|
|
|
для: Trianon
(27.05.2007 в 14:22)
| | или не барабашка? | |
|
|
|
|
|
|
|
для: kasmanaft
(27.05.2007 в 08:06)
| | Убрал строку, так текст вообще не пришёл.
Пишет "Невозможно отобразить страницу".
Вот ссылка со строкой http://webpics.phoenixrising-web.com/farm/y2.php
и без строки http://webpics.phoenixrising-web.com/farm/y.php
Можете посмотреть лично. | |
|
|
|
|
|
|
|
для: webpics
(27.05.2007 в 19:22)
| | Ну не знаю.. копирую Ваш код (между словами "Вот скрипт: ~~~ В ответ файл....."), убираю ту строчку, о которой писал - все нормально открывается - работает.
Вместе с этой строчкой текст приходит сжатый, о чем говорит "Content-Encoding: gzip".
Работает на других сайтах потому что там нет поддержки gzip, сжать ничего они не могут. А так бы и там не работало (могу привести неск. ссылок, где работать тоже не будет).
> /estimate/ind?year=2007
> /estimate/ind/fignya.asp?year=2007
> /estimate/ind/gadost.php?year=2007
Это, наверное, заслуга mod_rewrite. Барабашки тут тоже нет :) | |
|
|
|
|
|
|
|
для: kasmanaft
(27.05.2007 в 21:15)
| | хорошо, спасибо!
это кажется мой сервер выпендривается!
когда я убрал из этого кода и злополучную строку и цикл,
поместив вместо цикла
$out = fgets($fp, 1024);
echo $out;
то мой сервер всё сразу нашёл и даже выдал первую строку ответа от медиков HTTP/1.1 200 OK
но если он не любит длинные и несжатые данные, то может есть способ разархивировать эти сжатые данные?
Заранее благодарю. | |
|
|
|
|
|
|
|
для: webpics
(27.05.2007 в 21:59)
| | > может есть способ разархивировать эти сжатые данные?
Должон быть по определению :)
Этим должна заниматься функция gzinflate, но ей что-то не нравится. Вот, но немного не то получилось, что должно было:
$out = gzinflate(substr($out, 10, -8));
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(27.05.2007 в 22:42)
| | Благодарю тебя "KASMANAFT" =)) Ты лучший!!!
Наконец- то и у меня всё заработало (с твоей помощью!)
Спасибо! | |
|
|
|
|
|
|
|
для: webpics
(28.05.2007 в 19:11)
| | А я перед тем, как пост отправить, проверил как оно работать будет - так там немного смазаный результат получился... под конец.
Хотел уже на землю опускать, мол "рано радовацца", перепроверил - уже все работает. Барабашка блин, а я не верил :)) | |
|
|
|