[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP Сокет gzip
iillyyaa
что не верно в коде ? код простой, но вот если сайт использует сжатие, возникают проблемы... никак не могу распаковать эти данные.. уверен проблема в том, как заполняю переменную, видимо какую каретку где то упускаю...


$host = 'url.ru';
$my_User_Agent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322)";
$cookie = 'Cookie: xx=7;';
$nn="\r\n";


function zapros() {
$nn="\r\n";
global $url;
global $cookie;
global $my_User_Agent;
global $host;
$all_data = "";
flush();
$zapros=
"GET " . $url . " HTTP/1.1" .$nn.
"Accept: */*" .$nn.
"Accept-Language: ru-RU" .$nn.
"Referer: " . '' .$nn.
"Accept-Encoding: gzip, deflate" .$nn.
"User-Agent: " . $my_User_Agent .$nn.
"Host: " . $host .$nn.
"" . $cookie .$nn.
"Connection: Keep-Alive" .$nn.$nn;
echo "------------------ Запрос ------------------\n\n" . $zapros .
"\n\n------------------ ответ ------------------\n\n";
flush();
$fp = fsockopen($host, 80, &$errno, &$errstr, 1);
if (!$fp) { sleep(1); $return_err='err'; return; }
stream_set_timeout($fp, 1);
fputs($fp,$zapros);
for ($i=0;;$i++):
$data = fgets($fp,2048);
if ($data === false) break;
if ($data != "\r\n") {
if (empty($qqqqq)) {
echo $data;
} else {
## if (!empty($all_data)) $all_data .= "\r\n";
$all_data .= $data;
// echo $nn . htmlspecialchars($data);
// echo $data . $nn;

}
continue;
} else {
# break;
if (empty($qqqqq)) {
echo "\n\n------------------ Содержимое страницы ------------------\n\n";
$qqqqq = 1;
} else {
echo "\r\n";
}
}

endfor;
fclose($fp);
return $all_data;
}


$all_data = zapros();
$job_test_err = @gzinflate($all_data);
if ($job_test_err === false) echo "errr<br><br>\r\n\r\n";




Спустя 2 минуты, 40 секунд (26.04.2011 - 18:00) Guest написал(а):
вот такую переменную ещё вначало...

$url = '/index.php';

Спустя 15 часов, 42 минуты, 43 секунды (27.04.2011 - 09:42) Ulan написал(а):
чтоб правильно распаковать, нужно обрезать какую-то служебную информацию, подробнее см комментарии к ф-ции gzinflate на php.net
$result = gzinflate(substr($input_string, 10, -8));

Спустя 1 час, 21 минута, 45 секунд (27.04.2011 - 11:04) iillyyaa написал(а):
спасибо, помогло... где то читал, обрезать первые 10 символов, но не помогало... решил может что то другое smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.